宏定义可不可以嵌套


#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)

6 个解决方案

#1


判断定义B_SCAN时的条件来判断B_SCAN到底是什么,也就是说用#ifdef A_SCAN来实现~

#2


#ifdef A_SCAN && B_SCAN

#3


有点糊涂
怎么感觉就是类似于

#ifdef WIN32
HANDLE hThread = NULL;
#else
pthread_t hThread ;
#endif

#4


现在问题就在于使用
#ifdef A_SCAN 去判断没有用,不知道为什么

#ifdef A_SCAN
#define B_SCAN
    ... ... (定义1)
#else 
#define B_SCAN
   ... ... (定义 2)

通过#ifdef A_SCAN可以得到B_SCAN的第一个定义

但是通过#ifdef A_SCAN却定义不了NEED_PRINT
#ifdef A_SCAN
#define NEED_PRINT
    ... ... 

结果总是NEED_PRINT未定义

所以#if defined A_SCAN && defined B_SCAN 也不行

#5


多一个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
....

#6


看你的要求应该是
#if !defined A_SCAN && defined B_SCAN

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com