6

GNU の cpp を使用すると、マクロパラメーターを次のように文字列に変換できます。

#define STR(x) #x

次にSTR(hi)"hi"

しかし、マクロ (マクロ パラメーターではない) を文字列に変換するにはどうすればよいでしょうか。

たとえば、ある値を持つマクロ CONSTANT があるとします。

#define CONSTANT 42

これは機能しません: STR(CONSTANT). これ"CONSTANT"は、私たちが望むものではない結果をもたらします。

4

2 に答える 2

15

トリックは、を呼び出す新しいマクロを定義することSTRです。

#define STR(str) #str
#define STRING(str) STR(str)

その後、必要に応じてSTRING(CONSTANT)生成"42"されます。

于 2011-07-28T00:39:46.743 に答える
10

二重の間接魔法が必要です。

#define QUOTE(x) #x
#define STR(x) QUOTE(x)

#define CONSTANT 42

const char * str = STR(CONSTANT);
于 2011-07-28T00:40:22.093 に答える