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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top