- blogs:
- cles::blog

gccで暗黙の関数宣言をエラーとして扱う

gccでは暗黙でstdio.hがincludeされているので下記のような、#include <stdio.h>が書かれていないプログラムでも(さすがに警告は出ますが)コンパイル自体は通ってしまいます。
test.c
具体的には下記のような感じです。ある程度プログラムに慣れているプログラマーであれば、警告にもきちんと目を通すだろうし、その意味もちゃんと理解できるので、本来はこのあたりは取るに足らない挙動です。
現在、研究プロジェクトで初学者向けのプログラミング学習支援をやっているのですが、やはり初学者は基本に忠実であることが必要であり、おまじないと言われてしまうことも多いincludeの意味を考えるという意味でも、暗黙の関数宣言に最初から頼るのはまずいだろうということになり、gccのこの挙動を無効化できないかということで、gccで暗黙の関数宣言をエラーとして扱う方法を調べてみました。
結論から言うと、gcc 4.1.2では-Werror-implicit-function-declarationというオプションをつけると暗黙の関数宣言をエラーとして扱うことができることがわかりました。
† 暗黙の関数宣言がエラーになる例
† 参考情報
gccのバージョンによって指定のしかたが違うようなので、バージョンに応じたドキュメント(GCC online documentation - GNU Project - Free Software Foundation (FSF))を参照する必要があります。今回は4.1.2だったので、下記の部分を参考にしました。
Warning Options - Using the GNU Compiler Collection (GCC)
-Wimplicit-function-declaration
-Werror-implicit-function-declaration
Give a warning (or error) whenever a function is used before being declared. The form -Wno-error-implicit-function-declaration is not supported. This warning is enabled by -Wall (as a warning, not an error).
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3544
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112615)
3 . 年次の人間ドックへ(112075)
4 . 2023 年分の確定申告完了!(1つめ)(111647)
5 . 三菱鉛筆がラミーを買収(111526)