首页 > 解决方案 > 枚举常量声明与定义 - C 标准

问题描述

C11 标准在第 6.7/5 节中规定:

C11 6.7/5

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

(...)

— 对于枚举常量,是标识符的(唯一)声明;

(...)

上述段落的措辞是否表明

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

  2. 枚举常量的定义是(唯一的)声明?

标签: clanguage-lawyerdeclarationdefinitionc11

解决方案


这意味着声明一个枚举常量也定义了它。

因此,枚举常量在翻译单元的范围内不能出现多次。例如,下面的代码是无效的,因为它重新声明了一个枚举常量:

enum a {
    AAA,
    BBB
};

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

推荐阅读