enumの列挙子の末尾にカンマを
enum
の列挙子の末尾にカンマを付けることができます。『Cクイックリファレンス』のenumの項には記述されていませんでした(30頁)。しかし、C99の仕様書には記載されています。
X 3010:2003 (ISO/IEC 9899:1999)「6.7.2.2 列挙型指定子」
gccの拡張機能で、列挙子の末尾にカンマを付けることが認められているようなので、そこから派生した機能かも知れません。
enum {
STDIN,
STDOUT,
STDERR, // 列挙子の末尾にカンマが付けられる
};
int main(void)
{
return 0;
}
これをC89でコンパイルするとエラーになります。
$ gcc -pedantic-errors -std=c89 enum.c
enum.c:6:9: error: comma at end of enumerator list [-Wpedantic]
4 | STDERR,
| ^
C++11でC99互換として、列挙子の末尾にカンマが付けられるようになっています(cpprefjp - C++日本語リファレンス「列挙子の末尾へのカンマ付加を許可」アクセス日2023-04-27)。