Sempre tenha em mente que 'tamanho' é variável se não for especificado explicitamente, portanto, se você declarar
int i = 10;
Em alguns sistemas, pode resultar em inteiros de 16 bits por compilador e em outros pode resultar em inteiros de 32 bits (ou inteiros de 64 bits em sistemas mais novos).
Em ambientes embarcados, isso pode resultar em resultados estranhos (especialmente ao lidar com E / S mapeada na memória ou pode ser considerada uma situação de array simples), por isso é altamente recomendado especificar variáveis de tamanho fixo. Em sistemas legados, você pode encontrar
typedef short INT16;
typedef int INT32;
typedef long INT64;
A partir do C99, os designers adicionaram o arquivo de cabeçalho stdint.h que essencialmente aproveita typedefs semelhantes.
Em um sistema baseado em Windows, você pode ver entradas no arquivo de cabeçalho stdin.h como
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
Há muito mais nisso, como inteiros de largura mínima ou tipos inteiros de largura exata, acho que não é uma coisa ruim explorar stdint.h para um melhor entendimento.
bool_t
- nunca ouvi falar disso antes. O padrão C é definido_Bool
como um tipo integrado.bool
é definido apenas se você#include <stdbool.h>
(como uma macro que se expande para_Bool
).