我已经试过搜索文件和互联网作为最好的,我能,但我一直没能得到的模式编译器问题的一个警告,如果分配的员的使用,如果声明。

我来自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启用选项

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top