Когда / где / почему size_t не является uint?

Я получаю много критики за использование uint вместо size_t, но каждый раз, когда я проверяю набор инструментов, с которым я работаю, получается size_t определяется как uint,

Есть ли реализации компилятора, где size_t на самом деле не uint? Каковы основания для этой критики?

1

Решение

size_t это «размер, соответствующий максимально возможному диапазону адресов, который вы можете использовать в аппарате» (или несколько слов для приблизительного эффекта).

Особенно, size_t будет 64 бита на 64-битной машине и 32 бита в 32-битной системе.

Я предполагаю, что uint не хватает unsigned int, что в значительной степени универсально 32 бит (в наши дни некоторые старые системы будут использовать 16-битные целые числа). Так что в 64-битной системе unsigned int будет по-прежнему 32 бита, хотя объем памяти, строки и т. д. могут быть больше 32-битных — что может вызвать проблемы, если вы пытаетесь использовать uint для размера.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]