Was ist der Unterschied zwischen stdint.h und inttypes.h?
Wenn keiner von ihnen verwendet wird, wird uint64_t nicht erkannt, aber bei beiden handelt es sich um einen definierten Typ.
Antworten:
Siehe den Wikipedia-Artikel für inttypes.h.
Verwenden Sie stdint.h für einen minimalen Satz von Definitionen. Verwenden Sie inttypes.h, wenn Sie auch tragbare Unterstützung für diese in printf, scanf usw. benötigen.
fatal error: inttypes.h: No such file or directory
Das Einschließen dieser Datei ist die "Mindestanforderung", wenn Sie mit den Integer-Typen mit der angegebenen Breite von C99 (dh "int32_t", "uint16_t" usw.) arbeiten möchten. Wenn Sie diese Datei einschließen, erhalten Sie die Definitionen dieser Typen , sodass Sie diese Typen in Deklarationen von Variablen und Funktionen verwenden und Operationen mit diesen Datentypen ausführen können.
Wenn Sie diese Datei einschließen, erhalten Sie alles, was stdint.h bietet (da inttypes.h stdint.h enthält), aber Sie erhalten auch Funktionen zum Ausführen von printf und scanf (und "fprintf", "fscanf" usw.). ) mit diesen Typen auf tragbare Weise. Beispielsweise erhalten Sie das Makro "PRIu16", damit Sie eine Ganzzahl uint16_t wie folgt drucken können:
#include <stdio.h>
#include <inttypes.h>
int main (int argc, char *argv[]) {
// Only requires stdint.h to compile:
uint16_t myvar = 65535;
// Requires inttypes.h to compile:
printf("myvar=%" PRIu16 "\n", myvar);
}
#include
). Zumindest auf meinem Linux-System (GCC 4.5.2 und ähnlich).
#include
s stdint.h.