假设我有以下枚举:
enum {
PARM1 = 1,
PARM2,
PARM3,
PARM_MAX
};
我可以添加新成员,但是我想在编译时确保所有成员连续递增并且没有重复。我想知道如何在C代码中验证这一点。我相信这是一项数学任务。
答案 0 :(得分:1)
如果您使用该枚举声明,则数字将为
enum {
PARM1 = 1,
PARM2, /* = 2 */
PARM3, /* = 3 */
PARM_MAX /* = 4 */
};
没有必要检查这一点,所有编译器都使用此实现。
像Cubbi在cppreference.com中所说:
如果枚举数后跟= constant-expression,则其值为 该常量表达式的值。如果枚举数后面没有= constant-expression,其值是大于值的值 在同一枚举中的前一个枚举器。的价值 第一个枚举器(如果它不使用= constant-expression)为零。