Bonne introduction à <inttypes.h>
Je tiens à recommander l'utilisation de <inttypes.h>
à quelqu'un de le faire printf
avec un mélange de 32/64 bits construit. J'ai essayé de Google une introduction ou une page du tutoriel avec quelques exemples et des instructions d'utilisation, mais je ne pouvais pas en trouver un.
Quelqu'un peut-il recommander une introduction ou un tutoriel pour <inttypes.h>
?
- Que voulez-vous dire exactement par "mixte 32/64 bits construit". L'utilisateur s'attendre à l'utilisation de la "taille fixe" types de
stdint.h
? Est-il quelque chose en particulier manque de Edwin réponse qui a conduit à la prime ajoutée? - Oui, le problème se pose lorsque vous utilisez connu de la largeur des types d'entiers comme
int64_t
sous LP64 où qui correspond àlong
. Le bon spécificateur de format est%ld
dans ce cas, mais si vous construisez sur un système 32 bits, où il correspond àlong long
alors vous avez besoin%lld
. Je m'attendais à une description à la fois motivé l'utilisation de<inttypes.h>
(comme je l'ai brièvement faire dans ce commentaire) ainsi que de fournir des exemples. Quelque chose que je pouvais point pour me sauver d'avoir à expliquer le pourquoi et le comment.
Vous devez vous connecter pour publier un commentaire.
Essayer http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html pour commencer.
Un meilleur exemple de la façon d'utiliser le nouveau portable de mise en forme de macros a été trouvé dans l'avr-libc. J'ai inclus un exemple (à partir du lien) pour illustrer. QNX bibliothèques aussi plus lisible description (si vous n'aimez pas la lecture de la spécification froid), bien que vous avez à faire défiler presque à la fin de la page pour obtenir de la viande de la description.
Remarque que cela utilise la "Chaîne", "Chaîne" implicite de l'opérateur de concaténation de rendement de la chaîne (dans cet exemple)
Une tentative de décomposer la convention de nommage, ce qui semble indiquer:
donc
PRIx8
moyen format de printf instruction de format hexadécimal à huit bits.intptr_t
etuintptr_t
; le C99 et C11 normes de définir le format modificateurz
pour désigner unsize_t
argument (d'où"%zu"
, par exemple), et ils définissentt
pour désigner unptrdiff_t
(d'où"%td"
, par exemple).Je vais toujours à la norme (Lien PDF) pour ces choses; ils ne sont pas trop compliqué une fois que vous trouver les patrons ils sont mis en place dans. La section pertinente est §7.8 Format de conversion de types integer
<inttypes.h>
.HP A une bonne référence sur l'écriture du code portable et ils donnent quelques conseils spécifiques pour l'utilisation de inttypes.h
Écrire Du Code Portable
Je commence toujours à Wikipedia pour en chercher un en-tête.
<inttypes.h>
semble être très problématique sur Wikipédia. La prochaine étape que je ne puis prendre va ce site. Ce site répertorie tous les macro et ne donner qu'un exemple. Vous pouvez aussi consulter ce site, qui vous montre le fichier d'en-tête. Je ne crois pas qu'aucun de ceux qui sont vraiment des tutoriels pour dire, mais ils sont un bon point de départ.