簡體   English   中英

宏擴展到預處理器塊

[英]MACRO expansion to block of preprocessors

在每個 function 定義之前,我的項目中都有以下預處理器(代碼)塊,以整理日志記錄宏。

#ifdef FC_NAME
#undef FC_NAME
#endif

#define FC_NAME  "myFunctionName"

但這本身看起來有點混亂。

所以,我正在考慮用看起來更簡單的東西替換它並嘗試了這個

#define REDEF_FC_NAME(funcName) #ifdef FC_NAME \
\                                 #undef FC_NAME \
\                               #endif \
\                               #define FC_NAME funcName \

但這會給出錯誤,在宏中說 macro def。 那么,有沒有辦法達到同樣的效果呢?

簡短的回答是:你不能用宏來做到這一點。

但:

在 C++ 中,每個 function 都有一個預定義的__func__變量。

GCC 將此作為 C 的擴展提供,我相信許多其他編譯器也是如此。 在 Windows 上,似乎有__FUNCTION__宏(請參閱http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.71).aspx )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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