Mongoose - 包含标准 C++ 库文件时出错

Mongoose - error when including standard C++ library files

我正在使用 mongoose 在 C++ 中构建 HTTP 服务器,当我尝试在我的程序中包含其他文件时收到错误消息:

/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
             ^

每当我尝试在我的程序中包含以下文件时,就会发生这种情况:

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

我试图通过注释掉其中的一些文件来将其缩小到导致问题的文件之一,但似乎其中任何一个都导致了错误。有趣的是,string.h 不会导致错误。

听起来您的源代码包含这样的内容:

#include <mongoose.c>

.c 文件定义了一个与标准库中使用的词冲突的宏 headers。

包含 .c 文件不是一个好习惯。相反,您应该构建 mongoose 库,并 link 您的程序针对它。

如果你真的必须将所有内容都放在一个翻译单元中,你应该能够将那个可疑的 include 语句移动到所有其他 headers 之后,甚至移动到你的 cpp 的底部文件。

但最好弄清楚如何单独构建 mongoose.c,然后 link 针对生成的库。你可以问一个单独的问题,或者看看你是否从中得到了什么:Can't figure out how to build C application after adding Mongoose Embedded