3

タイトルが示すように、すでに知っている人は、このフラグを次のように使用してステートメントGCC-6で重複をキャッチできます。if-Wduplicated-cond

#include <stdio.h>

int main(void){
    int a = 5;

    if( a == 5){
        printf("First  condition is True, A = %d\n", a);
    }else if( a == 5 ){
        printf("Second condition is True, A = %d\n", a);
    }
}

出力は次のようになります。

program.c:8:17: warning: duplicated ‘if’ condition [-Wduplicated-cond]
     }else if( a == 5 ){
               ~~^~~~
program.c:6:11: note: previously used here
     if( a == 5){
         ~~^~~~

今、私は次のことを知っています:

else if( (a > 4) && (a < 6) )

のように同じではありません

else if( a == 5 )

しかし、同じ条件のチェックを行う場合がありa == 5ます。

私の質問は、この種の重複を (回避するために) キャッチできる可能性はありますか?

4

1 に答える 1

-1

-Wduplicated-condこのケースをキャッチします。明示的に有効にする必要があります。

main.cpp: 関数 'int main()' 内:

main.cpp:8:11: 警告: 'if' 条件が重複しています [-Wduplicated-cond]

 }else if( a == 5 ){
       ^~

main.cpp:6:5: 注: 以前はここで使用されていました

 if( a == 5){

元々はPR67819により有効化されて-Wallいましたが、現在は有効化されていません:

新しい警告が現在ブートストラップ [*] を壊しており、ブートストラップの失敗から派生した PR67819 を解決する簡単な方法が見つからないことを考えると、-Wduplicated-cond を -Wall から移動し、当分の間、テストの 1 つをスキップします。 . また、genemit.c のハックを元に戻しています。

于 2016-05-18T06:40:23.953 に答える