2008-11-06 39 views
10

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

是否有类似的等价物,我可以在GCC编译器上使用?

回答

27

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_fastN_t(“最快”类型的具有至少指定的宽度)的形式(u)int_leastN_t(具有至少指定宽度的类型)的名称类型;这些类型是强制性的。

如果您使用的旧版本不支持<stdint.h>,那么您可以推出自己的版本;一个实现是Doug Gwyn's "q8"

+3

stdint.h也是C99的一部分,所以它不再是POSIX特有的。 – puetzk 2008-11-06 18:01:44