大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

GCC 5.xはC11がデフォルト

株式会社クローバーフィールドの経営理念
著者:高木信尚
公開日:2015/12/13
最終更新日:2017/12/27
カテゴリー:雑記
タグ:

こんにちは、高木です。

昨日書いたように、現在は若手技術者にCを教えています。
そこで気になったことがあるので書き留めておくことにします。

Cの教育にあたり、CコンパイラにはGCCを使用しています。
正確にいうとMinGW-w64の64ビット版コンパイラを使っています。
バージョンは5.2です。

以前はCといえば古いC90(またはC89)が当たり前だったのでした。
最近はコンパイラの対応状況も進んで、より新しい機能を使えるようになっています。
現在私が実際に仕事で使っているCもC99です。

実際の仕事で使うには、最新の機能が使えるのは歓迎すべきことです。
けれども教育に使うには、まずは基本であるC90から教えたいものです。
なぜなら、まだまだC90を使っている現場は少なくないはずですから。

ところが、たまたま手元にあったので使うことにしたGCC 5.2は、デフォルトで-std=gnu11を指定したのと同じになっています。
つまり、C11がデフォルトで、しかもGCC拡張までついてくるのです。

これを普段JavaやC#を使っている若手技術者に使わせると、当然いつもの癖でC90では使えない文法を使ってしまいます。
初期化をブロックの途中で行うとか、定数式以外で集成体を初期化するとかです。

-std=c90 -pedanticといったオプションを指定させてもいいのですが、これは面倒ですし、学習者の負担が大きすぎます。
仕方なく都度指導するようにしています。

何かいい方法はないもんですかねえ。

    上に戻る