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