не должно иметь typedef для него.
давнего времени я считал, что решение большинства разработчиков и поставщиков систем должно быть простым.int
32-битные даже на 64-битных машинах своего рода целесообразные бородавки. С современными типами фиксированных размеров C99 (int32_t
а такжеuint32_t
и т. д.) необходимость в наличии стандартного целочисленного типа каждого размера 8, 16, 32 и 64 в основном исчезает, и кажется, чтоint
с таким же успехом может быть сделано 64-битным.
Однако самое большое реальное следствие размера равниныint
в C исходит из того факта, что C по существу не имеет арифметику на меньше чемint
типы. В частности, еслиint
больше, чем 32-битный, результат любой арифметики наuint32_t
значения имеет типsigned int
, что довольно тревожно.
Это хорошая причина, чтобы сохранитьint
навсегда зафиксирован на 32-битной в реальных реализациях? Я склоняюсь к тому, чтобы сказать да. Мне кажется, что может быть огромный класс использованияuint32_t
который сломается когдаint
больше 32 бит Даже применение унарного минуса или побитового оператора дополнения становится опасным, если вы не приведете обратно кuint32_t
.
Конечно, те же вопросы относятся кuint16_t
а такжеuint8_t
на текущих реализациях, но все, кажется, знают и привыкли рассматривать их как «меньше, чемint
типы