我正在某处读取c代码,我找到了这个结构
typedef enum
{
SPIIP_0,
SPIIP_1,
NUMBER_OF_SPIIP,
ERROR_SPIIP
}SPIIP_ID_E;
在我的代码中的其他地方,我找到了状态:if(IP>NUMBER_OF_SPIIP)
但NUMBER_OF_SPIIP
值无处声明
我的问题是:deos enum type为其元素定义值
答案 0 :(得分:2)
是的,确实如此。根据{{1}}标准,章节§6.7.2.2,枚举说明符,第3段,(强调我的)
枚举器列表中的标识符被声明为具有int类型的常量,并且可以出现在允许的地方。 127)具有
C11
的枚举器将其枚举常量定义为值不断的表达。 如果第一个枚举数没有=
,则其枚举常量的值为=
。每个后续的没有0
的枚举器将其枚举常量定义为通过将=
添加到前一个枚举常量的值而获得的常量表达式的值。(使用枚举器 =可以生成枚举常量,其值与同一枚举中的其他值重复。)枚举的枚举数也称为其成员。
因此,在您的情况下,1
的值为NUMBER_OF_SPIIP
。