Frage Sind Typen wie uint32, int32, uint64, int64 in einem beliebigen stdlib-Header definiert?


Ich sehe Quellcode oft mit Typen wie uint32, uint64 und frage mich, ob sie vom Programmierer im Anwendungscode definiert werden sollen oder ob sie in einem Standard-Header definiert sind.

Was ist der beste Weg, diese Typen in meinen Anwendungsquellcode aufzunehmen?


76
2018-05-16 04:45


Ursprung


Antworten:


Die C99 stdint.h definiert diese:

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

Und wenn die Architektur sie unterstützt:

  • int64_t
  • uint64_t

Es gibt verschiedene andere Integer Typedefs in stdint.h auch.

Wenn Sie ohne eine C99-Umgebung stecken bleiben, sollten Sie wahrscheinlich Ihre eigenen Typedefs angeben und trotzdem die C99-Dateien verwenden.

Das uint32 und uint64 (d. h. ohne die _t Suffix) sind wahrscheinlich anwendungsspezifisch.


110
2018-05-16 05:14



Diese Integertypen sind alle in definiert stdint.h


10
2018-05-16 04:47



Wenn du C99 verwendest, gib einfach ein stdint.h. BTW, die 64bit-Typen sind da, wenn der Prozessor sie unterstützt.


2
2018-05-16 06:19



Der Fragesteller fragte tatsächlich nach int16 (etc) und nicht nach (hässlich) int16_t (etc).

Es gibt keine Standard-Header - noch irgendwelche in Linux / usr / include / Ordner, die sie ohne "_t" definieren.


-1
2018-04-06 14:05