title: C++ errors: ‘string’ does not name a type
body: <p>when I compile the following files, I've got the error:</p>
  
  <pre><code>ECArgs.h:36:3: error: ‘string’ does not name a type
  </code></pre>
  
  <p>ECArgs.h:36: ECString value(char c);</p>
  
  <p>Could somebody give me any hints for the error?</p>
  
  <p>ECArgs.h</p>
  
  <pre><code>#include &lt;list&gt;
  #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&lt;ECString&gt; optList;
  };
  </code></pre>
  
  <p>ECString.h</p>
  
  <pre><code>#define ECS gnu
  
  #if ECS == gnu
  #include &lt;cstring&gt;
  #define ECString string
  using namespace std;
  #else
  #include &lt;bstring.h&gt;
  #define ECString string
  #endif
  </code></pre>