GCC告诉我你不能对单独的枚举类型值使用相同的名称,例如
enum flag_one {
SUCCESS,
FAIL
}
enum flag_two {
SUCCESS,
FAIL
}
Run Code Online (Sandbox Code Playgroud)
编译器不允许.因此,范围定义不是'witihin'吗?
是这样做的方法:
enum flag_one {
FLAG_ONE_SUCCESS,
FLAG_ONE_FAIL
}
enum flag_two {
FLAG_TWO_SUCCESS,
FLAG_TWO_FAIL
}
Run Code Online (Sandbox Code Playgroud)
稍微混淆,因为我喜欢使用枚举返回整数代码,因为它更具可读性/描述性但我已经开始得到名称冲突
因此,范围定义不是'witihin'吗?
不,这是不允许的.枚举器列表定义常量.你enum碰巧在同一范围内 - 文件范围.在同一范围内不能有两个具有相同名称的常量.
来自CX的草案:
6.7.2.2枚举说明符
语义
3枚举器列表中的标识符被声明为类型为int的常量,并且可以出现在允许的地方.127)[...]
此外,从脚注127(技术上非规范性和仅供参考):
127)因此,在同一范围内声明的枚举常量的标识符应彼此不同,并且与普通声明符中声明的其他标识符不同.
.
稍微混淆,因为我喜欢使用枚举返回整数代码[...]
使用EXIT_SUCCESS和EXIT_FAILURE定义stdlib.h.