刚刚更新到最新的xCode 4.41,现在我收到了大量关于完美代码的警告(参见主题行)。这些警告是我正在使用的第三方源代码,我不想进入该代码和编辑(下次我更新该代码时我必须再次这样做)所以我宁愿只是禁用它特别警告。
顺便说一下,我正在使用xcode4.41,但显然我没有足够的声誉来创建一个新标签(尽管4.41还没有在那里很有趣)
答案 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