首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

高人救命!1请问一个宏义的有关问题!

2012-02-15 
高人救命!!1请教一个宏义的问题!!!!有一组enum值:enum{AA1,BB,CC}定义了一个宏#definePPXXXX可以取AA,BB,

高人救命!!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

热点排行