gpt4 book ai didi

c - C 枚举中的最后一个逗号是必需的吗?

转载 作者:太空狗 更新时间:2023-10-29 16:25:27 27 4
gpt4 key购买 nike

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;

如果您想添加(例如)Val4Val5,只需复制并粘贴 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com