_T( ) makro ändert für UNICODE-Zeichendaten

Habe ich UNICODE-Anwendung, wo in wir verwenden _T(x), die wie folgt definiert ist.

#if defined(_UNICODE)
#define _T(x) L ##x
#else
#define _T(x) x
#endif

Ich verstehe, dass L wird definiert, wchar_t, die 4 bytes auf jeder Plattform. Bitte korrigieren Sie mich, wenn ich falsch bin. Meine Forderung ist, die ich brauche L zu 2 bytes. Also als compiler-hack begann ich mit -fshort-wchar-gcc-flag. Aber jetzt muss ich meine Anwendung verschoben werden, um zSeries, wo ich nicht bekommen, um zu sehen, die Wirkung der -fshort-wchar-fahne in der, Plattform.

In Ordnung für mich, um der Lage sein, mein port-Anwendung auf zSeries, ich brauche zu ändern, _T( ) Makros in einer Weise, dass auch nach der Verwendung von L ##x und ohne mit -fshort-wchar-Flagge, die ich brauche, um 2byte wide-character-Daten.Kann jemand mir sagen, wie ich das ändern kann die definition von L, so dass ich definieren kann, L 2 bytes immer in meiner Anwendung.

AFAIK, wchar_t ist 2bytes Breite auf Windows, so dass die Größe von wchar_t ist von der Implementierung abhängig.
wchar_t ist in der Regel als Basis-Typ für WCHAR, die sicherlich eine Breite von 2 Byte. Funktionen wie MessageBoxW haben WCHAR* Argumente, so dass WCHAR und wchar_t identisch mit der Windows-Programmierung sehr viel einfacher.
L ist nur die Zeichen 'L'. Es wird nicht definiert, etwas zu sein. In C++, L"Hallo Welt" nur definiert ein wide string literal. Aber das L nicht zu bekommen, durch nichts zu ersetzen.

InformationsquelleAutor Nagasai Sowmya | 2010-11-09

Schreibe einen Kommentar