Подобно макросу _T()
в Visual Studio, я определил и использовал свой собственный макрос _L
как:
#define _L(x) __L(x)
#define __L(x) L ## x
It работает для:
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
не работает как escape-последовательность новой строки.\n
становится двумя символами, а вывод wprintf
:
"abc\n""def\n"
Как я могу иметь макрос для преобразования двух связанных строк символов в wchar_t
? Проблема в том, что у меня есть несколько уже существующих макросов:
#define BAR "The fist line\n" \
"The second line\n"
Я хочу скрыть их в строку wchar
во время компиляции. Компилятором является ICC в Windows.
Изменить :
Макрос _L
работает в gcc, MSVC и ICC не работают, это ошибка компилятора.
Спасибо @R.., чтобы прокомментировать меня.