宏定義可不可以嵌套


#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