when I compile the following files, I've got the error:
ECArgs.h:36:3: error: ‘string’ does not name a type
ECArgs.h:36: ECString value(char c);
Could somebody give me any hints for the error?
ECArgs.h
#include <list>
#include "ECString.h"
class ECArgs
{
public:
ECArgs(int argc, char *argv[]);
int nargs() { return nargs_; }
bool isset(char c);
ECString value(char c);
ECString arg(int n) { return argList[n]; }
private:
int nargs_;
int nopts_;
ECString argList[32];
list<ECString> optList;
};
ECString.h
#define ECS gnu
#if ECS == gnu
#include <cstring>
#define ECString string
using namespace std;
#else
#include <bstring.h>
#define ECString string
#endif
typedef
andusing
are better solutions for type aliases than#define
. – Meshedstd::string
, you need to#include <string>
, not#include <cstring>
. – Gravitonstd::string
is in<string>
and you never include it. Therefore, the compiler is perfectly reasonable in complaining. – Meshed#if ECS == gnu
does what you think it does? It evaluatesECS
andgnu
as integer constant expressions. How isgnu
defined? – Catty