0

我正在使用 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 不会导致错误。

4

1 回答 1

0

听起来您的源代码包含以下内容:

#include <mongoose.c>

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

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

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

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

于 2019-11-23T21:38:38.970 回答