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 :

Fonctionnement de "-Wunreachable-code"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut Fonctionnement de "-Wunreachable-code"
    Bonsoir,

    J'aimerai savoir sur quoi GCC se base exactement pour afficher les warning retournés dû à "-Wunreachable-code".

    Exemple :

    src/main.c:57: warning: will never be executed
    src/main.c:57: warning: will never be executed
    src/main.c:57: warning: will never be executed
    src/main.c:57: warning: will never be executed
    src/main.c:57: warning: will never be executed
    Alors que mon code ligne 57 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (argc > 1 && strcmp(argv[1], "--version") == 0) {
    Pareil à d'autre endroit avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (flag & FOR_UPDATE_IP) {


    Et ces parties sont bien exécutées.
    Pourquoi m'afficher plusieurs fois le même warning ?

    Merci

  2. #2
    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 |PaRa-BoL Voir le message
    J'aimerai savoir sur quoi GCC se base exactement pour afficher les warning retournés dû à "-Wunreachable-code".

    Exemple :

    Alors que mon code ligne 57 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (argc > 1 && strcmp(argv[1], "--version") == 0) {
    Pareil à d'autre endroit avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (flag & FOR_UPDATE_IP) {
    Et ces parties sont bien exécutées.
    Pourquoi m'afficher plusieurs fois le même warning ?
    C'est pas très méchant. Il faudrait d'abord faire une passe sans optimisation (-O0) pour voir si c'est vrai. Ensuite, avec -Ox, il y a un petit conflit entre l'optimiseur et le vérificateur de flot. L'optimiseur vire du code inutile, et l'analyseur constate alors qu'il n'est plus exécuté...

    Attention quand même à çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (flag & FOR_UPDATE_IP) {
    c'est suspect...

    Pour être clair, c'est soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (flag && FOR_UPDATE_IP) {
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((flag & FOR_UPDATE_IP) != 0) {

  3. #3
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Merci pour ces précisions, effectivement sans l'optimiseur, je n'ai plus de warnings.

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

Discussions similaires

  1. Augmenter la hauteur du div/span de la balise "code"
    Par Djakisback dans le forum Evolutions du club
    Réponses: 10
    Dernier message: 24/01/2009, 14h31

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