Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;程序_C++_C_Compiler Construction_Compilation_Compiler Errors - Fatal编程技术网

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++的包装器直接代替库。很烦人,但我现在能想到的唯一办法肯定会奏效 我不确定这是否

我有一个包含枚举的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平台上尝试这个。非常感谢您的帮助。它起作用了