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 :

respects de la norme C++


Sujet :

Langage C++

Vue hybride

Kaamui respects de la norme C++ 05/12/2011, 16h32
3DArchi Salut, Le standard est le... 05/12/2011, 20h39
Kaamui Merci énormément pour tes... 06/12/2011, 08h44
ManusDei Pour compiler le C avec gcc... 06/12/2011, 09h02
Kaamui Bonjour, oui je connais... 06/12/2011, 09h15
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut respects de la norme C++
    Bonjour,

    je voudrais savoir si les instructions suivantes respectent le standard C++ ou s'il elles sont juste tolérées (d'ailleurs, doit-on considérer que ce qui est toléré par un compilateur et un EDI qui respecte le standard C++ respecte le standard C++ ou que ce dernier ne fait que le tolérer, même s'il ne respecte pas le standard ?)

    exemples :
    --
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct toto
    {
    [...]
    }titi;
    (alors qu'en C++ la définition de type d'un type structuré est inutile)

    -un réflexe de C-ien (utilisation de malloc au lieu de new par exemple)

    -des conversions implicites qui passent à la compilation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned short i=0;
    short j=i;
    -des déclarations sans définition : je suis en train de lire le standard ici mais j'ai un peu de mal à digérer. Sinon, est-ce une source fiable?

    Merci d'avance pour vos éclaircissements.

    Cordialement,

  2. #2
    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,
    Citation Envoyé par Kaamui Voir le message
    je voudrais savoir si les instructions suivantes respectent le standard C++ ou s'il elles sont juste tolérées (d'ailleurs, doit-on considérer que ce qui est toléré par un compilateur et un EDI qui respecte le standard C++ respecte le standard C++ ou que ce dernier ne fait que le tolérer, même s'il ne respecte pas le standard ?)
    Le standard est le standard. Qu'un ou plusieurs compilateurs très présents sur le marché proposent des extensions ou soient tolérantes à des constructions ne doit pas être un prétexte à violer le standard.

    Citation Envoyé par Kaamui Voir le message
    Je n'ai pas vérifié, je ne peux te répondre pour cet exemple.

    Citation Envoyé par Kaamui Voir le message
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct toto
    {
    [...]
    }titi;
    (alors qu'en C++ la définition de type d'un type structuré est inutile)
    Disons que le typedef en C++ n'est plus nécessaire pour pouvoir utiliser le nom de la structure (ou de l'énumération ou de l'union). Mais la construction reste valide pour créer un synonyme au type. On trouve encore beaucoup de typedef dans du code très C++.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<class T> struct some_container
    {
    typedef T type;
    typedef T& reference;
    };
    Citation Envoyé par Kaamui Voir le message
    -un réflexe de C-ien (utilisation de malloc au lieu de new par exemple)
    Ici, pareil que précédemment. Rien ne t'interdit d'utiliser malloc dans ton code. C'est une construction valide du point de vue du standard. En revanche, il faut bien comprendre que cela ne risque pas du tout de faire ce que tu crois. new (peut) alloue de la mémoire MAIS SURTOUT DOIT appeller un constructeur. malloc ne fait que de l'allocation. malloc sur une classe donnera donc un comportement indéfini (je n'ai pas vérifié pour l'UD, mais je pense. En tout état de cause, quelque chose d'invalide).

    Citation Envoyé par Kaamui Voir le message
    -des conversions implicites qui passent à la compilation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned short i=0;
    short j=i;
    -des déclarations sans définition :
    Attention. Certaines conversions sont tout à fait valides. L'exemple que tu donnes est dans ce cas : la conversion d'un unsigned vers un signed est valide dès lors que le type signé peut contenir la valeur effective de ta variable non signée. Ce serait plus problématique si tu avais (pour un short sur 2 octets):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       unsigned short i = 32768;
       short j = i;
    Citation Envoyé par Kaamui Voir le message
    je suis en train de lire le standard ici mais j'ai un peu de mal à digérer. Sinon, est-ce une source fiable?
    Il m'a l'air de dater un peu.

  3. #3
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Merci énormément pour tes réponses, ça me permet d'y voir plus clair

    Encore merci d'avoir pris le temps de me répondre, c'est ce qu'on appelle l'altruisme il me semble

    Aurais-tu un conseil de lecture (gratuite) d'un standard plus fiable ou plus récent ? Si non, merci déjà pour les réponses que tu m'as déjà apporté.


    Cordialement,

  4. #4
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Pour compiler le C avec gcc tu as les options -ansi, -pedantic, -std qui permettent (dans une certaines limite) de choisir ton standard.

    Regarde si il n'existe pas d'équivalent pour ton compilateur C++.

  5. #5
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Bonjour,

    oui je connais ces options, mais je n'ai pas de problème de compilation ou de choix de standard, c'était purement informatif, je cherche à "apprendre" le véritable standard C++, donc je me demandais si toutes les instructions tolérables étaient respectueuse du standard ou non.

    Mais merci quand même pour les infos je ne connaissais pas l'option ansi.

    Saurais-tu où je peux trouver un exemplaire du standard (gratuit et en ligne) ?

    Cordialement,

  6. #6
    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 Kaamui Voir le message
    Saurais-tu où je peux trouver un exemplaire du standard (gratuit et en ligne) ?
    Le standard est payant. Donc en tapant sur google 'C++ standard pdf' tu n'obtiendras que des ressources piratées violant le droit de propriété et susceptibles de t'attirer des ennuis.
    Maintenant, sur le site http://www.open-std.org/jtc1/sc22/wg21/ tu peux trouver le dernier draft publique de C++11. Il date de février 2011, donc il y a des choses qui ont changées depuis. Mais il devrait plus ressembler à la mouture finale que celui de 2005.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Respect de la norme PSR-2 avec PHP Code Sniffer
    Par Jiraiya42 dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2014, 23h20
  2. [Joomla!] CMS Accessible à tous (norme W3C respecté)
    Par kurkaine dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/03/2007, 12h39
  3. [WinDev 10] Respect des normes de codage
    Par raoudha dans le forum WinDev
    Réponses: 3
    Dernier message: 16/02/2007, 15h06
  4. Vérifier si une photo de visage respecte les normes d'ICAO
    Par zidenne dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 09/12/2005, 08h29

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