gpt4 book ai didi

linux - 枚举类型声明的 C++11 编译错误如预期的那样在数字常量之前

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:57 24 4
gpt4 key购买 nike

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

#include <iostream>
enum ecodes { ENOKEY = -1, EDUPKEY = -2 };
int main()
{
return 0;
}

当我在没有 -std=c++11 的情况下编译 时,它编译正常。

g++  test.c -o test

使用-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<errno.h> 中定义的错误代码:

#define ENOKEY      126 /* Required key not available */

大概是<errno.h>正在 #include d by <iostream>在您的构建平台上(至少在指定 -std=c++11 时),所以行:

enum ecodes { ENOKEY = -1, EDUPKEY = -2 };

被预处理为:

enum ecodes { 126 = -1, EDUPKEY = -2 };

因此出现错误。

注意:您的原始示例代码有 INVALID代替 ENOKEY , 因此没有其他人能够重现该问题。

重要信息:提问时始终提供适当的 MCVE使用重现错误的实际代码,而不是您认为问题出在哪里的近似值。

关于linux - 枚举类型声明的 C++11 编译错误如预期的那样在数字常量之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42953520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com