Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何获取包含已解析变量且不产生错误的#if预处理器条件?_C_C Preprocessor - Fatal编程技术网

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
的存在不起作用。