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

Autres éditeurs Discussion :

Compilateur non permissif


Sujet :

Autres éditeurs

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut Compilateur non permissif
    Bonjour,

    Je suis à la recherche d'un compilateur (ou analyseur statique), permettant de repérer les erreurs de ce type :

    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
    typedef enum
    {
       VAL1;
       VAL2;
    }e1_t ;
     
     
    typedef enum
    {
       VAL3;
       VAL4;
    }e2_t ;
     
    e2_t variable1 ;
     
    variable1 = VAL1 ;
    J'affecte une valeur qui n'appartient pas à la bonne enum.

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    COMEAU le détecte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Comeau C/C++ 4.3.10.1 (Oct  6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
    Copyright 1988-2008 Comeau Computing.  All rights reserved.
    MODE:strict errors C99 
     
    "ComeauTest.c", line 15: warning: enumerated type mixed with another type
        variable1 = VAL1 ;
                  ^
     
    "ComeauTest.c", line 14: warning: variable "variable1" was set but never used
        e2_t variable1;
    mais il est payant (50 $) et je n'ai pas trop de retour d'expérience sur ce compilateur.

    http://www.comeaucomputing.com/

    Les compilateurs d'Intel doivent aussi le détecter.


    Toutefois, ce comportement est tout à fait valide en C (enfin, disons que la norme laisse toute liberté là-dessus). Une variable de type énuméré peut contenir n'importe quelle valeur dont le type est compatible avec le type de l'énuméré. En C++, le comportement est différent. Voir g++ qui déclenche une erreur, contrairement à gcc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error: cannot convert 'e1_t' to 'e2_t' in assignment

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Et en terme d'analyse statique de code en C, que connaissez vous d'interessant ?

    Avez-vous des epériences avec les outils cités ici ?
    http://en.wikipedia.org/wiki/List_of...ode_analysis#C

Discussions similaires

  1. Compilateur non trouvé
    Par GuillaumeGuillaume dans le forum Qt Creator
    Réponses: 1
    Dernier message: 03/12/2012, 11h10
  2. [Débuter] Compilateur non reconnu
    Par dogriot dans le forum Qt Creator
    Réponses: 1
    Dernier message: 22/11/2012, 17h42
  3. Fonction membre non-reconnue par le compilateur.
    Par markfish55 dans le forum C++
    Réponses: 2
    Dernier message: 06/06/2008, 04h36
  4. [Turbo Pascal] Unité Graph non trouvée par le compilateur
    Par Napocalyx dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 04/04/2008, 23h16
  5. Réponses: 2
    Dernier message: 28/07/2005, 13h58

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