[英]How do I turn a macro into a string using cpp?
GNU的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.