高人救命!!1请教一个宏义的问题!!!!
有一组enum值:
enum
{
AA=1,
BB,
CC
}
定义了一个宏
#define PP XX
XX可以取AA,BB,CC
void func(void)
{
printf( "pp=%d\n ",PP);
#if (PP==AA)
代码段A....
printf( "AA\n ");
#elif (PP==BB)
代码段B...
printf( "BB\n ");
#endif
}
我想通过编译期给PP定义不同的enum值,来实现控制不同的代码段,如:
编译期定义:#define PP AA
则编译代码段A,并输出 AA
如果 #define PP BB
则编译代码段B,并输出BB
但实际上结果无论PP定义成什么,第一个#if 条件总是真。但第一个printf打出来PP的值是正确的,始终为预想的enum值。不知是何原因?(但如果将PP直接定义成常数1,2,3,则是正确的。)
我这样写法有错误吗?正确的方法应该怎样实现呢?请高人告知,谢谢!!!!!!
[解决办法]
#if 发生在预处理阶段,而enum发生在编译阶段。
可以全部换成宏:
#define AA 1
#define BB 2
#define CC 3