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?

War es hilfreich?

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" .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top