Loose-Info.com
Last Update 2021/04/02
TOP - 各種テスト - gcc - 警告関連のオプション - -Wfatal-errors

-Wfatal-errors
最初に発生したエラーでコンパイルを中止

テスト概要

その1
-Wfatal-errorsオプションの有無によるコンパイル時の挙動を比較
エラーメッセージ出力直後に処理を停止

その2
-Werrorオプションにより変換されたエラーに対する挙動
警告から変換されたエラーの際も出力直後に処理を停止

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル


main.c
/* -Wfatal-errors オプション動作確認用ソースファイル */ #include <stdio.h> int main(void) { int n; printtf("-Wfatal-errors オプション動作確認用ソースファイル\n"); int n; int n; return 0; }

その1

-Wfatal-errorsオプション無しで実行
$ gcc main.c main.c: In function ‘main’: main.c:9:2: warning: implicit declaration of function ‘printtf’; did you mean ‘printf’? [-Wimplicit-function-declaration] printtf("-Wfatal-errors オプション動作確認用ソースファイル\n"); 警告 ^~~~~~~ printf main.c:11:6: error: redeclaration of ‘n’ with no linkage int n; エラーメッセージ ^ main.c:7:6: note: previous declaration of ‘n’ was here int n; note ^ main.c:12:6: error: redeclaration of ‘n’ with no linkage int n; エラーメッセージ ^ main.c:11:6: note: previous declaration of ‘n’ was here int n; note ^ $ 全てのメッセージを出力して終了

-Wfatal-errorsオプション有りで実行
$ gcc -Wfatal-errors main.c main.c: In function ‘main’: main.c:9:2: warning: implicit declaration of function ‘printtf’; did you mean ‘printf’? [-Wimplicit-function-declaration] printtf("-Wfatal-errors オプション動作確認用ソースファイル\n"); 警告(-Wfatal-errorsの作用は無し) ^~~~~~~ printf main.c:11:6: error: redeclaration of ‘n’ with no linkage int n; エラーメッセージ ^ compilation terminated due to -Wfatal-errors. $ -Wfatal-errorsにより最初のエラーメッセージで停止

その2

-Werrorオプションにより警告をエラーに変換した出力となるようにして実行
$ gcc -Werror -Wfatal-errors main.c main.c: In function ‘main’: main.c:9:2: error: implicit declaration of function ‘printtf’; did you mean ‘printf’? [-Werror=implicit-function-declaration] printtf("-Wfatal-errors オプション動作確認用ソースファイル\n"); 警告から変換されたエラーメッセージ ^~~~~~~ printf compilation terminated due to -Wfatal-errors. 警告から変換されたエラー出力で停止 cc1: all warnings being treated as errors <--- 全ての警告をエラーに変換した旨のメッセージ $