为什么在可以离开编译器集时显式设置枚举值?

时间:2013-01-04 02:09:31

标签: c enums

一般情况下,我看到enum { A = 1, B = 2, C = 3, ... }有一些特殊原因可以设置A值,并将编译器的下一个值保留为前一个成员值+ 1,或者这个程序员正在尝试使代码更具可读性或类似此?

1 个答案:

答案 0 :(得分:5)

这是一个风格问题。指定值表示您的应用程序关心每个枚举所采用的特定值,可能是因为它用于实现已发布的标准,或者与其接口指定特定整数的其他应用程序的互操作性。

即使规范中的值恰好是顺序的,最好明确输入它们。如果您以错误的顺序输入成员,或者某人稍后在列表中间插入成员,则将其删除会更有可能发生错误。

另一方面,如果您不关心具体值是什么,只需要编译器为每个枚举成员分配任意唯一值,则将值保留,让编译器自动执行。这适用于仅在您的应用程序内部使用的枚举。

相关问题