我正在写一个很大的代码,我不希望它都在我的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).
预处理器不"知道"任何变量的值,因为它甚至在编译之前就可以工作,而不是在运行时.
在预处理器的情况下,#if您只能评估#define'd符号和常量表达式.
您显示的特定示例可以简单地转换为:
printf("Result is: %d", (var == 1 ? 2: 10) * a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |