Die printf
und scanf
Familien von Funktionen in C eine Handvoll primitiver Formatbezeich konsumieren, die auf die grundlegenden Datentypen – %d
für int
, %llu
für unsigned long long int
entsprechen usw.Liefert Posix Formatzeichenfolge-Makros für printf/scanf?
Allerdings gibt es eine große Anzahl von standardisiertem Typ Aliase, die man gerne in der Praxis verwenden würde, wie int32fast_t
, und man kann und sollte den zugrunde liegenden Grundtyp nicht kennen müssen. Für die Aliase in stdint.h
gibt der C-Standard dankbar eine Menge von Makros an, um die entsprechenden Formatzeichenfolgen wie PRI32
in inttypes.h
zu generieren.
Gibt es einen analogen Makrosatz für Posix? Posix hat Tonnen von undurchsichtigen Typen wie ssize_t
, pid_t
, rlim_t
, suseconds_t
, usw., die alle Variationen der grundlegenden intgral Typen sind. Wie kann man diese Typen in Formatzeichenfolgen portabel verwenden?
Wenn alles andere fehlschlägt, können Sie immer zu '(u) intmax_t' konvertieren und das ausdrucken – Christoph
Interessante Workarounds - daran habe ich nie gedacht: -S –
(Obwohl ich rückwärts gehen müsste, also' scanf', müsste ich mache einen manuellen Überlaufcheck und finde heraus, was genau zu vergleichen ist.) –