C++ 在C++;程序
我有一个包含枚举的C头文件C++ 在C++;程序,c++,c,compiler-construction,compilation,compiler-errors,C++,C,Compiler Construction,Compilation,Compiler Errors,我有一个包含枚举的C头文件 typedef enum {leaf, operator} my_type; 现在,当我尝试把这个头包含在我的C++程序中时,我会出错。 “运算符”前应为标识符” 除掉它。 < P>运算符是C++中的保留字。将枚举的那部分命名为其他名称。即使它是第三方库,您也应该能够更改标题。如果事先使用C编译器编译库,则不太可能破坏任何东西 如果你不想这样做,你可以写一个包装器,用C编译器编译,用C++的包装器直接代替库。很烦人,但我现在能想到的唯一办法肯定会奏效 我不确定这是否
typedef enum {leaf, operator} my_type;
现在,当我尝试把这个头包含在我的C++程序中时,我会出错。
“运算符”前应为标识符”
<如何>除掉它。 < P>运算符是C++中的保留字。将
枚举的那部分命名为其他名称。即使它是第三方库,您也应该能够更改标题。如果事先使用C编译器编译库,则不太可能破坏任何东西
如果你不想这样做,你可以写一个包装器,用C编译器编译,用C++的包装器直接代替库。很烦人,但我现在能想到的唯一办法肯定会奏效
我不确定这是否有效,但我想你也可以试试类似的方法
#define operator OPERATOR
#include <thelibrary>
#undef operator
#定义运算符
#包括
#未定义运算符
通常情况下,预处理器并不太关心您如何处理它,但考虑到运算符是一个关键字,我不确定这是否有效。也许像这样的肮脏伎俩可能有效
#define operator operator_
extern "C" {
#include "library.h"
}
#undef operator
但要确保操作符
不会与该标题中的任何内容冲突。编译器通常在抛出错误时指定行号。除非你能在那一行提供代码,否则这里的人不太可能提供帮助。没有其他方法,实际上这个标题是第三方库的一部分,我对它没有任何控制权。那就。。复杂的这个库是已经构建的,还是您自己编译的?也许您可以将这个库包装到另一个C dll中。是的,这个库已经构建(即静态库),而且我正在Linux平台上尝试这个。非常感谢您的帮助。它起作用了