C 如何获取包含已解析变量且不产生错误的#if预处理器条件?
包含编译时变量的C 如何获取包含已解析变量且不产生错误的#if预处理器条件?,c,c-preprocessor,C,C Preprocessor,包含编译时变量的#if预处理器阶段语句如何在预处理器阶段本身得到解析 下面是运行时没有任何错误的代码: #include<stdio.h> void main() { int num=10; /* compile time */ #if((num%2)==0) /* #if is preprocessor stage but has num of compile time why not error here? */ printf("\nNumber is Eve
#if
预处理器阶段语句如何在预处理器阶段本身得到解析
下面是运行时没有任何错误的代码:
#include<stdio.h>
void main()
{
int num=10; /* compile time */
#if((num%2)==0) /* #if is preprocessor stage but has num of compile time why not error here? */
printf("\nNumber is Even");
#else
printf("\nNumber is Odd");
#endif
}
#包括
void main()
{
int num=10;/*编译时*/
#如果((num%2)=0)/*#如果是预处理器阶段,但有num个编译时,为什么不在这里出错*/
printf(“\n数字为偶数”);
#否则
printf(“\n数字为奇数”);
#恩迪夫
}
对于#if
中的计算,预处理器将用宏的适当扩展替换已定义的所有标识符。之后保留的所有标识符的值均为0
@prabhu。。。它是?提示:更改int num=9代码>然后再试一次…这取决于你所说的“错误”是什么意思。它没有做任何有用的事情。@myaut ya的可能副本我不知道我要问的是num(编译时变量)在预处理器阶段是如何得到解析的科学方法:1)用奇数替换10,然后重试。2) 抓你的头。3) 请完全删除num
的声明,然后重试。4) 用力抓你的头。5) 阅读文档。请详细说明。num
不是定义的预处理器符号,因此它会得到一个值0
0%2
为0
,因此选择了第一个printf
。编译器符号num
的存在不起作用。