[英]Is there any way to convert a variable macro into 0 or 1 based on whether it is defined?
我想定義一個宏,它可以將另一個宏作為參數,如果未定義則返回0,如果是,則返回1
預處理器有一個名為defined
的運算符,它正是這樣做的,但它僅在#if
指令中可用。 我想知道我是否可以在#if
之外以某種方式公開這個功能,例如在C ++代碼行的中間。
這通常是可能的,如果是這樣,怎么樣?
據我所知,你想要下面的東西,不幸的是不可能 :
#define IS_DEFINED_MACRO(X) #ifdef(X) 1 #else 0 #endif // IMPOSSIBlE!
int x = IS_DEFINED_MACRO(MACRO_TO_TEST);
唯一可行的方法是
#ifdef MACRO_TO_TEST
#define IT_IS_DEFINED 1
#else
#define IT_IS_DEFINED 0
#endif
我讀了你的評論“正是這樣,為了實際的C ++代碼,未在命令行中定義的宏可以默認為0”。
您可以做的一件事就是為每個相應的宏定義一個默認值:
#ifndef WIBBLE
#define WIBBLE 0
#endif
然后在編譯時,您可以選擇將-DWIBBLE=100
傳遞給編譯器以覆蓋默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.