宏定义与枚举

来源:互联网 发布:岛风go软件打不开 编辑:程序博客网 时间:2024/04/28 02:20

宏定义是在预编译时直接进行替换。而枚举值要在编译时才能确定其值。所以任何在宏定义中引用枚举值的操作都是错误的

在下面的代码中,编译输出为:

TEST1=1, NUM1=111 
TEST2=2,NUM2=222


#include <stdio.h>#include <stdlib.h>#define AAA(1)#define BBB(2)#define CCC(3)enum{AA,BB,CC};#define TEST1BB#define TEST2BBB#if (TEST1 == AA)#define NUM1111#elif (TEST1 == BB)#define NUM1222#else#define NUM1333#endif#if (TEST2 == AAA)#define NUM2111#elif (TEST2 == BBB)#define NUM2222#else#define NUM2333#endifint main(int argc,char *argv[]){printf("TEST1=%d, NUM1=%d \n",TEST1,NUM1);printf("TEST2=%d,NUM2=%d \n",TEST2,NUM2);return 0;}


原创粉丝点击