【发布时间】:2011-03-10 10:04:43
【问题描述】:
当我使用带有“警告级别 4”的 Visual C++ 9 编译 C++ 代码时:
while( true ) {
//loop body with break on certain condition
}
以及以下内容:
for( ; true; ) {
//same loop body
}
两者都会触发C4127: conditional expression is constant 警告,但以下情况:
for( ; ; ) {
//same loop body
}
编译没有警告。
为什么会有这种差异,尤其是第二个和第三个变体之间?
【问题讨论】:
-
因为第三个语句中没有任何条件表达式...而它在第二个和第三个语句中...。编译器如何在没有任何条件表达式的情况下生成有关条件表达式的警告?
-
我通常使用
#pragma warning禁用C4127,尤其是在使用boost 时。
标签: c++ visual-c++ compiler-construction compiler-warnings