char
文字列を扱う型としてよく知られているchar型はsizeof(char)=1バイトの型だ。charに代入できるのは半角文字1文字で、漢字など2バイトからなる全角文字を代入したいとき は(微妙な表現だが)2つのcharが必要になる。
wchar_t(WCHAR)
ユニコードを扱うための型として用意されたのがこのwchar_tだ。sizeof(wchar_t)=2バイトの 型でありchar型よりも使用バイト数が多い。wchar_tに代入できるのはユニコードでの1文字で、半角や全角文字などの区別はない。
ヘッダーの中では以下のように宣言されている。
typedef unsigned short wchar_t; typedef unsigned short WCHAR; // wc, 16-bit UNICODE characterつまりwchar_tとWCHARのどちらもunsigned short型として定義されている。
TCHAR
1つのソースコードをコンパイルオプションだけで通常ビルドだけでなくユニコードビルドも できるようにするための型がTCHARだ。この型は以下のように宣言されている。#ifdef _UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endifつまり、ユニコードビルド時はsizeof(TCHAR)=2バイトに対して、通常ビルド時はsizeof(TCHAR) =1バイトとなる。







