Last Update 2021/09/20
-Wunused-but-set-variable
ローカル変数において、初期化以外使用されていない場合に警告を出力
テスト概要
オプション無し、-Wunused-but-set-variable、-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>
int main(void)
{
/* ローカル変数の宣言 */
int samp1;
/* ローカル変数をunused属性指定で宣言 */
int samp2 __attribute__ ((unused));
/* ローカル変数の初期化 */
/* 以降samp1、samp2の使用は無し */
samp1 = 1;
samp2 = 2;
printf("test\n");
return 0;
}
動作テスト
オプション無しでコンパイルを実行
$ gcc sample.c エラー・警告無し
$
-Wunused-but-set-variableオプションを指定してコンパイルを実行
$ gcc -Wunused-but-set-variable sample.c
sample.c: In function ‘main’:
sample.c:6:6: warning: variable ‘samp1’ set but not used [-Wunused-but-set-variable]
int samp1;
^~~~~
$ ローカル変数samp1に値をセットしても使用はしていないことに対する警告
変数samp2は引数にunused属性を設定しているため警告無し
-Wunusedオプションを指定してコンパイルを実行
$ gcc -Wunused sample.c
sample.c: In function ‘main’:
sample.c:6:6: warning: variable ‘samp1’ set but not used [-Wunused-but-set-variable]
int samp1;
^~~~~
$ -Wunused-but-set-variableオプションは-Wunusedでも有効となる
-Wallオプションを指定してコンパイルを実行
$ gcc -Wall sample.c
sample.c: In function ‘main’:
sample.c:6:6: warning: variable ‘samp1’ set but not used [-Wunused-but-set-variable]
int samp1;
^~~~~
$ -Wunused-but-set-variableオプションは-Wallでも有効となる