Я получаю много критики за использование uint
вместо size_t
, но каждый раз, когда я проверяю набор инструментов, с которым я работаю, получается size_t
определяется как uint
,
Есть ли реализации компилятора, где size_t
на самом деле не uint
? Каковы основания для этой критики?
size_t
это «размер, соответствующий максимально возможному диапазону адресов, который вы можете использовать в аппарате» (или несколько слов для приблизительного эффекта).
Особенно, size_t
будет 64 бита на 64-битной машине и 32 бита в 32-битной системе.
Я предполагаю, что uint
не хватает unsigned int
, что в значительной степени универсально 32 бит (в наши дни некоторые старые системы будут использовать 16-битные целые числа). Так что в 64-битной системе unsigned int
будет по-прежнему 32 бита, хотя объем памяти, строки и т. д. могут быть больше 32-битных — что может вызвать проблемы, если вы пытаетесь использовать uint
для размера.
Других решений пока нет …