【发布时间】:2011-10-21 19:54:28
【问题描述】:
我今天在 if 中遇到了这个问题,在查看后发现所有这些都是生成 C4353 的有效语句。我唯一的猜测是这是在 C 中执行 noop 的旧方法。为什么这不是错误。你什么时候会用它来做任何有用的事情。
int main()
{
nullptr();
0();
(1 == 2)();
return 0;
}
【问题讨论】:
-
GCC-4.3.4 问题errors for all three,这几乎告诉我们VC2010支持这些作为编译器扩展。
-
“所有这些都是有效的陈述”是什么意思?除了无法编译此代码的 Visual C++ 10.0 之外,我还知道至少还有一个编译器。 p.s. vs2010 不是编译器的名称,您是在说“我从 Vim 编译这段代码”... :-)
-
棘手的部分是如果你有一个 if 像 a == nullptr (x =y) 这就是我所拥有的。有人忘记了 &&,它根本不像你想的那样。
-
@mloskot 谢谢你的迂腐错误。正确的版本是 Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
-
@rerun 不错。尝试使用 /Za 开关编译并比较结果。
标签: c++ c compiler-construction compiler-warnings