Q我如何构造预处理器#if表达式来比较字符串?
A你不能直接这样做;预处理器#if算术只使用整数。另一种方法是#define多个具有符号名称和不同整数值的宏,并在这些宏上实现条件
#define RED 1 #define BLUE 2 #define GREEN 3 #if COLOR == RED /* red case */ #else #if COLOR == BLUE /* blue case */ #else #if COLOR == GREEN /* green case */ #else /* default case */ #endif #endif #endif(标准 C 规定了一个新的#elif指令,这使得像这样的 if/else 链稍微清晰一些。)
另请参阅问题 20.17。
参考文献:K&R2 第 4.11.3 节,第 91 页
ISO 第 6.8.1 节
H&S 第 7.11.1 节,第 225 页