Подтвердить что ты не робот

Почему он называется "wchar_t", а не просто "wchar"?

Я часто задавался вопросом, почему С++ пошел с именем wchar_t вместо простого wchar, и я никогда не мог найти ответ. Поисковые системы не помогают, потому что они думают, что я спрашиваю о типе Windows wchar. Любые идеи?

4b9b3361

Ответ 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 имеют одну и ту же эпоху.