C预处理程序#if表达式
对于在C语言中可以与#IF预处理程序一起使用的表达式类型,我有些困惑。我尝试了以下代码,但无法正常工作。请解释并提供可与预处理器一起使用的表达式的示例。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int c=1;
#if c==1
#define check(a) (a==1)?a:5
#define TABLE_SIZE 100
#endif
int main()
{
int a = 0, b;
printf(\"a = %d\\n\", a);
b = check(a);
printf(\"a = %d %d\\n\", a, TABLE_SIZE);
system(\"PAUSE\");
return 0;
}
没有找到相关结果
已邀请:
4 个回复
信藉乒
预处理器使用的“ 1”与C程序中的变量“ 1”无关。预处理器看是否有一个为ѭ1定义的宏。由于没有,它将计算以下表达式:
这当然是错误的。 由于您似乎没有在程序中使用变量
,因此可以执行以下操作以使行为符合您的尝试:
(请注意,为了使宏名称符合惯例,我还将宏名称设置为大写。)
素汞读
,而是
测试按照您的方式进行:
这里的关键是所有这些都在编译之前定义。预处理程序并不关心C变量,当然也不关心它们的值是什么。 注意,约定是在have12ѭ中定义预处理器宏名称。
芭隘的盘石
之类的编译器常数表达式。
糖固傻染