#define Val_MAX 0
int main() {
if(Val_MAX)
printf("The value is %d",VALUE_MAX);
return 0;
}
当我尝试编译上述程序时if(VALUE_MAX)
显示警告
条件表达式是常数。
如何解决上述警告?
#define Val_MAX 0
int main() {
if(Val_MAX)
printf("The value is %d",VALUE_MAX);
return 0;
}
当我尝试编译上述程序时if(VALUE_MAX)
显示警告
条件表达式是常数。
如何解决上述警告?
在您的代码中,Val_MAX
作为#define
d 值0
if(Val_MAX)
实际上是(您可以在预处理后检查gcc -E
)
if(0)
这是没有任何价值的。以下printf()
永远不会执行。
FWIW,像这样的选择语句需要if
一个表达式,其值评估将在运行时完成。对于固定值,选择语句没有意义。它最有可能最终成为“始终正确”或“始终错误”的案例。
一种可能的解决方案: [通过选择语句的一些实际用法]
制作Val_MAX
a 变量,要求用户输入该值,然后使用它。伪代码看起来像
#include <stdio.h>
int main(void)
{
int Val_MAX = 0;
printf("Enter the value of Val_MAX\n");
scanf("%d", &Val_MAX);
if(Val_MAX)
printf("The value is %d",VALUE_MAX);
return 0;
}
你的preprocessor directive
意志VAL_MAX
会0
变成
if(0)
所以无论如何它总是错误的,你printf
不会执行,所以if
条件是没有用的