簡體   English   中英

如何使用cpp將宏轉換為字符串?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM