GNU的CPP允許你打開宏參數成字符串像這樣如何使用cpp將宏變成字符串?
#define STR(x) #x
然後,STR(hi)
取代有"hi"
但你怎麼把一個宏(不是宏參數)轉換成字符串?
說我有一個宏CONSTANT有一些值,例如
#define CONSTANT 42
這不起作用:STR(CONSTANT)
。這產生"CONSTANT"
這不是我們想要的。
GNU的CPP允許你打開宏參數成字符串像這樣如何使用cpp將宏變成字符串?
#define STR(x) #x
然後,STR(hi)
取代有"hi"
但你怎麼把一個宏(不是宏參數)轉換成字符串?
說我有一個宏CONSTANT有一些值,例如
#define CONSTANT 42
這不起作用:STR(CONSTANT)
。這產生"CONSTANT"
這不是我們想要的。
訣竅是定義一個叫做STR
的新宏。
#define STR(str) #str
#define STRING(str) STR(str)
然後STRING(CONSTANT)
根據需要得到"42"
。
我相信像這樣使用的&符號通常被稱爲宏「字符串」運算符。 –
'#'不是「&符號」。 –
你需要雙間接魔法:
#define QUOTE(x) #x
#define STR(x) QUOTE(x)
#define CONSTANT 42
const char * str = STR(CONSTANT);
+1使用有意義的名稱。 – ArjunShankar
我假設你想要的輸出爲「42」 - 我不認爲你可以不寫一個函數做。 – Soren