如何在新的xCode中禁用“添加显式括号以避免悬空”?

时间:2012-08-19 01:58:34

标签: xcode syntax warnings compiler-warnings

刚刚更新到最新的xCode 4.41,现在我收到了大量关于完美代码的警告(参见主题行)。这些警告是我正在使用的第三方源代码,我不想进入该代码和编辑(下次我更新该代码时我必须再次这样做)所以我宁愿只是禁用它特别警告。

顺便说一下,我正在使用xcode4.41,但显然我没有足够的声誉来创建一个新标签(尽管4.41还没有在那里很有趣)

5 个答案:

答案 0 :(得分:21)

这对我有用:

#ifdef __llvm__
#pragma GCC diagnostic ignored "-Wdangling-else"
#endif

答案 1 :(得分:5)

它不是一个错误。如果您有嵌套的if-else if-else块,Apple LLVM会发出警告。请看下面的代码:

if (Condition1)
    if (Condition2)
        return Statement2;
    else if (Condition3)
        Statement3;
    else
        Statement4;

通过查看上面的代码,解析器难以理解'else'与哪个'if'相关联?请记住,对于其他所有内容都不是必须的 - 如果,那么很可能else语句可能链接到if(Condition1)而不是if(Condition2)。

Apple llvm编译器非常聪明,不会让这种愚蠢,但警告用户重新考虑代码,以确保用户不想要其他方式。

通常,可以通过向所有顶级if语句添加大括号来解决警告。在上面的示例中,警告将通过向if(Condition1)添加大括号而消失。检查下面更易读(少警告)的代码:

if (Condition1)
{
    if (Condition2)
        return Statement2;
    else if (Condition3)
        Statement3;
    else
        Statement4;
}

答案 2 :(得分:3)

好的--- Apple LLVM编译器4.0下有一个选项 - 名为

的警告

缺少大括号和括号

将其设置为NO可以消除此警告。

不幸的是,似乎没有办法摆脱大括号的警告。

Apple,你开始对我的发展过分强加。停止!

答案 3 :(得分:0)

"否则"这是为了"其他" '如果'是一个真的很难找到的bug!我从个人经验中知道。所以,"悬挂其他"警告可能真的很有帮助。

答案 4 :(得分:0)

您还可以使用-Wno-dangling-else标记。

http://clang.llvm.org/docs/UsersManual.html#options-to-control-error-and-warning-messages

  

-Wno-FOO
  禁用警告“foo”。

clang++ -Wno-dangling-else test.cpp