作曲・指導・C言語・Linux

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。

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)。

更新情報