次のように定義されている _T(x) を使用する UNICODE アプリケーションがあります。
#if defined(_UNICODE)
#define _T(x) L ##x
#else
#define _T(x) x
#endif
L は、どのプラットフォームでも 4 バイトになる wchar_t に定義されることを理解しています。間違っている場合は修正してください。私の要件は、L を 2 バイトにする必要があるということです。そのため、コンパイラのハックとして、-fshort-wchar gcc フラグの使用を開始しました。しかし今、アプリケーションを zSeries に移動する必要があり、そのプラットフォームで -fshort-wchar フラグの効果を確認できません。
アプリケーションを zSeries に移植できるようにするには、L ##x を使用した後でも -fshort-wchar フラグを使用せずに 2 バイト幅の文字を取得する必要があるように、_T( ) マクロを変更する必要があります。アプリケーションで常に L を 2 バイトに定義できるように、L の定義を変更する方法を教えてください。