J'ai du code C ++ qui imprime un size_t
:
size_t a;
printf("%lu", a);
J'aimerais que cela compile sans avertissements sur les architectures 32 et 64 bits.
Si c'était C99, je pourrais utiliser printf("%z", a);
. Mais AFAICT %z
n'existe dans aucun dialecte C ++ standard. Alors à la place, je dois faire
printf("%lu", (unsigned long) a);
ce qui est vraiment moche.
S'il n'y a pas de fonction d'impression size_t
intégrée dans le langage, je me demande s'il est possible d'écrire un wrapper printf ou quelque chose de ce genre qui insérera les moulages appropriés sursize_t
s afin d'éliminer les faux avertissements du compilateur tout en conservant les bons.
Des idées?
Edit Pour clarifier pourquoi j'utilise printf: j'ai une base de code relativement grande que je nettoie. Il utilise des wrappers printf pour faire des choses comme "écrire un avertissement, le consigner dans un fichier et éventuellement quitter le code avec une erreur". Je pourrais peut-être rassembler suffisamment de C ++ - foo pour le faire avec un wrapper cout, mais je préfère ne pas changer chaque appel warn () dans le programme juste pour me débarrasser de certains avertissements du compilateur.