wchar_t
読み:ダブリュー-チャー-ティー
外語:wchar_t
C++の予約語の一つ。比較的新しいCでも変数型として利用可能で、「ワイド文字型」を示す。
特徴
C
Cでは、wchar_tは予約語として定義されていない。
ISO/IEC 9899:1990/Amendment 1:1995、いわゆる「C95」から、国際化に対応するべくワイド文字に関するライブラリの追加が行なわれ、ここで正式にwchar_tという型をtypedefで提供した。
wchar.hなどをincludeすると利用可能となる。Microsoft Visual Studio 9.0環境では、wchar.hからincludeされるcrtdefs.hなどで、次のように定義される。
typedef unsigned short wchar_t;
この_tは、typedefであることの目印である。
C++
C++では、これが予約語として採用された。
_tが付いているが、C++においてはこれは組み込み型の予約語であり、typedefではない。このような奇妙な名になったのは、Cの遺物といえる。
サイズについては規定はなく、実装により、「sizeof(wchar_t)」が2または4となる実装が多い。
VC++では主に2、GCCでは主に4である。
符号
C++の場合、wchar_tに(通常は必要ないが)signed/unsignedを指定してもエラーにならない。
通常のwchar_tは符号があるためsigned wchar_t相当であるが、unsigned wchar_tとしてもエラーではない。FreeBSDのg++(GCC)では内部ではunsigned intと等価で処理されているようである。
なお、typedefに過ぎないCのwchar_tは、signed/unsignedを指定するとエラーになる。
再検索