Подтвердить что ты не робот

В чем разница между UInt8 и uint8_t

В чем разница между UInt8 и uint8_t, или UInt16 и unit16_t?

Что означает _t?

4b9b3361

Ответ 1

В C99 доступные основные целые типы (те, у которых отсутствует _t), были признаны недостаточными, поскольку их фактические размеры могут различаться в разных системах.

Таким образом, стандарт C99 включает определения нескольких новых целых типов для повышения переносимости программ. Новые типы особенно полезны во встроенных средах.

Все новые типы суффиктируются с помощью _t и гарантированно будут определены равномерно во всех системах.

Более подробную информацию см. в разделе фиксированной ширины целочисленных типов статьи wikipedia по Stdint.

Ответ 2

обычно они используются в качестве типов typedef. "_t" обозначает тип данных typedef. мы даем такое имя, чтобы их можно было легко использовать и легко читать по всему файлу или огромной базе кода.

* UInt8 и uint8_t - Char *

typedef unit8_t unsigned char

* UInt16 и unit16_t *

typedef unit16_t unsigned int (в 16-битном компиляторе)

Ответ 3

Основное различие заключается в том, что типы uintX_t являются стандартными C, определенными C99 и позже, а UIntX - нет. Это влияет на переносимость кода. Код с использованием типов uintX_t может быть скомпилирован на любом стандартном компиляторе C без каких-либо других зависимостей. Код, который использует UIntX, с другой стороны, должен либо определять эти типы самостоятельно, либо зависеть от какой-либо библиотеки или фреймворка, который делает это.

Я не думаю, что Objective-C как таковой определяет любые дополнительные целые типы, но вполне может быть, что ваша инфраструктура (Coacoa, OpenStep?) делает это. Если ваш код не имеет смысла вне рамок, используйте то, что идиоматично в контексте структуры. В противном случае попытайтесь придерживаться стандартных типов.