10
在MSVC++编译器上,可以对特定大小的整数使用__int8
,__int16
,和类似的类型。这对于需要使用低级数据结构(如自定义文件格式,硬件控制数据结构等)的应用程序非常有用。GCC中是否有固定大小的整数?
是否有类似的等价物,我可以在GCC编译器上使用?
在MSVC++编译器上,可以对特定大小的整数使用__int8
,__int16
,和类似的类型。这对于需要使用低级数据结构(如自定义文件格式,硬件控制数据结构等)的应用程序非常有用。GCC中是否有固定大小的整数?
是否有类似的等价物,我可以在GCC编译器上使用?
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"。
stdint.h也是C99的一部分,所以它不再是POSIX特有的。 – puetzk 2008-11-06 18:01:44