Bonjour.
Existe-t-il un moyen (y compris avec les nouveaux apports de C++1x) pour travailler en précision indépendante de la machine et du compilateur en C++ sans passer par une bibliothèque spécifique ?
Merci![]()
Bonjour.
Existe-t-il un moyen (y compris avec les nouveaux apports de C++1x) pour travailler en précision indépendante de la machine et du compilateur en C++ sans passer par une bibliothèque spécifique ?
Merci![]()
Pour les entiers : http://en.wikipedia.org/wiki/Stdint.h
Pour les flottants, c'est moins direct : http://arstechnica.com/civis/viewtop...f=20&t=1109210
Salut,
En C++0x, le fichier d'en-tête c'est <cstdint>. stdint.h est un en-tête C (il est vrai introduit lors de la normalisation de 99).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [u]int8_t [u]int16_t [u]int32_t [u]int64_t
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
(effectivement j'aurais dû dire plus clairement qu'il fallait inclure cstdint, non stdint.h, ce n'est pas très en évidence dans mon lien ; j'ai mis ce lien car il n'y a pas de page sur cstdint sur wiki)
Ah merci, je ne le savais pas !
Je n'ai pas encore commencé à regarder les nouveautés du C++1x![]()
Non, non. Il suffit d'un compilateur implémentant TR1
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
@3DArchi : Il faudrait vérifier, mais il me semble que les types que tu cites sont marqué comme optionnel (*) dans le draft, ce qui peut-etre problématique pour la portabilité. Ceux qui sont forcément présent c'est ceux qui imposse un nombres de bytes minimal ou maximal.
Bonsoir,
Ce qui est optionnel c'est la définition du type, pas celle du header il me semble.
Et ces définitions sont aussi optionnelles dans le draft C++0x que j'ai (le 3126 d'août dernier). Et ces définitions sont aussi optionnelles dans la norme C 99 que j'ai. Donc il me semble comprendre que l' "optionnalité" est la même pour <stdint.h>, <cstdint> en TR1 et <cstdint> en C++0x.
D'ailleurs, par optionnel, la norme C précise :Ce qui relativement peu optionnel sur une plateforme de PC standard qui a des grandes chances d'avoir un int8,16 et 32 au -.These types are optional. However, if an implementation provides integer types with widths of 8, 16, 32, or 64 bits, it shall define the corresponding typedef names.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Normal que ce ne soit pas obligatoire puisque ces types n'existent pas sur toutes les plateformes.
Partager