Como _T()
macro en Visual Studio, que define y utiliza mi propia _L
macro como:cómo definir macro para convertir char string concatenado a wchar_t cadena en C
#define _L(x) __L(x)
#define __L(x) L ## x
Funciona para:
wprintf(_L("abc\n"));
Pero consigue un error de compilación para:
wprintf(_L("abc\n""def\n"));
Se informa "literales de cadena con tipos de caracteres diferentes no se pueden concatenar".
También hice:
#define _L2(x) __L2(x)
#define __L2(x) L ## #x
wprintf(_L2("abc\n""def\n"));
El código se compila, pero el \n
no funciona como una secuencia de escape de una nueva línea. El \n
se convierte en dos personajes, y la salida de wprintf
es:
"abc \ n" "def \ n"
¿Cómo puedo tener una macro para convertir dos char string concatenado a wchar_t
? El problema es que tengo algunas macros ya existentes:
#define BAR "The fist line\n" \
"The second line\n"
Quiero encubierta a una cadena wchar
durante la compilación. El compilador es ICC en Windows.
Editar:
Los _L
macro funciona en gcc, el MSVC e ICC hizo no tiene obras, es un error del compilador. Gracias @R .. para comentarme.
Si mal no recuerdo, no necesita escribir macro. Simplemente coloque la cadena una al lado de la otra y se concatenarán automáticamente en una. Al menos eso funciona para gcc. – nhahtdh
Esto es puramente un error en MSVC. Los lenguajes C permiten concatenar cadenas de ancho diferente, y el resultado es una cadena ancha. –
@nhahtdh No debo hacer dos cadenas. Quiero convertir cadenas contactadas a wchar. – RolandXu