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

C Discussion :

comment connaitre la norme utilisee par le compilateur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut comment connaitre la norme utilisee par le compilateur
    Bonjour,

    Novice (je l'admet) dans la programmation en C, je me suis potasse toutes sortes de bouquins (le langage C de willms et gerhard, un cours de la fac de Luminy...) est une question revient sans cesse:

    Comment connaitre la norme utilisee par son compilateur?

    Je suis sous MS Visual C++ 6.0 actuellement et egalement sous dev-c++.
    Je pose cette question car j'ai pu lire qu'il existait des diffrences entre les normes ansi/iso et l'originale.

  2. #2
    Membre chevronné
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par défaut
    Tu va sur le site de DevCpp et tu trouves :
    Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2
    Donc il utilise GCC 3.4.2 (Mingw étant le portage de GCC sous windows).
    Maintenant tu va sur le site de GCC et la tu trouves le Manual de GCC 3.4.2, tu va au paragraphe 2 "Languages Supported by GCC" et tu trouves ton information.
    GCC supports three versions of the C standard, although support for the most recent
    version is not yet complete.
    The original ANSI C standard...etc..
    Bref c'est fait en 2 minutes, pourvu qu'un veuille bien chercher :/

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut Merci
    Merci pour ce cours accelere.

    Mais ne soit pas trop attif dans ton jugement et surtout sur des commentaires du type:
    "pourvu qu'un veuille bien chercher".
    Cela n'apporte rien et tu ne peux en aucun juger de mes recherches.

    Merci de toute maniere pour ta reponse rapide et precise

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par babycrash
    Comment connaitre la norme utilisee par son compilateur?
    Si le compilateur supporte la norme C99, la macro interne __STDC_VERSION__ est définie. SI elle n'est pas définie, c'est qu'il ne supporte pas C99.

    Citation Envoyé par C99
    6.10.8 Predefined macro names
    1 The following macro names148) shall be defined by the implementation:
    <...>
    _ _STDC_ _ The integer constant 1, intended to indicate a conforming implementation.
    _ _STDC_HOSTED_ _ The integer constant 1 if the implementation is a hosted
    implementation or the integer constant 0 if it is not.
    _ _STDC_VERSION_ _ The integer constant 199901L.150)
    <...>
    --------------------------------------------------
    150) This macro was not specified in ISO/IEC 9899:1990 and was specified as 199409L in
    ISO/IEC 9899/AMD1:1995. The intention is that this will remain an integer constant of type long
    int that is increased with each revision of this International Standard.
    Je ferais ça comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <stdio.h>
     
    int main()
    {
     
    #if defined (__STDC__)
     #if defined (__STDC_VERSION__)
      #if __STDC_VERSION__ == 199409L
       printf ("C95\n");
      #elif __STDC_VERSION__ == 199901L
       printf ("C99\n");
      #endif
     #else
       printf ("C90 or C99 in C90 mode\n");
     #endif
    #else
       printf ("K&R or non conforming mode\n");
    #endif
       return 0;
    }

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut re merci
    Merci emmanuel,

    tres bon petit morceau de code pour tester la norme utilisee par le compilateur.
    Petite question:
    J'ai applique ton code sous MS visual C++ 6.0 et la reponse est:
    K&R or non conforming mode

    est ce un pb si tout ce que je lis fait reference a la norme ansi?

    En fait le but de toutes mes questions est de savoir si ce que j'apprends correspond bien au langage accepte par les logiciels que j'utilise.

    Merci en tout cas pour la rapidite et la clarte de vos reponses.
    Je suis heureux que de tels endroits existent sur le net!

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par babycrash
    tres bon petit morceau de code pour tester la norme utilisee par le compilateur.
    Petite question:
    J'ai applique ton code sous MS visual C++ 6.0 et la reponse est:
    K&R or non conforming mode

    est ce un pb si tout ce que je lis fait reference a la norme ansi?

    En fait le but de toutes mes questions est de savoir si ce que j'apprends correspond bien au langage accepte par les logiciels que j'utilise.
    Essaye de regler ton compilateur en mode ANSI strict, pour voir... (-a ou -A ? Je ne sais plus... ou alors level 4 ...)

    La version du C la plus répandue est C90 (dit 'ANSI' ou ISO). C'est celle qui est supportée par tous les compilateurs produits depuis 15 ans (Borland, Microsoft, Intel, gcc etc.)

    Certains, plus récents, supportent les extensions C95, d'autre la nouvelle norme C99.

    Etant donné que le 'majors' (Borland, Microsoft) refusent d'implémenter C99, je considère (mais c'est mon avis) que C99 est une 'extension' de C90 qui reste la norme, car la plus répandue.

    On ne peut que saluer les efforts des bénévoles du projet GCC pour écrire un compilateur C qui se rapproche de C99 (c'est pas gagné), mais ça reste marginal dans l'industrie...

    Si un jour gcc obtient, de fait, une situation de monopole, y compris sur les plateformes les plus exotiques, on pourra envisager de passer à C99...

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

Discussions similaires

  1. [OL-2003] Comment connaitre le certificat utilisé par IMAP ?
    Par ram-0000 dans le forum Outlook
    Réponses: 0
    Dernier message: 15/09/2009, 15h06
  2. Réponses: 2
    Dernier message: 02/10/2007, 09h53
  3. Comment connaitre le classement par req ?
    Par nanou9999 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/09/2006, 16h20
  4. [C#] Comment connaître les méthodes non-utilisées ?
    Par joujoukinder dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 08/09/2006, 15h16
  5. comment connaitre la memoire utilisée par une appli?
    Par afrikha dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 19/11/2005, 21h24

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