Visual Studioのマクロと同様_T()
に、私は自分の_L
マクロを次のように定義して使用しました:</ p>
#define _L(x) __L(x)
#define __L(x) L ## x
それは以下のために働きます:
wprintf(_L("abc\n"));
ただし、次のコンパイルエラーが発生します。
wprintf(_L("abc\n""def\n"));
「文字の種類が異なる文字列リテラルは連結できません」と報告されています。
私もしました:
#define _L2(x) __L2(x)
#define __L2(x) L ## #x
wprintf(_L2("abc\n""def\n"));
コードはコンパイルされますが、\n
は改行のエスケープシーケンスとしては機能しません。は\n
2文字になり、の出力wprintf
は次のようになります。
"abc \ n" "def \ n"
2つの連結されたchar文字列を変換するマクロを作成するにはどうすればよいwchar_t
ですか?問題は、既存のマクロがいくつかあることです:</ p>
#define BAR "The fist line\n" \
"The second line\n"
wchar
コンパイル中にそれらを文字列に変換したいと思います。コンパイラはWindowsのICCです。
編集:マクロはgccで機能し
ます_L
が、MSVCとICCは機能しませんでした。これは、コンパイラのバグです。コメントしてくれてありがとう@R..。