假设有如下代码需要兼容三个版本
这样无法完成任务的
无论
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