Tout en recherchant comment faire multi-plateforme printf()
chaînes de format en C (c'est-à-dire, en tenant compte du nombre de bits que je suppose que chaque argument entier à printf()
devrait être) j'ai couru this section of the Wikipedia article on printf()
. L'article traite des options non standard qui peuvent être transmis à printf()
chaînes de format, tels que (ce qui semble être une extension spécifique à Microsoft):Pourquoi les nouvelles options de format printf() n'étaient-elles pas nouvelles (en fonction de la largeur de bit) adoptées dans le cadre de C99?
printf("%I32d\n", my32bitInt);
Il poursuit en disant que:
ISO C99 inclut le fichier inttypes.h en-tête qui inclut un certain nombre de macros à utiliser dans le codage printf indépendant de la plate-forme.
... puis d'énumérer un ensemble de macros qui peuvent être trouvées dans ledit en-tête. En regardant le fichier d'en-tête, pour les utiliser je devrais écrire:
printf("%"PRId32"\n", my32bitInt);
Ma question est: ai-je raté quelque chose? Est-ce vraiment la façon standard de le faire? Si oui, pourquoi? (Bien que je ne sois pas surpris que je n'ai jamais vu de code qui utilise les chaînes de format de cette façon, car il semble si lourd ...)
Un inconvénient: appeler C de l'assemblage. –