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.
Ich bin zu stackoverflow gekommen, um den Unterschied zwischen stdint.h und inttypes.h zu erfahren, nachdem ich den Wiki-Artikel gelesen habe, der mir sagt, dass (u) intN_t in beiden verfügbar ist. Was ist der Unterschied? Welches soll ich einschließen?
Dave
7
<inttypes.h> enthält <stdint.h> und fügt einige printf-Makros hinzu. Siehe Mikko Östlunds Antwort unten.
Edward Falk
Ich bekomme:fatal error: inttypes.h: No such file or directory
m4l490n
150
stdint.h
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.
inttypes.h
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>intmain(int argc, char *argv[]){
// Only requires stdint.h to compile:uint16_t myvar = 65535;
// Requires inttypes.h to compile:printf("myvar=%" PRIu16 "\n", myvar);
}
Danke, das war eine großartige Antwort (obwohl ich die ursprüngliche Frage nicht gestellt habe!). Um Mikkos Antwort zu ergänzen, kopiert inttypes.h in stdint.h (über den Präprozessor #include). Zumindest auf meinem Linux-System (GCC 4.5.2 und ähnlich).
#include
s stdint.h.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.
quelle
fatal error: inttypes.h: No such file or directory
stdint.h
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.
inttypes.h
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); }
quelle
#include
). Zumindest auf meinem Linux-System (GCC 4.5.2 und ähnlich).