Ich sehe oft Quellcode mit Typen wie uint32, uint64 und ich frage mich, ob sie vom Programmierer im Anwendungscode definiert werden sollten oder ob sie in einem Standard-lib-Header definiert sind.
Was ist der beste Weg, um diese Typen in meinem Anwendungsquellcode zu haben?
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.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
quelle
stdint.h
implementierungsspezifisch? Siehe auch diese Frage und diese Fragestdint.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.quelle
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.Der Fragesteller fragte tatsächlich nach int16 (etc) und nicht nach (hässlich) int16_t (etc).
Es gibt keine Standard-Header - und auch keine im Linux-Ordner / usr / include /, die sie ohne das "_t" definieren.
quelle