Объявление константы перечисления и определение - стандарт C - PullRequest
0 голосов
/ 29 августа 2018

Стандарт C11 указывает в разделе 6,7 / 5 :

С11 6,7 / 5

Определение идентификатора - это декларация для этого идентификатора. что:

(...)

- для константы перечисления является (единственным) объявлением Идентификатор;

(...)

Означает ли формулировка вышеприведенного абзаца, что

  1. Определение константы перечисления - это объявление, которое является (единственным) объявлением

  2. Определением константы перечисления является (только) объявление?

1 Ответ

0 голосов
/ 29 августа 2018

Это означает, что объявление константы перечисления также определяет ее.

В результате константа enum не может появляться более одного раза в области видимости в единице перевода. Например, приведенный ниже код недействителен, так как он повторно объявляет константу перечисления:

enum a {
    AAA,
    BBB
};

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