【C言語】
gcc -Wallでは出ない警告

warning: duplicated ‘if’ condition

警告:if文のthen節とelse節が同じ

[-Wduplicated-cond]
[-Wduplicated-branches]


■if文のthen節とelse節が同じ

//-Wduplicated-branches -Wduplicated-condで警告
//gcc -Wall -Wextra では出ない
int duplicateBranch(int argc,char *argv[]){
    if(argc == 1){
        puts(argv[0]);  return 1;
    }else{ 
        puts(argv[0]);  return 1;
    }
}

新規追加の警告は最初はオプションで
有効ならばあとで-Wallに昇格するらしい。


■if文の第1条件と第2条件が同じ

//-Wduplicated-branches -Wduplicated-condで警告
//gcc -Wall -Wextra では出ない
int duplicatedCond(int argc,char *argv[]){
    if(argc == 1){
        puts(argv[0]);  return 1;
    } else if(argc == 1){
        puts(argv[0]);  return 1;
    } else{
        return 0 ;
    }
}

■まとめ(コンパイル可能)

#include <stdio.h>
//then節とelse節が同じ
//-Wduplicated-branches -Wduplicated-condで警告
//gcc -Wall -Wextra では出ない
int duplicateBranch(int argc,char *argv[]){
    if(argc == 1){
        puts(argv[0]);  return 1;
    }else{ 
        puts(argv[0]);  return 1;
    }
}

//第一条件と第二条件が同じ
//-Wduplicated-branches -Wduplicated-condで警告
//gcc -Wall -Wextra では出ない
int duplicatedCond(int argc,char *argv[]){
    if(argc == 1){
        puts(argv[0]);  return 1;
    } else if(argc == 1){
        puts(argv[0]);  return 1;
    } else{
        return 0 ;
    }
}
int main(int argc,char *argv[]){
    duplicateBranch(argc,argv); //重複文    
    duplicatedCond(argc,argv);  //重複条件
}