#define Val_MAX 0
int main() {
if(Val_MAX)
printf("The value is %d",VALUE_MAX);
return 0;
}
当我尝试编译上述程序时if(VALUE_MAX)
显示警告
条件表达式是常量。
如何解决上述警告?
答案 0 :(得分:2)
在您的代码中,Val_MAX
为#define
的{{1}} d值{/ 1}}
0
实际上是(您可以在使用if(Val_MAX)
进行预处理后检查)
gcc -E
这没有任何价值。以下if(0)
永远不会执行。
FWIW,像printf()
这样的选择语句需要一个表达式,对于该表达式,值预期在运行时完成。对于固定值,选择语句没有意义。它最有可能最终成为“总是真实”或“总是错误”的情况。
一种可能的解决方案: [实际使用选择语句]
将if
变为变量,询问用户输入值,然后使用它。伪代码看起来像
Val_MAX
答案 1 :(得分:0)
您的preprocessor directive
将VAL_MAX
替换为0
if(0)
所以无论如何它始终是假的,而你的printf
将不会执行,所以if
条件是没有用的