Когда использовать size_t vs uint32_t? Я видел метод в проекте, который получает параметр length (типа uint32_t), чтобы обозначить длину байтовых данных для обработки, и метод предназначен для вычисления CRC полученных байтовых данных. Тип параметра позже был реорганизован на size_t. Есть ли в этом случае техническое превосходство в использовании size_t?Когда использовать size_t vs uint32_t?
например.
- (uint16_t)calculateCRC16FromBytes:(unsigned char *)bytes length:(uint32_t)length;
- (uint16_t)calculateCRC16FromBytes:(unsigned char *)bytes length:(size_t)length;
AFAICS, не было бы веской причины для этого. Определенный CRC определяется для работы с определенным размером слова, и это именно то, что 'uint32_t'. Из семантической точки зрения 'size_t' не соответствует явному размеру. –
Я предполагаю, что это потому, что вы хотите, чтобы 'size_t' был самым большим типом данных, который платформа может поддерживать изначально (т. Е. Вы хотите, чтобы большой диапазон оставался быстрым). Например. на 32-битной системе вы хотите, чтобы это было 32 бита, и в 64-битной системе вы хотели бы, чтобы это было 64 бита, но вы бы не хотели, чтобы 'size_t' был 64-разрядным типом на 32-битной системы (или 'uint32_t' на 16-битной системе). В противном случае, вероятно, это просто хороший индикатор, показывающий, что этот параметр представляет собой некоторую величину размера. Я не знаю, почему они специально решили использовать здесь 'size_t'. – tangrs
Спасибо всем - я добавил более подробную информацию. – Boon