有人可以解释各类型之间的差异uint8_t和__u8?
我知道这uint8_t是在stdint.h中定义的,并且它们在每个unix系统上都可用.
/* Unsigned. */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
...
Run Code Online (Sandbox Code Playgroud)
如果我使用它们可以识别我打算做什么.
现在我偶然发现了__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;
...
Run Code Online (Sandbox Code Playgroud)
我没找到,__u8但我仍然可以使用它,它的行为就像uint8_t.
性能或内存消耗有一些差异吗?
感谢帮助 :)
Jan*_*dec 17
uintn_t是指定的typedef *通过C99(在<stdint.h>)和C++ 11(在<cstdint>)的标准.所有新编译器都提供这些,并且很容易为少数古代编译器提供合适的定义,因此为了便携性,请始终使用它.
__un特定于Linux的typedef早于这些标准.它们不便携.双下划线用于表示非标准定义.
*对于8,16,32和64,如果编译器具有该大小的类型,则应定义它们,可以定义其他类型.