I\'m currently using a explicit cast to long and using %ld for printing pid_t, is there a specifier such as %z for size_t
With integer types lacking a matching format specifier as in the case of pid_t, yet with known sign-ness1, cast to widest matching signed type and print.
If sign-ness is not known for other system type, cast to the widest unsigned type or alternate opinion
pid_t pid = foo();
// C99
#include
printf("pid = %jd\n", (intmax_t) pid);
Or
// C99
#include
#include
printf("pid = %" PRIdMAX "\n", (intmax_t) pid);
Or
// pre-C99
pid_t pid = foo();
printf("pid = %ld\n", (long) pid);
1
The pid_t data type is a signed integer type which is capable of representing a process ID.