Linux C++;11枚举类型声明编译错误(如预期)}在数值常量之前

Linux C++;11枚举类型声明编译错误(如预期)}在数值常量之前,linux,c++11,enums,compiler-errors,g++4.9,Linux,C++11,Enums,Compiler Errors,G++4.9,我有以下源文件(test.c): 使用-std=c++11编译时,会出现编译错误: g++-std=c++11测试.c-o测试 test.c:3:16: error: expected identifier before numeric constant enum ecodes { ENOKEY = -1, EDUPKEY = -2 }; ^ test.c:3:16: error: expected â}â before numeric constant te

我有以下源文件(
test.c
):

使用
-std=c++11
编译时,会出现编译错误: g++-std=c++11测试.c-o测试

test.c:3:16: error: expected identifier before numeric constant
  enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
                ^
test.c:3:16: error: expected â}â before numeric constant
test.c:3:16: error: expected unqualified-id before numeric constant
test.c:3:42: error: expected declaration before â}â token
  enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
使用的编译器是Linux上的GNU g++4.9.2

bash-4.2$ g++ --version
g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)

请提供帮助。

ENOKEY
是在
中定义的错误代码:

大概
正在
#include
d由
在构建平台上执行(至少在指定
-std=c++11
时),因此行:

enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
预处理为:

enum ecodes { 126 = -1, EDUPKEY = -2 };
因此出现了错误

注意:原始示例代码中的
无效
代替了
ENOKEY
,因此其他人无法重现该问题


带回家的信息:当提出问题时,始终提供一个正确的实际代码来再现错误,而不是您认为问题所在的近似值。

ENOKEY
中定义的错误代码:

大概
正在
#include
d由
在构建平台上执行(至少在指定
-std=c++11
时),因此行:

enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
预处理为:

enum ecodes { 126 = -1, EDUPKEY = -2 };
因此出现了错误

注意:原始示例代码中的
无效
代替了
ENOKEY
,因此其他人无法重现该问题


带回家的信息:当问问题时,总是提供一个正确的、真实的代码来重现错误,而不是一个你认为问题所在的近似值。

C++11
对于C程序?你确定吗?认真地说,C++03、C++11和C在
enum
s的实现上存在差异,因此您需要澄清。使用g++4.9.2对我来说编译正常-我猜在某个标头中可能存在名称冲突(宏?)。我想我们需要一个…@Bathsheba我从一个巨大的代码库中举了一个最小的例子,我在这里遇到了这个问题。代码库主要是C++,但也有一些.c文件,也有这个例子given@PaulR同意。但是,当我将文件编译为g++src.c时,它可以编译,但是当我编译为g++-std=c++11 src.c时,它会得到编译错误。如果这是由于名称冲突造成的(我也这么认为),那么对于g++src.c.m来说,这不也是一个问题吗?我们需要看到显示问题的最小代码体。上面的枚举是C++和C++中的一个有效语句,所以目前谁都猜不出问题是什么?你确定吗?认真地说,C++03、C++11和C在
enum
s的实现上存在差异,因此您需要澄清。使用g++4.9.2对我来说编译正常-我猜在某个标头中可能存在名称冲突(宏?)。我想我们需要一个…@Bathsheba我从一个巨大的代码库中举了一个最小的例子,我在这里遇到了这个问题。代码库主要是C++,但也有一些.c文件,也有这个例子given@PaulR同意。但是,当我将文件编译为g++src.c时,它可以编译,但是当我编译为g++-std=c++11 src.c时,它会得到编译错误。如果这是由于名称冲突造成的(我也这么认为),那么对于g++src.c.m来说,这不也是一个问题吗?我们需要看到显示问题的最小代码体。上面的枚举是C和C++中的有效语句,所以目前谁都猜不出问题是什么。
enum ecodes { 126 = -1, EDUPKEY = -2 };