Ho un'applicazione UNICODE in cui viene utilizzato _T (x) definito come segue._T() modifiche macro per i dati dei caratteri UNICODE
#if defined(_UNICODE)
#define _T(x) L ##x
#else
#define _T(x) x
#endif
Capisco che L venga definito su wchar_t, che sarà 4 byte su qualsiasi piattaforma. Perfavore, correggimi se sbaglio. Il mio requisito è che ho bisogno che L sia 2 byte. Così come hack del compilatore ho iniziato a usare flag -fshort-wchar gcc. Ma ora ho bisogno che la mia applicazione venga spostata su zSeries dove non vedo l'effetto del flag -fshort-wchar in quella piattaforma.
Per poter trasferire la mia applicazione su zSeries, ho bisogno di modificare la macro _T() in modo tale che anche dopo aver usato L ## x e senza usare flag -fshort-wchar, ho bisogno di ottieni 2 byte di dati di carattere ampio. Qualcuno può dirmi come posso cambiare la definizione di L in modo da poter definire L come 2 byte sempre nella mia applicazione.
per quanto ne so, wchar_t è 2bytes larga su Windows, quindi la dimensione di wchar_t è l'implementazione dipendente. – nothrow
'wchar_t' è normalmente usato come tipo di base per' WCHAR', che è certamente largo 2 byte. Funzioni come 'MessageBoxW' hanno argomenti' WCHAR * ', quindi avere' WCHAR' e 'wchar_t' identici rende la programmazione di Windows molto più semplice. – MSalters
L è solo il carattere 'L'. Non viene definito come qualcosa. In C++, L "Hello World" definisce semplicemente una stringa * letterale * *. Ma la L non viene sostituita da nulla. – jalf