【发布时间】:2016-07-21 14:24:27
【问题描述】:
由于这个无效的声明,经过数小时的努力最终确定了一个错误:
...
assert( variable = -0.5 );
这显然应该是assert( variable == -0.5 );:开发者错字。
我正在使用 Visual Studio 2015 进行编译,并且真正致力于“0-警告编译”。
这样一个糟糕而危险的语句怎么能在编译器不报告警告的情况下编译呢?是否没有我们可以启用的编译器选项来避免这种情况?
编辑:即使bool b = ( variable = -0.5 ) 也不会产生任何编译器警告
【问题讨论】:
-
您使用的是什么警告级别?
-
您是否使用 4 级编译器警告?
-
@NathanOliver:默认 (/W3),/Wall 也不发出任何警告。
-
您的断言启用了吗?如果它们被禁用,则预处理器会在编译器有机会发出警告之前完全摆脱
variable = -0.5。 -
另一个很好的例子,使用 Yoda 条件可以节省(很多?)时间。 :-)
标签: c++ visual-c++ visual-studio-2015