web-dev-qa-db-fra.com

Des types tels que uint32, int32, uint64, int64 sont-ils définis dans un en-tête stdlib?

Je vois souvent du code source utilisant des types tels que uint32, uint64 et je me demande s'ils doivent être définis par le programmeur dans le code de l'application ou s'ils sont définis dans un en-tête de bibliothèque standard.

Quelle est la meilleure façon d'avoir ces types sur le code source de mon application?

87
philix

Le C99 stdint.h définit ceux-ci:

  • int8_t
  • int16_t
  • int32_t
  • uint8_t
  • uint16_t
  • uint32_t

Et si l'architecture les supporte:

  • int64_t
  • uint64_t

Il existe divers autres types entiers dans stdint.h ainsi que.

Si vous êtes bloqué sans environnement C99, vous devriez probablement fournir vos propres polices de caractères et utiliser celles de C99 de toute façon.

Le uint32 et uint64 (c'est-à-dire sans le _t suffixe) sont probablement spécifiques à une application.

123
mu is too short

Ces types entiers sont tous définis dans stdint.h

10
GWW

Si vous utilisez C99, n'incluez que stdint.h. BTW, les types 64 bits sont là ssi le processeur les prend en charge.

2
BiGYaN

Le questionneur a en fait posé des questions sur int16 (etc) plutôt que sur (laid) int16_t (etc).

Il n'y a pas d'en-tête standard - ni de dossier dans le dossier/usr/include/de Linux qui les définit sans le "_t".

0
Steve