J'ai une variable de type size_t
, et je veux l'imprimer à l'aide de printf()
. Ce spécificateur de format dois-je utiliser pour imprimer de façon portable?
Dans la machine 32 bits, %u
me semble bon. J'ai compilé avec g++ -g -W -Wall-Werror -ansi -pedantic, et il n'y avait pas d'avertissement. Mais quand je compile ce code dans machine 64 bits, il produit l'avertissement.
size_t x = <something>;
printf( "size = %u\n", x );
warning: format '%u' expects type 'unsigned int',
but argument 2 has type 'long unsigned int'
L'avertissement s'en va, comme prévu, si je change que d' %lu
.
La question est, comment puis-je écrire le code, afin qu'il compile alerte gratuite sur les versions 32 et 64 bits machines?
Edit: je suppose que la réponse pourrait être "jeté" de la variable en unsigned long
, et les imprimer à l'aide d' %lu
. Qui serait à l'œuvre dans les deux cas. Je suis à la recherche si il y a une autre idée.