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

宏定义可不可以嵌套解决方法

2012-02-21 
宏定义可不可以嵌套#ifdefA_SCAN#defineB_SCAN......(定义1)#else#defineB_SCAN......(定义2)两个宏定义如

宏定义可不可以嵌套
#ifdef   A_SCAN
#define   B_SCAN
        ...   ...   (定义1)
#else  
#define   B_SCAN
      ...   ...   (定义   2)

两个宏定义如上,当有A_SCAN定义时,取B_SCAN的第一个定义,反之取B_SCAN的第二个定义

现在问题是需要完成以下功能:如果取的是B_SCAN的第一个定义,我们定义第三个宏NEED_PRINT
如果取的B_SCAN的第二个定义,我们不定义NEED_PRINT

#ifdef   B_SCAN
#define   NEED_PRINT
        ...   ...  

现在怎么判断到底用的是B_SCAN的哪一个定义呢?   宏定义不可以嵌套吧?

(现在并不能把B_SCAN改为B_SCAN1和B_SCAN2)

[解决办法]
多一个TAG
#ifdef A_SCAN
#define B_SCAN
#define B_SCAN_VER 0
... ... (定义1)
#else
#define B_SCAN
#define B_SCAN_VER 1
... ... (定义 2)

#if B_SCAN_VER==0
....
[解决办法]
看你的要求应该是
#if !defined A_SCAN && defined B_SCAN

热点排行