重複の可能性:
文字列を作成するためのCマクロ
char*
次のようなタイプの引数を1つ受け入れる関数がありますf("string");
。文字列引数が関数呼び出しでその場で定義されている場合、文字列本体内でマクロをどのように展開できますか?
例えば:
#define COLOR #00ff00
f("abc COLOR");
と同等になります
f("abc #00ff00");
ただし、代わりに展開は実行されず、関数は文字通り。を受け取りabc COLOR
ます。
特に、マクロを正確に展開して、この引用符で囲まれたトークンが、引用符を含めて\"#00ff00\"
渡された残りの文字列引数と連結されるようにする必要があります。f()
つまり、プリプロセッサは仕事を終えて、コンパイラがコードをからf("abc COLOR");
に変換することを歓迎する必要があります。f("abc \"#00ff00\"");