Last Update 2021/10/02
-Wduplicated-branches
if-elseおよび三項演算子において分岐先の内容が同じである場合に警告を出力
テスト概要
オプション無し、および-Wduplicated-branchesオプションを使用した際の警告出力例
実行環境
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 i;
int j;
for (i=-1; i<2; i++)
{
/* if、elseともに同じ内容の分岐 */
if (i == 0)
{
printf("i = %d\n", i);
}
else
{
printf("i = %d\n", i);
}
/* 三項演算子にて同じ内容の分岐 */
j = i > 0 ? i+1 : i+1;
printf("%d\n", j);
/* if、elseともに同じコメントのみ */
if (i == 0)
{
/* コメント */
}
else
{
/* コメント */
}
}
return 0;
}
オプション無しでコンパイルを実行
$ gcc sample.c エラー・警告無し
$
-Wduplicated-branchesオプション使用してコンパイルを実行
$ gcc -Wduplicated-branches sample.c
sample.c: In function ‘main’:
sample.c:21:19: warning: this condition has identical branches [-Wduplicated-branches]
j = i > 0 ? i+1 : i+1;
^
sample.c:11:6: warning: this condition has identical branches [-Wduplicated-branches]
if (i == 0)
^
$ 同一の分岐がある事についての警告(if-else、三項演算子)
分岐先の内容がコメントのみで空である場合は警告無し