主にLinuxで使われるGNU C Library (glibc)では、wchar_tをUCS-4 (UTF-32)固定としている、そう私は認識しています。しかし、ずっとその根拠を確かめずにそう思い込んでいる状態だったので、気になって調べました。

マニュアルにそのような記載が無いかと探した結果、The GNU C Library: Selecting the Conversionに以下の記述を見つけました。

The wide character set is always UCS-4 in the GNU C Library.

このほか、LinuxのMan page of UNICODEには、以下の記述があります。

GNU/Linux では、C 言語の型 wchar_t は符号付き 32 ビット整数型である。 その値は C ライブラリにより (すべてのロケールにおいて) 常に UCS コードの値として解釈される。 これを GNU C ライブラリがアプリケーションに知らせるための規約として、 定数 __STDC_ISO_10646__ を定義する。 これは ISO C99 規格で指定されている。

なお、__STDC_ISO_10646__を定義している箇所も見つけました。Move __STDC_* predefined macros from features.h to stdc-predef.h. · git-mirror/glibc@ff3b3d8 · GitHubです。

というわけで、glibcにおいてwchar_tは常にUCS-4である、という認識で良さそうです。


スポンサード リンク

この記事のカテゴリ

  • ⇒ glibcのwchar_tがUCS-4であることを確認した
  • ⇒ glibcのwchar_tがUCS-4であることを確認した