2008-11-06 17 views
10

En el compilador MSVC++, se puede usar el __int8, __int16, y tipos similares para enteros con tamaños específicos. Esto es extremadamente útil para aplicaciones que necesitan trabajar con estructuras de datos de bajo nivel como formatos de archivo personalizados, estructuras de datos de control de hardware y similares.¿Hay enteros de tamaño fijo en GCC?

¿Existe un equivalente similar que pueda usar en el compilador de GCC?

Respuesta

27

ISO estándar C, comenzando con el estándar C99, añade la cabecera estándar <stdint.h> que define los siguientes:

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 

utilizo estos tipos todo el tiempo.

Estos tipos se definen solo si la implementación admite tipos predefinidos con los tamaños y características adecuados (que la mayoría lo hace).

<stdint.h> define también tipos con nombres de la forma (u)int_leastN_t (tipos que tienen al menos la anchura especificada) y (u)int_fastN_t (los tipos "más rápido" que tienen al menos la anchura especificada); estos tipos son obligatorios

Si está utilizando una implementación anterior que no es compatible con <stdint.h>, puede rodar la suya; una implementación es Doug Gwyn's "q8".

+3

stdint.h también es parte de C99, por lo que ya no es específico de posix. – puetzk

+0

Ya veo. Recuerdo vagamente haber visto un atributo del compilador que hace algo similar ... – Pramod

+0

Oh, eso es bueno saber, gracias puetzk :) –

Cuestiones relacionadas