枚举常量声明与定义-C标准

枚举常量声明与定义-C标准,c,language-lawyer,declaration,definition,c11,C,Language Lawyer,Declaration,Definition,C11,C11标准规定了: C116.7/5 标识符的定义是该标识符的声明 即: (……) -对于枚举常量,是 标识符 (……) 上述段落的措辞是否表明 枚举常量的定义是(唯一)声明 枚举常量的定义是(唯一)声明吗 这意味着声明枚举常量也会定义它 因此,枚举常量在转换单元内的作用域中不能出现多次。例如,以下代码无效,因为它重新声明了枚举常量: enum a { AAA, BBB }; enum b { BBB, // error, redeclaration CCC

C11标准规定了:

C116.7/5

标识符的定义是该标识符的声明 即:

(……)

-对于枚举常量,是 标识符

(……)

上述段落的措辞是否表明

  • 枚举常量的定义是(唯一)声明

  • 枚举常量的定义是(唯一)声明吗


  • 这意味着声明枚举常量也会定义它

    因此,枚举常量在转换单元内的作用域中不能出现多次。例如,以下代码无效,因为它重新声明了枚举常量:

    enum a {
        AAA,
        BBB
    };
    
    enum b {
        BBB,   // error, redeclaration
        CCC
    };
    

    这意味着您不能在不定义枚举常量的情况下声明它。这还意味着您不能向前声明枚举常量。但是,作用域仍然适用,因此您可以有:
    enum{NAME1,NAME2};void函数(void){enum{NAME1=37,NAME2=-57};..}
    ,所以它是2。?因为1。没有任何意义,夸张的说法是正确的。因为只能有一个声明(这也是定义),所以谈论多个声明是没有意义的。