Existem inteiros de tamanho fixo em GCC?
-
06-07-2019 - |
Pergunta
No compilador MSVC ++, pode-se usar o __int8
, __int16
, __int32
e tipos semelhantes de números inteiros com tamanhos específicos. Isto é extremamente útil para aplicações que necessitam de trabalho com estruturas de dados de baixo nível, como formatos de arquivo de costume, estruturas de dados de controle de hardware e assim por diante.
Existe um equivalente semelhante eu posso usar no compilador GCC?
Solução
norma ISO C, começando com o padrão C99, adiciona o <stdint.h>
cabeçalho padrão que define estes:
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
Eu uso estes tipos o tempo todo.
Estes tipos são só definiu se os suportes de implementação predefinidos tipos com os tamanhos e características adequadas (que a maioria).
<stdint.h>
também define tipos com nomes do (u)int_leastN_t
forma (tipos que têm , pelo menos a largura especificada) e (u)int_fastN_t
(os tipos "mais rápido" que têm pelo menos a largura especificada); estes tipos são de preenchimento obrigatório.
Se você estiver usando uma implementação antiga que não suporta <stdint.h>
, você pode rolar o seu próprio; uma implementação é "Q8" de Doug Gwyn.