我有一個代碼,它使用#warning
很多信號編譯時間分支給用戶。代碼有很多配置選項,因此不清楚代碼中的哪些位實際上被納入編譯。有條件地使用#warning或#pragma消息或什麼也沒有
一旦你選擇了配置選項,那些警告確實混亂了輸出。所以我想能夠禁用它們。最簡單的方法是將每個警告包裝到#ifdef ... #else
結構中。但如果我再次觸摸該代碼,則需要再次查看整個代碼庫。
所以相反,我想抽象一點。但是,我試圖定義一個調用#warning
或#pragma message
的宏。下面編譯但無法做正確的事情:
#ifdef EMIT_WARNINGS
#define WARNING(s) _Pragma("message(\"Hi\")")
#else
#define WARNING(s)
#endif
WARNING("How can I print this?")
所有我的推杆s
到有失敗的嘗試。一旦我做_Pragma("message(\"" s "\")")
,我得到_Pragma
需要一個括號字符串。
有什麼我可以做的很好的抽象嗎?