W printf
i scanf
rodziny funkcji w C zużywają garść prymitywnych formacie specyfikatorami które odpowiadają podstawowych typów danych – %d
dla int
, %llu
dla unsigned long long int
itdCzy Posix dostarcza makra łańcuchów formatów dla printf/scanf?
Jednakże, istnieje duża liczba standardowego typu aliasy, które chciałoby się używać w praktyce, takie jak int32fast_t
, i nie można i nie należy znać podstawowego podstawowego typu. W przypadku aliasów w stdint.h
, standard C z wdzięcznością określa zestaw makr do generowania odpowiednich ciągów formatów, takich jak PRI32
, w inttypes.h
.
Czy istnieje analogiczny zestaw makr dla Posix? Posix ma mnóstwo nieprzezroczystych typów, takich jak ssize_t
, pid_t
, rlim_t
, suseconds_t
itd., Które są odmianami podstawowych typów intgral. W jaki sposób można przenośnie używać tych typów w ciągach formatów?
jeśli wszystko inne zawiedzie, zawsze możesz przekonwertować na '(u) intmax_t' i wydrukować to – Christoph
Interesujące rozwiązania - nigdy o tym nie myślałem: -S –
(Chociaż cofnięcie, czyli' scanf', musiałbym wykonaj ręczne sprawdzenie przepełnienia i wymyśl, co dokładnie porównać.) –