Domanda

Sul compilatore MSVC ++, è possibile utilizzare i tipi __int8, __int16, __int32 e simili per numeri interi con dimensioni specifiche. Ciò è estremamente utile per le applicazioni che devono lavorare con strutture di dati di basso livello come formati di file personalizzati, strutture di dati di controllo hardware e simili.

Esiste un equivalente simile che posso usare sul compilatore GCC?

È stato utile?

Soluzione

Lo standard ISO C, a partire dallo standard C99, aggiunge l'intestazione standard <stdint.h> che li definisce:

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

Uso sempre questi tipi.

Questi tipi sono definiti solo se l'implementazione supporta tipi predefiniti con dimensioni e caratteristiche appropriate (cosa che la maggior parte fa).

(u)int_leastN_t definisce anche i tipi con nomi del modulo (u)int_fastN_t (tipi che hanno almeno la larghezza specificata) e <=> (il " il più veloce " ; tipi che hanno almeno la larghezza specificata); questi tipi sono obbligatori.

Se stai utilizzando un'implementazione precedente che non supporta <=>, puoi crearne una tua; un'implementazione è Doug Gwyn's " q8 " ;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top