В чем разница между UInt8
и uint8_t
, или UInt16
и unit16_t
?
Что означает _t
?
В чем разница между UInt8
и uint8_t
, или UInt16
и unit16_t
?
Что означает _t
?
В C99 доступные основные целые типы (те, у которых отсутствует _t), были признаны недостаточными, поскольку их фактические размеры могут различаться в разных системах.
Таким образом, стандарт C99 включает определения нескольких новых целых типов для повышения переносимости программ. Новые типы особенно полезны во встроенных средах.
Все новые типы суффиктируются с помощью _t и гарантированно будут определены равномерно во всех системах.
Более подробную информацию см. в разделе фиксированной ширины целочисленных типов статьи wikipedia по Stdint.
обычно они используются в качестве типов typedef. "_t" обозначает тип данных typedef. мы даем такое имя, чтобы их можно было легко использовать и легко читать по всему файлу или огромной базе кода.
* UInt8 и uint8_t - Char *
typedef unit8_t unsigned char
* UInt16 и unit16_t *
typedef unit16_t unsigned int (в 16-битном компиляторе)
Основное различие заключается в том, что типы uintX_t
являются стандартными C, определенными C99 и позже, а UIntX
- нет. Это влияет на переносимость кода. Код с использованием типов uintX_t
может быть скомпилирован на любом стандартном компиляторе C без каких-либо других зависимостей. Код, который использует UIntX
, с другой стороны, должен либо определять эти типы самостоятельно, либо зависеть от какой-либо библиотеки или фреймворка, который делает это.
Я не думаю, что Objective-C как таковой определяет любые дополнительные целые типы, но вполне может быть, что ваша инфраструктура (Coacoa, OpenStep?) делает это. Если ваш код не имеет смысла вне рамок, используйте то, что идиоматично в контексте структуры. В противном случае попытайтесь придерживаться стандартных типов.