【发布时间】:2021-02-11 08:04:35
【问题描述】:
#define TEST
int i = 1;
int main(int argc, char const *argv[]) {
#if (defined(TEST) && i)
printf("it is printed");
#endif
return 0;
}
我必须为i 创建另一个宏吗?
【问题讨论】:
-
你不能。预处理器指令在编译时评估,变量在那个时候不可用。
-
"我必须为 i 创建另一个宏吗?"是的。
i需要是最终解析为预处理器整数常量的宏,才能在#if条件句中使用。 -
你能用
if (i)代替把它放在宏里吗? -
您需要解决的实际问题是什么?这个问题背后的原因是什么?现在这是XY problem。
标签: c if-statement macros conditional-statements