2012-10-11 42 views
3

我想使用宏擴展名中的宏的名稱作爲字符串。宏名稱擴展爲字符串c/C++

例子:

#define DEBUG_TEST(a, ...) printf("DEBUG_TEST::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__) 

想改變的東西,並不需要 「DEBUG_TEST」 了在exapansion,但類似:

#define DEBUG_TEST(a, ...) printf(__MACRO__ "::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__) 
在我的例子

當然__ MACRO __ dosen't exist ...

+0

你的問題不清楚。你想用什麼來代替'__MACRO__'? – user93353

+0

在我遇到過的任何預處理器中都沒有這樣的功能。 –

+0

@ user93353:我只想用一個在示例中插入宏名稱(DEBUG_TEST)的構造替換__MACRO__的東西。 (我用__MACRO__來顯示一個熟悉的結構,如__FUNCTION__)。 – user1464125

回答

4

我相信這是不可能的。我的建議是創建另一個宏,將宏的名稱作爲參數。然後在你的其他宏中使用這個宏。

+0

用於* macroses *的+1。真是一個字! – iGbanam