作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
C 枚举声明中是否需要最后一个逗号?
也就是Val3
后面的逗号是必须的吗?
enum { Val1, Val2, Val3, } someEnum;
将它放入/取出有任何副作用吗?
最佳答案
这不是必需的。 C99 的 6.7.2.2
部分列出了语法:
enum-specifier:
enum identifieropt { enumerator-list }
enum identifieropt { enumerator-list , }
enum identifier
enumerator-list:
enumerator
enumerator-list , enumerator
enumerator:
enumeration-constant
enumeration-constant = constant-expression
注意 enum-specifier
的前两种形式,一种带有尾随逗号,另一种没有。
我看到使用它的一个优点是:
enum {
Val1,
Val2,
Val3,
} someEnum;
如果您想添加(例如)Val4
和 Val5
,只需复制并粘贴 Val3
行即可不用担心调整逗号。
它也可以简化自动代码生成器,这样它们就不必对最终值进行特殊处理。他们可以只输出每个值后跟一个逗号。
这可以比作常见的 SQL:
select fld1, fld2 from tbl where 1=1 and fld1 > 8
在这种情况下,where 1=1
只是为了让您不必在第一个子句和 and 之前放置
在每个后续的之前。您可以只依赖于 where
where
已经存在的事实,只需对您添加的所有内容使用 和
。
有些人可能认为这有点懒惰,他们是对的,但这不一定是坏事 :-)
任何体面的 DBMS 查询优化器都应该能够在访问数据库表之前去除像这样的常量子句。
关于c - C 枚举中的最后一个逗号是必需的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792753/
我是一名优秀的程序员,十分优秀!