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

Pra*_*mod 11 c portability gcc low-level

在MSVC++编译器,一个可使用__int8,__int16,__int32和类似的类型与特定尺寸的整数.这对于需要使用低级数据结构(如自定义文件格式,硬件控制数据结构等)的应用程序非常有用.

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

Jas*_*oco 29

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
Run Code Online (Sandbox Code Playgroud)

我一直都在使用这些类型.

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

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

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

  • stdint.h也是C99的一部分,所以它不再是特定于posix的. (3认同)