Я часто задавался вопросом, почему С++ пошел с именем wchar_t
вместо простого wchar
, и я никогда не мог найти ответ. Поисковые системы не помогают, потому что они думают, что я спрашиваю о типе Windows wchar
. Любые идеи?
Почему он называется "wchar_t", а не просто "wchar"?
Ответ 1
Это наследие от C, где wchar_t
является typedef
, а typedef
имеет этот суффикс в стандартной библиотеке C.
Ответ 2
Стандартная библиотека C использовала суффикс _t
для многих типов, определенных в библиотеке (в отличие от типов, которые запекаются в C как ключевые слова).
Например, там time_t
, wchar_t
, uint32_t
, size_t
, ptrdiff_t
, div_t
и т.д.
Интерес (для меня в любом случае) заключается в том, что стандарт C не резервирует имена этой формы для себя. В стандарте C указывается, что имена, начинающиеся с "str
", "mem
" и несколько других префиксов, могут быть добавлены к стандарту в будущем, но это не то же самое с именами, которые заканчиваются "_t
" - за исключением того, что имена, начинающиеся с "int
" или "uint
" и заканчивающиеся на "_t
" , могут быть добавлены в <stdint.h>
в будущем. Однако POSIX сохраняет все имена, заканчивающиеся на "_t
" .
Ответ 3
Я думаю, что это была "фаза" в росте C и С++. Потребность в некоторых новых типах ощущалась, но добавление новых ключевых слов всегда оспаривалось. В некотором коде уже использовался wchar
, гораздо меньше кода использовал бы wchar_t
. Обратите внимание, что size_t
и diff_t
имеют одну и ту же эпоху.