警告C4127:条件表达式在cl命令中是常量

时间:2015-07-03 05:53:24

标签: c++ c visual-studio-2010 if-statement c4127

#define Val_MAX 0
int main() {
   if(Val_MAX)
      printf("The value is %d",VALUE_MAX);
   return 0;
}

当我尝试编译上述程序时if(VALUE_MAX)显示警告

  

条件表达式是常量。

如何解决上述警告?

2 个答案:

答案 0 :(得分:2)

在您的代码中,Val_MAX#define的{​​{1}} d值{/ 1}}

0

实际上是(您可以在使用if(Val_MAX) 进行预处理后检查)

gcc -E

这没有任何价值。以下if(0) 永远不会执行。

FWIW,像printf()这样的选择语句需要一个表达式,对于该表达式,值预期在运行时完成。对于固定值,选择语句没有意义。它最有可能最终成为“总是真实”或“总是错误”的情况。

一种可能的解决方案: [实际使用选择语句]

if变为变量,询问用户输入值,然后使用它。伪代码看起来像

Val_MAX

答案 1 :(得分:0)

您的preprocessor directiveVAL_MAX替换为0

if(0)

所以无论如何它始终是假的,而你的printf将不会执行,所以if条件是没有用的