Gardez toujours à l'esprit que 'size' est variable si elle n'est pas explicitement spécifiée, donc si vous déclarez
int i = 10;
Sur certains systèmes, cela peut entraîner un entier de 16 bits par le compilateur et sur d'autres, il peut en résulter un entier de 32 bits (ou un entier de 64 bits sur les systèmes plus récents).
Dans les environnements embarqués, cela peut aboutir à des résultats étranges (en particulier lors de la gestion des E / S mappées en mémoire ou peut être considéré comme une situation de tableau simple), il est donc fortement recommandé de spécifier des variables de taille fixe. Dans les anciens systèmes, vous pouvez rencontrer
typedef short INT16;
typedef int INT32;
typedef long INT64;
À partir de C99, les concepteurs ont ajouté le fichier d'en-tête stdint.h qui exploite essentiellement des typedefs similaires.
Sur un système basé sur Windows, vous pouvez voir des entrées dans le fichier d'en-tête stdin.h comme
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
Il y a beaucoup plus à cela, comme les types d'entiers de largeur minimale ou de largeur exacte, je pense que ce n'est pas une mauvaise chose d'explorer stdint.h pour une meilleure compréhension.
bool_t
- je n'en ai jamais entendu parler auparavant. La norme C définit_Bool
comme un type intégré.bool
est défini uniquement si vous#include <stdbool.h>
(comme une macro qui se développe_Bool
).