我从编程基础课程中学习以下示例:
enum color = { red, orange, yellow };
enum fruit = { apple, orange, kiwi}; // error: orange is redefined
int kiwi = 42; // error: kiwi is redefined
作者补充说明:
使用
=
的枚举将为标识符提供所提供的值,该值仍作为下一个枚举数的起始值。
以上代码有效吗?我的意思是,我们何时应该(不)使用=
来创建枚举?
尝试编译:
enum fruit = { apple, orange, kiwi};
main() {}
我收到以下错误:
$ gcc main.c
main.c:1:12: error: expected identifier or ‘(’ before ‘=’ token
enum fruit = { apple, orange, kiwi};
如果删除=
字符,则文件编译正常。
那么,相同字符的使用是什么?
答案 0 :(得分:2)
这一行,
enum color = { red, orange, yellow };
是C语法错误(也在C ++中)。通常,如果编译器抱怨语法错误,那么它实际上总是正确的(例如,确保使用正确的方言; -std=c99 -pedantic
用于C99和gcc
。
引用的内容是对等号=
的不同用法,如
enum color { red, orange = 4, yellow };
其中red
为0,orange
为4,yellow
为5。
第一个片段中的注释是关于符号的重新定义,这在同一范围和命名空间中是不允许的(除了少数例外,但即使对于那些必须声明相同的事物)。在纠正语法错误后,示例和注释有意义,我希望:
enum color { red, orange, yellow };
enum fruit { apple, orange, kiwi }; // error: orange is redefined
int kiwi = 42; // error: kiwi is redefined