J'utilise actuellement une distribution explicite trop longue et j'utilise %ld
pour l'impression pid_t
, existe-t-il un spécificateur tel que %z
pour size_t
pour pid_t
?
Sinon, quelle est la meilleure façon d'imprimer pid_t
?
Il n'y a pas un tel spécificateur. Je pense que ce que vous faites est très bien… vous pouvez utiliser un type int encore plus large, mais il n'y a pas d'implémentation où pid_t
est plus grand que long
et ne le sera probablement jamais.
Avec les types entiers sans spécificateur de format correspondant comme dans le cas de pid_t
, mais avec une signature connue, transtypée en caractères signés et en caractères d'imprimerie correspondants les plus larges. Si la signature n'est pas connue, transtypez le type non signé le plus large.
pid_t pid = foo();
// C99
#include <stdint.h>
printf("pid = %jd\n", (intmax_t) pid);
Ou
// C99
#include <stdint.h>
#include <inttypes.h>
printf("pid = %" PRIdMAX "\n", (intmax_t) pid);
Ou
// pre-C99
pid_t pid = foo();
printf("pid = %ld\n", (long) pid);