IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Précision indépendante de la machine/compilateur ?


Sujet :

Langage C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut Précision indépendante de la machine/compilateur ?
    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

  2. #2
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    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

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    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

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Et boost si tu veux rester totalement portable.

  5. #5
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    (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)

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par Franck Dernoncourt Voir le message
    (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)
    Sauf que si tu compiles pas en 1x cstdint existe pas

  7. #7
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Ah merci, je ne le savais pas !
    Je n'ai pas encore commencé à regarder les nouveautés du C++1x

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Goten Voir le message
    Sauf que si tu compiles pas en 1x cstdint existe pas
    Non, non. Il suffit d'un compilateur implémentant TR1

  9. #9
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    @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.

  10. #10
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Non, non. Il suffit d'un compilateur implémentant TR1
    (u)int(8|16|32|64)_t sont optionnels dans le TR1. (8.22.1)

  11. #11
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    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 :
    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.
    Ce qui relativement peu optionnel sur une plateforme de PC standard qui a des grandes chances d'avoir un int8,16 et 32 au -.

  12. #12
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Bonsoir,

    Ce qui est optionnel c'est la définition du type, pas celle du header il me semble.
    Ouaip. Pour 1x j'ai pas vérifier mais ça m'étonnerait pas si la norme C99 fait pareil.

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Normal que ce ne soit pas obligatoire puisque ces types n'existent pas sur toutes les plateformes.

Discussions similaires

  1. Précision machine lors d'une projection d'un vecteur sur un hyperplan
    Par lejusdorange dans le forum Mathématiques
    Réponses: 1
    Dernier message: 08/10/2014, 11h10
  2. Gestion du temps indépendante de la machine
    Par Daxter06 dans le forum SDL
    Réponses: 4
    Dernier message: 06/12/2009, 00h37
  3. [langage]Compilateur PERL
    Par major2 dans le forum Langage
    Réponses: 4
    Dernier message: 07/02/2007, 21h52
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  5. Compilateur natif ??? Kesako ???
    Par Riko dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 06/08/2002, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo