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



我正在使用猫鼬在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 文件定义了一个宏,该宏与标准库标头中使用的单词冲突。

包含 .c 文件不是一个好的做法。 相反,您应该构建猫鼬库,并将您的程序链接到它。

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

但最好弄清楚如何单独构建mongoose.c,然后链接到生成的库。 你可以问一个单独的问题,或者看看你是否从中得到了什么:无法弄清楚添加猫鼬嵌入后如何构建 C 应用程序

最新更新