Почему size_t в stddef, а не в stdint?

Мне просто интересно, почему такие вещи, как uintptr_t находятся в stdint.h, но другие типы как size_t находятся в stddef.h? Есть ли логика за этими заголовками?

1 ответ

Рассуждения во многом являются условностью и историей.

<stddef.h> а также size_t существует примерно с 1989 г. в стандарте ANSI языка C (в книге "Язык программирования C" 1978 г. заголовок или size_t, а также sizeof выражения имели тип int - это имело смысл в экосистемах, где "естественный размер слова" процессора был также размером адресов и индексов в системе).

<inttypes.h> а также <stdint.h> были добавлены в стандарт С для пересмотра 1999 года, и их наличие объясняется в Обосновании C99.

<inttypes.h> был получен из одноименного заголовка, найденного в нескольких существующих 64-битных системах. Комитет обсудил другие методы определения целочисленных размеров и других характеристик, но в итоге решил стандартизировать существующую практику, а не вводить новшества в этой области.... <stdint.h> это подмножество <inttypes.h> больше подходит для использования в автономных средах, которые могут не поддерживать форматированные функции ввода-вывода. В размещенных средах, если форматированная цель преобразования не нужна, используйте этот заголовок вместо <inttypes.h> избегает определения такого большего количества макросов.

Другие вопросы по тегам