预处理器#if指令

Cas*_*lav 0 c if-statement

我正在写一个很大的代码,我不希望它都在我的main.c中,所以我写了一个.inc文件,其中包含带有函数的IF-ELSE语句,我想知道它是否可以像这样编写:

#if var==1
process(int a)
{
    printf("Result is: %d",2*a);
}
#else
process(int a)
{
    printf("Result is: %d",10*a);
}
#endif
Run Code Online (Sandbox Code Playgroud)

我试图编译它,但它给了我错误,或者在最好的情况下,它只是在第一个函数进程上没有检查var变量(它被设置为0).

Bla*_*iev 6

预处理器不"知道"任何变量的值,因为它甚至在编译之前就可以工作,而不是在运行时.

在预处理器的情况下,#if您只能评估#define'd符号和常量表达式.

您显示的特定示例可以简单地转换为:

printf("Result is: %d", (var == 1 ? 2: 10) * a);
Run Code Online (Sandbox Code Playgroud)