【发布时间】:2019-02-02 18:31:56
【问题描述】:
我尝试使用一些条件编译预处理指令而不是“if-else”来编写程序,如下所示。
#include<stdio.h>
int main ()
{
int x;
scanf ("%d",&x);
#if (x==5)
printf ("x is 5");
#else
printf ("x not 5");
#endif
}
但问题是,即使 x 的值是 5,它也总是打印 else 部分。我最简单的问题是----->为什么?
是否有可能成功完成这个程序(即从用户那里获取 x 的值并使用 #if 指令和 #if 下的打印语句检查条件)。
在编译期间它显示警告 "'x' 未定义,计算结果为 0"。但x 对我来说似乎已定义。这是否意味着x 应该使用#define 定义。请解释一下条件编译背后的概念。
【问题讨论】:
-
预处理器不能使用 C 程序中的变量。
-
预处理器在编译期间运行。要检查运行时值,请使用普通的
if。
标签: c c-preprocessor preprocessor conditional-compilation preprocessor-directive