Gibt es feste Größe ganze Zahlen in GCC?
-
06-07-2019 - |
Frage
Auf dem MSVC ++ Compiler kann man die __int8
, __int16
, __int32
und Ähnliche Typen für ganze Zahlen mit bestimmten Größen verwenden. Dies ist sehr nützlich für Anwendungen, die ähnlichen Formate Datei benutzerdefinierter mit Low-Level-Datenstrukturen arbeiten müssen, Daten Hardware-Kontrollstrukturen und dergleichen.
Gibt es eine ähnliche Äquivalent ich auf dem GCC Compiler verwenden kann?
Lösung
ISO-Norm C, mit dem C99-Standard starten, fügt die Standard-Header <stdint.h>
, die diese definiert:
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
Ich benutze diese Typen die ganze Zeit.
Diese Typen definieren nur, wenn die Implementierung vordefinierten Typen mit den entsprechenden Größen und Eigenschaften unterstützt (was die meisten tun).
<stdint.h>
definiert auch Typen mit Namen der Form (u)int_leastN_t
(Typen, die haben mindestens die angegebene Breite) und (u)int_fastN_t
(die „schnellste“ Typen, die zumindest die angegebene Breite haben); Diese Typen sind zwingend notwendig.
Wenn Sie eine alte Implementierung verwenden, die nicht <stdint.h>
unterstützt das, können Sie Ihre eigene Rolle; eine Implementierung ist Doug Gwyn des "Q8" .