12

在 MSVC++ 编译器上,可以对具有特定大小的整数使用__int8__int16__int32类似类型。这对于需要使用低级数据结构(如自定义文件格式、硬件控制数据结构等)的应用程序非常有用。

我可以在 GCC 编译器上使用类似的等效项吗?

4

1 回答 1

30

ISO 标准 C,从 C99 标准开始,添加了<stdint.h>定义这些的标准头:

uint8_t  - unsigned 8 bit
int8_t   - signed 8 bit
uint16_t - unsigned 16 bit
int16_t  - signed 16 bit
uint32_t - unsigned 32 bit
int32_t  - signed 32 bit
uint64_t - unsigned 64 bit
int64_t  - signed 64 bit

我一直使用这些类型。

仅当实现支持具有适当大小和特征的预定义类型(大多数都支持)时,才定义这些类型。

<stdint.h>还定义了具有形式名称的(u)int_leastN_t类型(至少具有指定宽度的类型)和(u)int_fastN_t(至少具有指定宽度的“最快”类型);这些类型是强制性的。

如果您使用的是不支持的旧实现<stdint.h>,您可以自己滚动;一种实现是Doug Gwyn 的 "q8"

于 2008-11-06T17:56:31.797 回答