Loose-Info.com
Last Update 2021/04/01
TOP - 各種テスト - gcc - 警告関連のオプション - -Wno-error=警告指定子

-Wno-error=警告指定子
-Werrorが有効な場合でも、警告指定子で指定した警告をエラーに変換しない

テスト概要

-Werror が有効な場合と、-Wno-error= を併記した場合を比較

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


main.c
/* -Wno-error= オプション動作確認用ソースファイル */ #include <stdio.h> int main(void) { char c; int n[3]; c = 0; n[c] = 1; printtf("n[0] = %d\n", n[c]); return 0; }

動作テスト

-Werror を有効にしてコンパイル
$ gcc -Wall -Werror main.c <--- 警告オプションをまとめて有効にするため -Wall を使用 main.c: In function ‘main’: main.c:11:3: error: array subscript has type ‘char’ [-Werror=char-subscripts] n[c] = 1; エラーメッセージ(-Werrorにより警告から変換) ^ main.c:13:2: error: implicit declaration of function ‘printtf’; did you mean ‘printf’? [-Werror=implicit-function-declaration] printtf("n[0] = %d\n", n[c]); エラーメッセージ(-Werrorにより警告から変換) ^~~~~~~ printf main.c:13:26: error: array subscript has type ‘char’ [-Werror=char-subscripts] printtf("n[0] = %d\n", n[c]); エラーメッセージ(-Werrorにより警告から変換) ^ cc1: all warnings being treated as errors <--- 全ての警告をエラーに変換した旨のメッセージ $

-Werror と-Wno-error= を併記してコンパイル
青色部は「char-subscripts」に関するメッセージ
$ gcc -Wall -Werror -Wno-error=char-subscripts main.c <--- char-subscriptsを指定 main.c: In function ‘main’: main.c:11:3: warning: array subscript has type ‘char’ [-Wchar-subscripts] n[c] = 1; char-subscriptsに関する警告は変換しない ^ main.c:13:2: error: implicit declaration of function ‘printtf’; did you mean ‘printf’? [-Werror=implicit-function-declaration] printtf("n[0] = %d\n", n[c]); エラーメッセージ(-Werrorにより警告から変換) ^~~~~~~ printf main.c:13:26: warning: array subscript has type ‘char’ [-Wchar-subscripts] printtf("n[0] = %d\n", n[c]); char-subscriptsに関する警告は変換しない ^ cc1: all warnings being treated as errors <--- メッセージは-Werrorのみの場合と同じ出力 $