実際、__ Tは、文字列をwchar_t*またはchar*に変換するために使用されます。tchar.hでは、次のようになります。
#define __T(x) L ## x
UNICODEが有効になっていて
#define __T(x) x
無効になっている場合
コードをUNICODEコンパイルと非UNICODEコンパイルの両方でコンパイルする場合は、次を使用します。
TCHAR * sz = __T( "マイテキスト");
ほとんどのWINAPI関数は、TCHAR*またはその形式の一部を使用します
実際、私は_T()バージョンを好みますが、__ Tバージョンが存在することを知らなかったので、tchar.hの下部に次のように定義します。
#define _T(x) __T(x)
#define _TEXT(x) __T(x)
例に戻りましょう。
strcpy(codecName, __T(#CODEC)); \
と同等です:
strcpy(codecName, "CODEC"); \
非ユニコードビルド、および
strcpy(codecName, L"CODEC"); \
UNICODEビルドで
非常に重要!!:_Tまたは__Tを使用するだけでは、コードがUNICODEに準拠していることを確認するのに十分ではありません。WINAPI関数の呼び出しが簡単になります。UNICODEで動作するようにコードを準備する必要があります。