Antworten:
Der 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 auch verschiedene andere ganzzahlige Typedefs stdint.h
.
Wenn Sie ohne C99-Umgebung nicht weiterkommen, sollten Sie wahrscheinlich Ihre eigenen Typedefs angeben und die C99 trotzdem verwenden.
Die uint32
und uint64
(dh ohne das _t
Suffix) sind wahrscheinlich anwendungsspezifisch.
stdint.h
benötigt sie alle.
typedef uint32_t Uint32;
in include / SDL_stdinc.h (wenn Sie SDL-Benutzer sind)
Diese ganzzahligen Typen sind alle in definiert stdint.h
stdint.h
wenn Sie den C99-Standard respektieren.
stdint.h
. Dies gibt 0 Treffer zurück : grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.
#include "stdint-gcc.h"
, und wenn Sie diese Datei erfassen , erhalten Sie die Definitionen.
_t
Suffix, wie in der obigen Antwort aufgeführt.
Wenn Sie C99 verwenden, schließen Sie einfach ein stdint.h
. Übrigens gibt es die 64-Bit-Typen, wenn der Prozessor sie unterstützt.
uint128_t
if, __SIZEOF_INT128__
das auf 16 oder höher definiert ist (GCC und kompatible Geräte). Es ist auf x86_64 / amd64-Computern verfügbar, wird jedoch vom Prozessor nicht nativ unterstützt. Nur Cray's haben diese Registergröße, IIRC.
int_leastNN_t
unduint_leastNN_t
fürNN
8, 16, 32 und 64 immer existieren . C99 erlaubt keine Implementierungen ohne einen Integer-Typ von mindestens 64 Bit, dalong long
mindestens so groß sein muss.