Search code examples
c++mongoosenetwork-programmingincludeunqualified-name

Mongoose - error when including standard C++ library files


I'm using mongoose to build an HTTP server in C++, and I'm getting an error message when I try to include other files in my program:

/Library/Developer/CommandLineTools/usr/include/c++/v1/cstdint:183:8: error: 
  expected unqualified-id
using::intptr_t;
   ^
/Users/cs/Downloads/mongoose-master/mongoose.c:2415:18: note: 
expanded from
  macro 'intptr_t'
#define intptr_t long
             ^

This happens whenever I attempt include the following files in my program:

#include <string> 
#include <vector>
#include <cstring>
#include <iostream>
#include <iterator>
#include <sstream>

I've tried to narrow it down to one of these files causing the problem by commenting out some of them, but it appears that any one of them causes the error. Interestingly enough, string.h does not cause the error.


Solution

  • It sounds like your source code contains something like this:

    #include <mongoose.c>
    

    The .c file defines a macro that collides with words used in the standard library headers.

    Including a .c file is not a good practice. Instead, you should build the mongoose library, and link your program against it.

    If you really have to keep everything in a single translation unit, you should be able to move that dubious include statement to after all other headers, or even to the bottom of your cpp file.

    But it would be best to figure out how to build mongoose.c separately, then link against the resulting library. You can ask a separate question, or see if you get anything out of this: Can't figure out how to build C application after adding Mongoose Embedded