如何有低3.1编译器提出警告的分配运营商在一个如果声明?
-
05-07-2019 - |
题
我已经试过搜索文件和互联网作为最好的,我能,但我一直没能得到的模式编译器问题的一个警告,如果分配的员的使用,如果声明。
我来自RealBasic,在那里我有一个非常强大的习惯,输入这种比较:
if x = 5 then ...
在C,当然,这种语法分配x的值为5,然后测试的结果要看它是否为零,并且"正确"的操作者是:
if (x == 5) { ... }
我已经发现了几个提到,编译器应该能够发出警告,如果有一个分配制成一个如果比较,但是我找不到怎么把它关在模式3.1/gcc。我发现的 -pedantic
选项,但这似乎并没有产生警告。
因为我已经花了大量时间的两倍,现在追查的错误,原来是"="而不是"==",我喜欢帮助的一个警告。
我知道我可以这样做,而不是(这将造成一个编译器错误):
if (5 = x) { ... }
...但这需要改变根深蒂固的编码的生活习惯,也是。更不要说它看上去笨拙和落后。
谢谢!
解决方案 2
链接在ennuikiller的回答没有导致我所需要的。
这一点的更多信息的人可能会找到这个的未来:
编译器的警告是"失踪括号及括号内的"或Wparentheses.
警告是通过选择获得信息的电流 目标在载。
我终于找到了,iPhone模拟器SDK不会 不 显示 这个编译器的选择。
换SDK的iPhone的设备将出现的海湾合作委员会4.2警告 部分,其中包括"失踪 括号及括号内的".
之后把这种选择在iPhone设备SDK,切换回来 到Similator显示, "用户定义的"建设已 添加:
GCC_WARN_MISSING_PARENTHESES
= "是的"。如果转让是真的希望在一个如果发言,你可以 双括号,以避免的警告。
(双括号内的例子:)
if ((x = 5)) { ... }
警告就像一个魅力,虽然它并不喜欢苹果的标准:
if (self = [super init]) { ... }
我可能会离开这-是的,但如果我结了数额巨大他们在一个项目,我将请双括号或爆分配到单独的路线。
谢谢!
其他提示
我正在寻找-Wall选项。
int main(void) {
int x = 5;
if ( x=5) {
}
return 0;
}
$ g++ -pedantic x.cc
$ g++ -Wall x.cc
x.cc: In function ‘int main()’:
x.cc:7: warning: suggest parentheses around assignment used as truth value
此链接介绍了如何通过Xcode GUI启用选项