2008-11-06 80 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