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は改行のエスケープシーケンスとしては機能しません。は\n2文字になり、の出力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..。