假设有如下代码需要兼容三个版本
这样无法完成任务的
无论
typedef enum{ FIRST, SECOND, THIRD, }; #define NUM THIRD #if (NUM == FIRST) #define VAR 1 #elif(NUM == SECOND) #define VAR 2 #elif(NUM == THIRD) #define VAR 3 #endif int main(void) { #if (NUM == FIRST) printf("VAL = %d\n",VAR); #elif(NUM == SECOND) printf("VAL = %d\n",VAR); #elif(NUM == THIRD) printf("VAL = %d\n",VAR); #endif }
#define NUM FIRST还是
#define NUM SECOND还是
#define NUM THIRD
运行结果都一样
但是这样就可以完成任务了
#define FIRST 1 #define SECOND 2 #define THIRD 3 #define NUM THIRD #if (NUM == FIRST) #define VAR 1 #elif(NUM == SECOND) #define VAR 2 #elif(NUM == THIRD) #define VAR 3 #endif int main(void) { #if (NUM == FIRST) printf("VAL = %d\n",VAR); #elif(NUM == SECOND) printf("VAL = %d\n",VAR); #elif(NUM == THIRD) printf("VAL = %d\n",VAR); #endif }
#define NUM FIRST还是
#define NUM SECOND还是
#define NUM THIRD
都可以得到想要的结果
为什么呢?????
#if #elif #define typedef 使用时的注意事项
原文:http://blog.csdn.net/dearwind153/article/details/45232103