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 )

但是碰巧我会检查相同的条件 if a == 5

我的问题是,是否有机会捕捉(避免)这种重复?

4

1 回答 1

-1

-Wduplicated-cond确实抓住了这种情况。您必须明确启用它。

main.cpp:在函数“int main()”中:

main.cpp:8:11:警告:重复的“如果”条件 [-Wduplicated-cond]

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

main.cpp:6:5: 注意:之前在这里使用过

 if( a == 5){

它最初由PR67819启用-Wall但不再启用:

鉴于新警告当前破坏了引导程序 [*],并且我看不到如何解决源自引导程序故障的 PR67819 的简单方法,我将 -Wduplicated-cond 移出 -Wall 并暂时跳过其中一项测试. 我也在恢复genemit.c 中的hack。

于 2016-05-18T06:40:23.953 回答