重复假设我有以下枚举:检查枚举
enum {
PARM1 = 1,
PARM2,
PARM3,
PARM_MAX
};
我可以在其中添加新成员,但我要确保在编译时,如果可能的话,所有的成员都是连续增加并且没有重复。我想知道如何在C代码中进行验证。我相信这是一项数学任务。
重复假设我有以下枚举:检查枚举
enum {
PARM1 = 1,
PARM2,
PARM3,
PARM_MAX
};
我可以在其中添加新成员,但我要确保在编译时,如果可能的话,所有的成员都是连续增加并且没有重复。我想知道如何在C代码中进行验证。我相信这是一项数学任务。
如果使用enum声明,这个数字将是
enum {
PARM1 = 1,
PARM2, /* = 2 */
PARM3, /* = 3 */
PARM_MAX /* = 4 */
};
这是没有必要检查这个,所有的编译器使用此实现。
像Cubbi说,在cppreference.com:
如果枚举后跟=常数表达式,其值是常量表达式的 值。如果枚举器后面没有= 常量表达式,则其值为比同一枚举中前一个枚举器的值 大1的值。第一个枚举器的值(如果不使用= constant-expression)为零。
创建所有可能元素的数组。然后在其上运行您最喜欢的重复查找算法。但显然它是由C标准保证的,所以我看不出任何意见。 –
你的定义没有任何重复,并且它的所有成员都是连续递增的。有什么要检查的? –
在运行时验证编译时常量有什么意义? – melpomene