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 :

question sur les erreurs de compilation


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut [resolu]question sur les erreurs de compilation
    Bonjour a toutes et a tous,
    voila en fait, j'ai juste une question d'ordre general
    Quand on cree une variable que l'on utilise pas, le compilateur met un warning ce qui est plutot sympa...
    Par contre, quand on met:
    et que l'on ne s'en sert pas, il ne dit rien...
    Y a t'il une raison?
    Merci
    PS je sais pas si j'ai poste au bon endroi la...

  2. #2
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 90
    Points
    90
    Par défaut
    Je vais ^peut être dire une bétise, mais n'est ce pas parce qu'une déclaration de constate est une directive de précompilation?

  3. #3
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    Non ce n'est pas une bétise.

    Quand le compilateur, proprement dit, compile le source, les #define
    ont disparus, puisque tout le travail de preprocessing (inclusion,
    remplacement) a déjà été effectué

  4. #4
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 90
    Points
    90
    Par défaut
    Merci!!!
    C'est une des premières fois où j'arrive à aider quelqu'un sur ce forum et que c'est pas moi qui demande de l'aide

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: question sur les erreurs de compilation
    Citation Envoyé par vince3320
    voila en fait, j'ai juste une question d'ordre general
    Quand on cree une variable que l'on utilise pas, le compilateur met un warning ce qui est plutot sympa...
    Par contre, quand on met:
    et que l'on ne s'en sert pas, il ne dit rien...
    Le langage C n'exige pas ce genre de comportement. Tout compilateur est libre d'ajouter tout message qu'il juge utile. C'est ce qu'on appelle la Qualité d'Implémentation (QoI). Personnellement, je trouve ce warning utile.

    Un préprocesseur pourrait effectivement détecter ce genre de 'non utilisation'. Personnellement, je n'en connais pas.

    Un bon moyen de vérifier si des macros sont utiles ou non est de les supprimer temporairement et de recompiler. Si ça casse, c'est qu'elles sont utilisées. Evidemment, c'est plus facile si la définition des macros est centralisée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #if 0
    #define A 4
    #define B "xxx"
    #endif
    Sinon, un outil de recherche comme grep (ou la recherche multi-fichiers de UltraEdit) peut aider.

    Je rappelle aussi qu'une macro peut avoir un comportement 'local'. (Ce qui permet le recyclage de son identificateur). Très utile quand on utilise les macros pour générer du code répétitif...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #define MY_MACRO_LOCALE xxx
    f()
    {
       ... MY_MACRO_LOCALE ...
    }
    #undef MY_MACRO_LOCALE
    ou même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    f()
    {
    #define MY_MACRO_LOCALE xxx
       ... MY_MACRO_LOCALE ...
    #undef MY_MACRO_LOCALE
       ...
    #define MY_MACRO_LOCALE yyy
       ... MY_MACRO_LOCALE ...
    #undef MY_MACRO_LOCALE
    }
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    merci pour vos reponses et pour vos conseils!!!

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

Discussions similaires

  1. question sur les artifacts (Les erreurs) IRM
    Par mina_star dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 26/05/2012, 00h47
  2. Réponses: 1
    Dernier message: 03/01/2011, 21h38
  3. Question sur les types fantômes et la compilation
    Par GnuVince dans le forum Caml
    Réponses: 9
    Dernier message: 15/11/2010, 18h40
  4. Question sur les classes (car problème lors de la compilation)
    Par beegees dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 09/10/2009, 17h23
  5. Réponses: 51
    Dernier message: 20/10/2006, 16h52

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