检查枚举中是否有重复项

时间:2017-07-31 21:22:37

标签: c math enums

假设我有以下枚举:

enum {
  PARM1 = 1,
  PARM2,
  PARM3,
  PARM_MAX
};

我可以添加新成员,但是我想在编译时确保所有成员连续递增并且没有重复。我想知道如何在C代码中验证这一点。我相信这是一项数学任务。

1 个答案:

答案 0 :(得分:1)

如果您使用该枚举声明,则数字将为

enum {
  PARM1 = 1,
  PARM2,    /* = 2  */
  PARM3,    /* = 3  */
  PARM_MAX  /* = 4  */
};

没有必要检查这一点,所有编译器都使用此实现。

像Cubbi在cppreference.com中所说:

  

如果枚举数后跟= constant-expression,则其值为   该常量表达式的值。如果枚举数后面没有=   constant-expression,其值是大于值的值   在同一枚举中的前一个枚举器。的价值   第一个枚举器(如果它不使用= constant-expression)为零。