Costumo ver o código-fonte usando tipos como uint32, uint64 e me pergunto se eles devem ser definidos pelo programador no código do aplicativo ou se são definidos em um cabeçalho lib padrão.
Qual é a melhor maneira de ter esses tipos no código-fonte do meu aplicativo?
int_leastNN_t
euint_leastNN_t
paraNN
8, 16, 32 e 64 devem sempre existir . C99 não permite implementações sem um tipo de inteiro de pelo menos 64 bits, uma vez quelong long
é necessário ter pelo menos esse tamanho.stdint.h
requer todos eles.typedef uint32_t Uint32;
em include / SDL_stdinc.h (se você for um usuário SDL)Esses tipos inteiros são todos definidos em
stdint.h
fonte
stdint.h
específico da implementação? Veja também esta pergunta e esta perguntastdint.h
se respeitar o padrão C99.stdint.h
. Isso retorna 0 Hits:grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.#include "stdint-gcc.h"
, e grepping esse arquivo produz as definições._t
sufixo, conforme listado na resposta acima.Se você estiver usando o C99, apenas inclua
stdint.h
. BTW, os tipos de 64 bits existem se o processador os suportar.fonte
uint128_t
if__SIZEOF_INT128__
definido para 16 ou superior (GCC e compatíveis). Está disponível em máquinas x86_64 / amd64, mas o processador não oferece suporte nativo. Apenas Cray tem esse tamanho de registro, IIRC.O questionador realmente perguntou sobre int16 (etc) ao invés de (feio) int16_t (etc).
Não há cabeçalhos padrão - nem nenhum na pasta / usr / include / do Linux que os defina sem o "_t".
fonte