何时(不)使用 equal 创建枚举?
When (not) to use equal to create an enumaration?
我正在使用 编程基础 课程中的以下示例:
enum color = { red, orange, yellow };
enum fruit = { apple, orange, kiwi}; // error: orange is redefined
int kiwi = 42; // error: kiwi is redefined
作者加注:
An enumeration with =
will give the identifier the provided value, which remains as start value for the next enumerators.
上面的代码有效吗?我的意思是,我们什么时候应该(不)使用 =
创建枚举?
正在尝试编译:
enum fruit = { apple, orange, kiwi};
main() {}
我收到以下错误:
$ gcc main.c
main.c:1:12: error: expected identifier or ‘(’ before ‘=’ token
enum fruit = { apple, orange, kiwi};
如果我删除 =
字符,文件编译正常。
那么,等号的用法是什么?
行,
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
我正在使用 编程基础 课程中的以下示例:
enum color = { red, orange, yellow };
enum fruit = { apple, orange, kiwi}; // error: orange is redefined
int kiwi = 42; // error: kiwi is redefined
作者加注:
An enumeration with
=
will give the identifier the provided value, which remains as start value for the next enumerators.
上面的代码有效吗?我的意思是,我们什么时候应该(不)使用 =
创建枚举?
正在尝试编译:
enum fruit = { apple, orange, kiwi};
main() {}
我收到以下错误:
$ gcc main.c
main.c:1:12: error: expected identifier or ‘(’ before ‘=’ token
enum fruit = { apple, orange, kiwi};
如果我删除 =
字符,文件编译正常。
那么,等号的用法是什么?
行,
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