Tengo aplicación UNICODE donde usamos _T (x) que se define de la siguiente manera._T() cambios de macro para datos de caracteres UNICODE
#if defined(_UNICODE)
#define _T(x) L ##x
#else
#define _T(x) x
#endif
Entiendo que L se define como wchar_t, que tendrá 4 bytes en cualquier plataforma. Por favor, corríjame si estoy equivocado. Mi requisito es que necesito que L sea de 2 bytes. Así que como compilador de pirateo comencé a usar -fshort-wchar flag gcc. Pero ahora necesito que mi aplicación se mueva a zSeries, donde no puedo ver el efecto de la bandera -fshort-wchar en esa plataforma.
Para que yo pueda portar mi aplicación en zSeries, necesito modificar la macro _T() de tal manera que incluso después de usar L ## x y sin usar la bandera -fshort-wchar, necesito obtener datos de caracteres de 2 bytes de ancho. Puede que alguien me diga cómo puedo cambiar la definición de L para que pueda definir que L sea de 2 bytes siempre en mi aplicación.
yo sepa, wchar_t es 2 bytes de ancho en Windows, por lo que el tamaño de wchar_t es la implementación dependiente. – nothrow
'wchar_t' se usa normalmente como el tipo de base para' WCHAR', que ciertamente tiene 2 bytes de ancho. Las funciones como 'MessageBoxW' tienen argumentos' WCHAR * ', por lo que tener' WCHAR' y 'wchar_t' idénticos hace que la programación de Windows sea mucho más fácil. – MSalters
L es solo el caracter 'L'. No se define para ser nada. En C++, L "hello world" solo define un * string string literal *. Pero la L no es reemplazada por nada. – jalf