问我能使用一个#ifdef中#define一行使用,像这样以两种不同的方式定义东西?
#define a b \ #ifdef whatever c d #else e f g #endif
答不能。你不能“让预处理器处理它本身”,可以这样说。你可以做的是使用两个完全独立的#define行,取决于#ifdef设置
#ifdef whatever #define a b c d #else #define a b e f g #endif
参考:ISO 第 6.8.3 节,第 6.8.3.4 节
H&S 第 3.2 节,第 40-1 页