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 :

Traquer les if (a=b)


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut Traquer les if (a=b)
    La dernière fois, j'ai cherché une bonne heure la cause d'un plantage, pour découvrir que j'avais tout bonnement écrit if (a=b) au lieu de if (a==b).

    Je me connais, je peux le refaire...

    Est-ce qu'il y a un réglage du compilateur (j'utilise gcc avec DevCPP) qui permet de générer des avertissements en cas de construction de ce type (que j'ai toujours trouvé hautement dangereuse) ?

    D'ailleurs, tant qu'à y être, pour l'instant, je compile avec -Wall. C'est ce qu'il faut faire ou il y a pire ?

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut Re: Traquer les if (a=b)
    Bonjour,
    Citation Envoyé par Le Furet
    D'ailleurs, tant qu'à y être, pour l'instant, je compile avec -Wall. C'est ce qu'il faut faire ou il y a pire ?
    C'est un début, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Wall -Werror -O2 -ansi -pedantic
    Et tu devrais obtenir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Statement with no effect
    Apparement il a tendance à raller pour rien, Emmanuel Delahaye a posté il n'y a pas longtemps une liste des options -W* à mettre pour éviter cela.

  3. #3
    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 Re: Traquer les if (a=b)
    Citation Envoyé par Le Furet
    La dernière fois, j'ai cherché une bonne heure la cause d'un plantage, pour découvrir que j'avais tout bonnement écrit if (a=b) au lieu de if (a==b).

    Est-ce qu'il y a un réglage du compilateur (j'utilise gcc avec DevCPP) qui permet de générer des avertissements en cas de construction de ce type
    avec gcc : -Wall -Wextra -O1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #line 1
    #include <stdio.h>
     
    int main (int argc, char **argv)
    {
       if (argc = 3)
       {
          puts ("hello world");
       }
       return 0;
    }
    produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    main.c: In function `main_':
     
    main.c:5: warning: suggest parentheses around assignment used as truth value

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Dommage, c'était l'option de mes rêves, mais :

    cc1.exe D:\Mes Programmes\Euclide\cc1.exe unrecognized option `-Wextra'
    Problème de version ? (j'utilise DevCPP 4.9.9.0)

  5. #5
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    -Wextra, c'est pour gcc >= 4
    Avant, c'est -W
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  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 Le Furet
    Dommage, c'était l'option de mes rêves, mais :

    cc1.exe D:\Mes Programmes\Euclide\cc1.exe unrecognized option `-Wextra'
    Problème de version ? (j'utilise DevCPP 4.9.9.0)
    Oui. La version actuelle est 4.9.9.2 avec MingW 3.4.2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    C:\DEV-CPP\BIN>gcc --version
    GCC.EXE (GCC) 3.4.2 (mingw-special)

  7. #7
    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 Pouic
    -Wextra, c'est pour gcc >= 4
    Avant, c'est -W
    >= 3.4.0

    http://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Warning-Options.html#Warning%20Options

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    OK, je me mets à jour dès que je rentre du boulot. Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/06/2011, 12h57
  2. Réponses: 0
    Dernier message: 22/06/2011, 20h48
  3. Google analytics traquer les downloads
    Par pasqual dans le forum APIs Google
    Réponses: 4
    Dernier message: 03/07/2009, 09h46
  4. [oracle 9i] traquer les problemes de performances
    Par jojo22222 dans le forum Oracle
    Réponses: 1
    Dernier message: 01/02/2006, 18h48
  5. Traquer les fuites mémoires (memoryLeak) ?
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 08/09/2005, 09h07

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