Question

Sur le compilateur MSVC ++, on peut utiliser les types __int8, __int16, __int32 et similaires pour les entiers de tailles spécifiques. Ceci est extrêmement utile pour les applications qui doivent travailler avec des structures de données de bas niveau, telles que les formats de fichiers personnalisés, les structures de données de contrôle du matériel, etc.

Existe-t-il un équivalent similaire que je peux utiliser sur le compilateur GCC?

Était-ce utile?

La solution

La norme ISO C, à partir de la norme C99, ajoute l’en-tête de la norme <stdint.h> qui définit ceux-ci:

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

J'utilise ces types tout le temps.

Ces types ne sont définis que si l'implémentation prend en charge les types prédéfinis avec les tailles et les caractéristiques appropriées (comme la plupart des).

(u)int_leastN_t définit également les types portant des noms de forme (u)int_fastN_t (les types ayant au moins la largeur spécifiée) et <=> (le & "; le plus rapide &" ; types qui ont au moins la largeur spécifiée); ces types sont obligatoires.

Si vous utilisez une ancienne implémentation qui ne prend pas en charge <=>, vous pouvez lancer la vôtre. Une de ses implémentations est de " q8 " de Doug Gwyn ; .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top