簡體   English   中英

有沒有辦法根據是否定義將變量宏轉換為0或1?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM