读书人

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

发布时间: 2012-02-21 16:26:23 作者: rapoo

宏定义可不可以嵌套
#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

读书人网 >C++

热点推荐