Почему он называется «wchar_t», а не просто «wchar»? - PullRequest
24 голосов
/ 22 сентября 2009

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

Ответы [ 3 ]

32 голосов
/ 22 сентября 2009

Это наследие от C, где wchar_t - это typedef, а typedef s имеют этот суффикс в стандартной библиотеке C.

11 голосов
/ 22 сентября 2009

Стандартная библиотека 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".

5 голосов
/ 22 сентября 2009

Я думаю, что это был «этап» в развитии C и C ++. Потребность в некоторых новых типах ощущалась, но добавление новых ключевых слов всегда оспаривается. Некоторый код уже использовал wchar, гораздо меньший код использовал бы wchar_t. Обратите внимание, что size_t и diff_t относятся к одной и той же эпохе.

...