编译器警告(等级 1)C4127

更新:2007 年 11 月

错误消息

条件表达式是常数

if 语句或 while 循环的控制表达式的计算结果为一个常数。如果 while 循环的控制表达式因该循环中途退出而为一个常数,则应考虑将 while 循环替换为 for 循环。可以忽略导致循环无限继续(类似于 while(1))的 for 循环的初始化、终止测试及循环增量,并且可以通过 for 语句体退出该循环。

下面的示例生成 C4127:

// C4127.cpp
// compile with: /W4
#include <stdio.h>
int main() {
   if (1 == 1) {}   // C4127
   while (1) { break; }   // C4127

   // OK
   for ( ; ; ) {
      printf("test\n");
      break;
   }
}