Last Update 2021/09/24
-Wunused
ほぼ全ての-Wunused-...関連のオプションを組み合わせたオプション
テスト概要
オプション無し、-Wunused、-Wallの各オプションを使用した際の警告出力例
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
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でも有効となる