Les 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 devraient être définis par le programmeur dans le code de l’application ou s’ils sont définis dans un en-tête de lib standard.

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

Le stdint.h C99 définit ces éléments:

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

Et si l’architecture les supporte:

  • int64_t
  • uint64_t

Il existe également plusieurs autres types d’entiers dans stdint.h .

Si vous êtes bloqué sans environnement C99, vous devriez probablement fournir vos propres typedefs et utiliser les C99 de toute façon.

Les uint32 et uint64 (sans le suffixe _t ) sont probablement spécifiques à une application.

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

Si vous utilisez C99, incluez simplement stdint.h . BTW, les types 64 bits sont là si le processeur les supporte.

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

Il n’y a pas d’en-tête standard – ni de dossier / usr / include / dans Linux qui les définissent sans le “_t”.