列挙型宣言には、enum キーワードと、その後に続くオプションの ID (列挙型タグ) および 中括弧で囲まれた列挙子のリストが含まれます。コンマは、列挙子のリスト内で各列挙子を分離します。C99 では、最後の列挙子と右中括弧の間に後続のコンマが使用できます。列挙型の宣言形式は、以下のとおりです。
.-,------. V | >>-enum--+------------+--{----列挙子-+--}--;------------------->< '-identifier-'
後に ID が続くキーワード enum は、データ型に名前を 付けます (struct データ型のタグと同様)。列挙子のリストでは、データ型と値のセットが提供されます。
C では、それぞれの列挙子は整数値を表します。C++ では、各列挙子は、整数値に変換可能な値を表します。
列挙子の形式は、次のとおりです。
>>-identifier--+---------------------------------+------------->< '-=--integral_constant_expression-'