Это имя wchar_t
находится в стандарте (-ях) C89 (и C99), но оно не является поддерживающим langauge типом. Это typedef
для некоторого целочисленного типа, способного удерживать требуемое количество бит. C89 7.1.6 [Стандартные определения] говорит:
wchar_t
который представляет собой интегральный тип которого диапазон значений может представляют различные коды для всех членов самого большого расширенного набора символов заданного числа поддерживаемых регионов; символ нуль должен иметь нулевое значение кода, а каждый элемент базового набора символов , определенный в 5.2.1, должен иметь значение кода, равное его значению , при использовании в качестве одиночного символа в целочисленном символе константа.
Это означает, что кто-то может определить wchar_t
быть все, что они хотят в C89, пока <stddef.h>
не было #include
d.
В C++ это незаконно; wchar_t - это ключевое слово на этом языке.
Что касается многобайтовых функций, на которые вы ссылаетесь, они, как представляется, являются частью C89. Раздел 7.10.7 [Многобайтовые функции символов] определяет mblen
, mbtowc
, wctomb
и 7.10.8 [Многобайтовые строковые функции] определяет mbstowcs
и wcstombs
(все в <stdlib.h>
). Обратите внимание, конечно, что, поскольку C89 не имеет const
, что const
-qualified версии этих функций недоступны.
Возможно, у вас есть 1-е издание (1978) книги? – pmg