web-dev-qa-db-ja.com

文字列リテラル内のマクロを展開します

私がやろうとしているのは#defineマクロ:

#define a(2)

後で文字列リテラル内で使用します:string = "a";

その文字列を文字列としてではなく、aの値を取得するように解釈したい、つまり2.成功しなかった、誰か助けてもらえますか?

19
Amine
_#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2
_

次に、STRINGIFY(A)は_"2"_を提供します。それらを並べて配置することにより、他の文字列リテラルと連結できます。

"I have the number " STRINGIFY(A) "."は_"I have the number 2."_を提供します。

23
Simple

いいえ、文字列リテラル内でマクロ展開を行うことはできません(つまり、展開するマクロをリテラル内で検索するプリプロセッサを使用する必要があります)。

マクロ展開を使用して、stringify演算子(#)。しかし、それは別のことです。

5
6502