Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans
la chaîne de format. Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
comprends mal la remarque, pensant que le uint8_t était promu en
unsigned. Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Le %hh"PRIu8" est idiot, autant se contenter de %hhu et ne pas
utiliser inttypes.h dans ce cas. D'autant qu'en changeant
d'implémentation, je me verrais bien me retrouver avec un %hh"PRIu8"
transformé en %hhhhu.
Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans
la chaîne de format. Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
comprends mal la remarque, pensant que le uint8_t était promu en
unsigned. Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Le %hh"PRIu8" est idiot, autant se contenter de %hhu et ne pas
utiliser inttypes.h dans ce cas. D'autant qu'en changeant
d'implémentation, je me verrais bien me retrouver avec un %hh"PRIu8"
transformé en %hhhhu.
Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans
la chaîne de format. Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
comprends mal la remarque, pensant que le uint8_t était promu en
unsigned. Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Le %hh"PRIu8" est idiot, autant se contenter de %hhu et ne pas
utiliser inttypes.h dans ce cas. D'autant qu'en changeant
d'implémentation, je me verrais bien me retrouver avec un %hh"PRIu8"
transformé en %hhhhu.
Je veux imprimer un uint8_t.
Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Je vérifie, mon PRIu8 est un "u",
je comprends mal la remarque,
pensant que le uint8_t était promu en unsigned.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Je veux imprimer un uint8_t.
Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Je vérifie, mon PRIu8 est un "u",
je comprends mal la remarque,
pensant que le uint8_t était promu en unsigned.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Je veux imprimer un uint8_t.
Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Je vérifie, mon PRIu8 est un "u",
je comprends mal la remarque,
pensant que le uint8_t était promu en unsigned.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Le Fri, 06 Jul 2007 08:21:43 +0200
Pierre Maurette a écrit:
[couic]
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
[couic]
Vous pourriez regarder la sortie du préprocesseur, pour savoir
quelle est la chaîne de format après le remplacement de PRIu8.
Le Fri, 06 Jul 2007 08:21:43 +0200
Pierre Maurette a écrit:
[couic]
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
[couic]
Vous pourriez regarder la sortie du préprocesseur, pour savoir
quelle est la chaîne de format après le remplacement de PRIu8.
Le Fri, 06 Jul 2007 08:21:43 +0200
Pierre Maurette a écrit:
[couic]
argument et la chaîne de format. Je vérifie, mon PRIu8 est un "u", je
[couic]
Vous pourriez regarder la sortie du préprocesseur, pour savoir
quelle est la chaîne de format après le remplacement de PRIu8.
En news:, Pierre Maurette va escriure:Je veux imprimer un uint8_t.
printf("%d", le_uint8);Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Non. « Naturellement, j'ai essayé d'utiliser un PRIu8 dans la chaîne de
format. Le résultat est incorrect. En conséquence, j'ai perdu un temps
précieux pour essayer de me compliquer la vie, et j'ai seulement trouvé un
bogue dans mon implémentation. » serait une description plus correcte...
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Ah ah... A priori, activer cet avertissement est quelque chose que le
développeur de ton <inttypes.h> a omis de faire...Je vérifie, mon PRIu8 est un "u",
Oups !je comprends mal la remarque,
Pourquoi ? elle est pourtant limpide...pensant que le uint8_t était promu en unsigned.
[Réponse à la question ci-dessus]
Eh non ! Un uint8_t (unsigned char, normalement) sera promu en int, ce
dernier type préservant toutes les valeurs possible du type initial (de 0 à
255, ce n'est pas difficile).
Une promotion en unsigned ne respecterait pas la norme C90, et c'est
parfaitement incompatible avec l'existence de PRIu8.
Si tu as un compilo qui a une option permettant de forcer "preserve
unsignedness", il faut absolument la désactivée sur du code d'aujourd'hui,
c'est seulement prévu pour les reliques.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Bouh, c'est horrible.
De plus, imagine que tu prennes une implémentation correcte, où PRIu8 vaut
"d" ou bien vaut "hhu", et tu vas récupérer comme chaîne de format "hhd"
(qui va rajouter un signe là où il n'y en a pas au départ!) ou "hhhhu"
(boum).
En news:mn.31f57d773f04a7b9.31483@laposte.net, Pierre Maurette va escriure:
Je veux imprimer un uint8_t.
printf("%d", le_uint8);
Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Non. « Naturellement, j'ai essayé d'utiliser un PRIu8 dans la chaîne de
format. Le résultat est incorrect. En conséquence, j'ai perdu un temps
précieux pour essayer de me compliquer la vie, et j'ai seulement trouvé un
bogue dans mon implémentation. » serait une description plus correcte...
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Ah ah... A priori, activer cet avertissement est quelque chose que le
développeur de ton <inttypes.h> a omis de faire...
Je vérifie, mon PRIu8 est un "u",
Oups !
je comprends mal la remarque,
Pourquoi ? elle est pourtant limpide...
pensant que le uint8_t était promu en unsigned.
[Réponse à la question ci-dessus]
Eh non ! Un uint8_t (unsigned char, normalement) sera promu en int, ce
dernier type préservant toutes les valeurs possible du type initial (de 0 à
255, ce n'est pas difficile).
Une promotion en unsigned ne respecterait pas la norme C90, et c'est
parfaitement incompatible avec l'existence de PRIu8.
Si tu as un compilo qui a une option permettant de forcer "preserve
unsignedness", il faut absolument la désactivée sur du code d'aujourd'hui,
c'est seulement prévu pour les reliques.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Bouh, c'est horrible.
De plus, imagine que tu prennes une implémentation correcte, où PRIu8 vaut
"d" ou bien vaut "hhu", et tu vas récupérer comme chaîne de format "hhd"
(qui va rajouter un signe là où il n'y en a pas au départ!) ou "hhhhu"
(boum).
En news:, Pierre Maurette va escriure:Je veux imprimer un uint8_t.
printf("%d", le_uint8);Naturellement, j'utilise un PRIu8 dans la chaîne de format.
Non. « Naturellement, j'ai essayé d'utiliser un PRIu8 dans la chaîne de
format. Le résultat est incorrect. En conséquence, j'ai perdu un temps
précieux pour essayer de me compliquer la vie, et j'ai seulement trouvé un
bogue dans mon implémentation. » serait une description plus correcte...
Je compile en allumant les warnings et remarques
sous iCC 10.0, qui semble trouver une incompatibilté entre mon
argument et la chaîne de format.
Ah ah... A priori, activer cet avertissement est quelque chose que le
développeur de ton <inttypes.h> a omis de faire...Je vérifie, mon PRIu8 est un "u",
Oups !je comprends mal la remarque,
Pourquoi ? elle est pourtant limpide...pensant que le uint8_t était promu en unsigned.
[Réponse à la question ci-dessus]
Eh non ! Un uint8_t (unsigned char, normalement) sera promu en int, ce
dernier type préservant toutes les valeurs possible du type initial (de 0 à
255, ce n'est pas difficile).
Une promotion en unsigned ne respecterait pas la norme C90, et c'est
parfaitement incompatible avec l'existence de PRIu8.
Si tu as un compilo qui a une option permettant de forcer "preserve
unsignedness", il faut absolument la désactivée sur du code d'aujourd'hui,
c'est seulement prévu pour les reliques.
Je mets un %hhu, ou un %hh"PRIu8", plus de remarque.
Bouh, c'est horrible.
De plus, imagine que tu prennes une implémentation correcte, où PRIu8 vaut
"d" ou bien vaut "hhu", et tu vas récupérer comme chaîne de format "hhd"
(qui va rajouter un signe là où il n'y en a pas au départ!) ou "hhhhu"
(boum).
En fait, je rencontre de vrais problèmes de chaînes de format -
contrairement à celui-ci qui n'en est pas un - pour compiler sur
plusieurs plateformes. Bon, beaucoup viennent d'un vieux mingw que
j'ai sous Windows.
En fait, je rencontre de vrais problèmes de chaînes de format -
contrairement à celui-ci qui n'en est pas un - pour compiler sur
plusieurs plateformes. Bon, beaucoup viennent d'un vieux mingw que
j'ai sous Windows.
En fait, je rencontre de vrais problèmes de chaînes de format -
contrairement à celui-ci qui n'en est pas un - pour compiler sur
plusieurs plateformes. Bon, beaucoup viennent d'un vieux mingw que
j'ai sous Windows.
Bonjour,
Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans la
chaîne de format.
Bonjour,
Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans la
chaîne de format.
Bonjour,
Je veux imprimer un uint8_t. Naturellement, j'utilise un PRIu8 dans la
chaîne de format.
Auriez-vous une référence de documentation complète et claire sur
ce sujet (les [u]int[nn]_t et les formats PRI*) associés ?
Les docs classiques (K&R, Dax, Braquelaire) n'en parlent pas.
Une approche empirique : man inttypes.h sur certains systèmes (pas
sur gnu-linux/gcc), Google, et la lecture directe de inttypes.h,
permettent de se débrouiller, mais j'apprécierais d'avoir une vue plus
large : origine, disponibilité, portabilité, alternatives, ...
= 500, on est tranquille. #Inclure <inttypes.h> et utiliser [u]int{NN}_t a
de bonnes chances de marcher sur une plateforme *nix. Sinon, cela dépend, en
Auriez-vous une référence de documentation complète et claire sur
ce sujet (les [u]int[nn]_t et les formats PRI*) associés ?
Les docs classiques (K&R, Dax, Braquelaire) n'en parlent pas.
Une approche empirique : man inttypes.h sur certains systèmes (pas
sur gnu-linux/gcc), Google, et la lecture directe de inttypes.h,
permettent de se débrouiller, mais j'apprécierais d'avoir une vue plus
large : origine, disponibilité, portabilité, alternatives, ...
= 500, on est tranquille. #Inclure <inttypes.h> et utiliser [u]int{NN}_t a
de bonnes chances de marcher sur une plateforme *nix. Sinon, cela dépend, en
Auriez-vous une référence de documentation complète et claire sur
ce sujet (les [u]int[nn]_t et les formats PRI*) associés ?
Les docs classiques (K&R, Dax, Braquelaire) n'en parlent pas.
Une approche empirique : man inttypes.h sur certains systèmes (pas
sur gnu-linux/gcc), Google, et la lecture directe de inttypes.h,
permettent de se débrouiller, mais j'apprécierais d'avoir une vue plus
large : origine, disponibilité, portabilité, alternatives, ...
= 500, on est tranquille. #Inclure <inttypes.h> et utiliser [u]int{NN}_t a
de bonnes chances de marcher sur une plateforme *nix. Sinon, cela dépend, en