【发布时间】:2018-02-02 10:13:55
【问题描述】:
用一些预定义值替换未定义标记的宏。
我想要一些 EXPAND(x) 宏,如果定义了 x,它将扩展为 x,例如,如果未定义,则扩展为 -1,这样代码:
#define M1 1
#define M2 2
#undef M3
#define M4 (2*2)
printf("%i %i %i %i", EXPAND(M1), EXPAND(M2), EXPAND(M3), EXPAND(M4));
将打印:
1 2 -1 4
这在 C 中可能吗?我唯一能想到的是将 x 字符串化,然后使用 constexpr 函数对其进行解析,但这仅适用于简单的情况。
【问题讨论】:
-
问题中没有特定于 C++ 的内容,因此请仅将其标记为 C。我会解决的。
-
“但这只适用于简单的情况”你为什么这么认为?
标签: c macros c-preprocessor