GCC中是否有固定大小的整数?

时间:2008-11-06 17:52:03

标签: c gcc portability low-level

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

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

1 个答案:

答案 0 :(得分:28)

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's "q8"