提问人:Dr. Debasish Jana 提问时间:3/22/2017 最后编辑:Dr. Debasish Jana 更新时间:3/23/2017 访问量:572
C++ 编译错误,如预期的那样,枚举类型声明在数值常量之前 }
C++11 Compilation Error for enumerated type declaration as expected } before numeric constant
问:
我有以下源文件():test.c
#include <iostream>
enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
int main()
{
return 0;
}
当我编译时,它编译得很好。without -std=c++11
g++ test.c -o test
当使用 编译时,它带有编译错误:
g++ -std=c++11 test.c -o 测试-std=c++11
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)
请帮忙。
答:
0赞
Paul R
3/23/2017
#1
ENOKEY
是 中定义的错误代码:<errno.h>
#define ENOKEY 126 /* Required key not available */
大概是在您的构建平台上被 d 的(至少在指定时),所以该行:<errno.h>
#include
<iostream>
-std=c++11
enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
预处理为:
enum ecodes { 126 = -1, EDUPKEY = -2 };
因此出现错误。
注意:您的原始示例代码代替了 ,因此没有其他人能够重现该问题。INVALID
ENOKEY
带回家的信息:在提出问题时,请始终提供适当的 MCVE 和重现错误的实际代码,而不是您认为问题所在位置的近似值。
评论
C++11
对于 C 程序?你确定?严重的 C++03、C++11 和 C 在 s 的实现上有所不同,因此您确实需要澄清。enum