Loose-Info.com
Last Update 2021/09/24
TOP - 各種テスト - gcc - 警告関連のオプション - -Wunused

-Wunused
ほぼ全ての-Wunused-...関連のオプションを組み合わせたオプション

テスト概要

オプション無し、-Wunused、-Wallの各オプションを使用した際の警告出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


sample.c
#include <stdio.h> /* -Wunused-functionオプションによる警告 */ /* 宣言のみで関数定義の無いstatic関数 */ static int sampFunc1(void); int sampFunc2(int samp1, int samp2) { /* 引数sampには値の代入のみ(-Wunused-but-set-parameterオプションに該当) */ /* -Wunused-but-set-parameterオプションによる警告は-Wunused単独指定時は出力されない(-Wextraの併記が必要) */ samp1 = 2; /* 関数内でのsamp2の使用は無し(-Wunused-parameterオプションに該当) */ /* -Wunused-parameterオプションによる警告は-Wunused指定時は出力されない */ return 0; } int main(void) { /* -Wunused-local-typedefsオプションによる警告 */ /* ローカルで宣言された使用されないtypedef */ typedef int samp1; int i = 1; int j[5] = {0, 1, 2, 3, 4}; /* -Wunused-variableオプションによる警告 */ int samp2; /* 宣言のみ(未使用) */ /* -Wunused-but-set-variableオプションによる警告 */ /* ローカル変数の宣言・初期化 */ int samp3; samp3 = 1; /* 以降のsamp1の使用無し */ /* -Wunused-valueオプションによる警告 */ /* 効果のない(使用されない)結果を計算することとなるステートメント */ (i < j[i]) + 1; /* -Wunused-labelオプションによる警告 */ label1: /* 使用されないラベル */ printf("label1\n"); printf("%d\n", sampFunc2(1, 2)); return 0; }

動作テスト

オプション無しでコンパイルを実行
$ gcc sample.c エラー・警告無し $

-Wunusedオプションを指定してコンパイルを実行
$ gcc -Wunused sample.c sample.c: In function ‘main’: sample.c:40:13: warning: statement with no effect [-Wunused-value] (i < j[i]) + 1; ~~~~~~~~~~~^~~ sample.c:43:2: warning: label ‘label1’ defined but not used [-Wunused-label] label1: /* 使用されないラベル */ ^~~~~~ sample.c:34:6: warning: variable ‘samp3’ set but not used [-Wunused-but-set-variable] int samp3; ^~~~~ sample.c:30:6: warning: unused variable ‘samp2’ [-Wunused-variable] int samp2; /* 宣言のみ(未使用) */ ^~~~~ sample.c:24:14: warning: typedef ‘samp1’ locally defined but not used [-Wunused-local-typedefs] typedef int samp1; ^~~~~ sample.c: At top level: sample.c:5:12: warning: ‘sampFunc1’ declared ‘static’ but never defined [-Wunused-function] static int sampFunc1(void); ^~~~~~~~~ $ -Wunused-...関連のオプションによって出力される警告

-Wallオプションを指定してコンパイルを実行
$ gcc -Wall sample.c sample.c: In function ‘main’: sample.c:40:13: warning: statement with no effect [-Wunused-value] (i < j[i]) + 1; ~~~~~~~~~~~^~~ sample.c:43:2: warning: label ‘label1’ defined but not used [-Wunused-label] label1: /* 使用されないラベル */ ^~~~~~ sample.c:34:6: warning: variable ‘samp3’ set but not used [-Wunused-but-set-variable] int samp3; ^~~~~ sample.c:30:6: warning: unused variable ‘samp2’ [-Wunused-variable] int samp2; /* 宣言のみ(未使用) */ ^~~~~ sample.c:24:14: warning: typedef ‘samp1’ locally defined but not used [-Wunused-local-typedefs] typedef int samp1; ^~~~~ sample.c: At top level: sample.c:5:12: warning: ‘sampFunc1’ declared ‘static’ but never defined [-Wunused-function] static int sampFunc1(void); ^~~~~~~~~ $ -Wunusedオプションは-Wallでも有効となる