разница между __u8 и uint8_t

может кто-нибудь объяснить разницу между типами uint8_t а также __u8 ?

я знаю это uint8_t определены в stdint.h и доступны в любой системе Unix.

/* Unsigned.  */
typedef unsigned char       uint8_t;
typedef unsigned short int  uint16_t;
...

И если я использую их, то узнается, что я намерен делать.

теперь я наткнулся на __u8 а также __u16 типы. мне кажется, это то же самое.

некоторые из этих типов определены в linux / types.h

#ifdef __CHECKER__
#define __bitwise__ __attribute__((bitwise))
#else
#define __bitwise__
#endif
#ifdef __CHECK_ENDIAN__
#define __bitwise __bitwise__
#else
#define __bitwise
#endif

typedef __u16 __bitwise __le16;
typedef __u16 __bitwise __be16;
typedef __u32 __bitwise __le32;
...

я не нашел __u8 но я все еще могу использовать его, и он ведет себя как uint8_t.

есть ли разница в производительности или потреблении памяти?

Спасибо за помощь 🙂

8

Решение

uintn_t указываются typedefs* по С99 (в <stdint.h>) и C ++ 11 (в <cstdint>) стандарты. Все новые компиляторы предоставляют их, и определение подходящего легко получить для немногих древних, поэтому для переносимости всегда используйте это.

__un специфичные для Linux определения типов, предшествующие этим стандартам. Они не портативны. Двойное подчеркивание используется для обозначения нестандартного определения.

* Для 8, 16, 32 и 64 они должны быть определены если у компилятора есть тип такого размера, могут быть определены дополнительные.

15

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

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

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