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 :

Désactiver les Warnings


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut Désactiver les Warnings
    Bonjour,
    J'utilise g++ pour compiler un projet qui comprend un certain nombre de librairies, dont l'une me renvoie via son fichier d'entête un bon millier de warnings (bénins) à chaque compilation (des unused parameters en majorité).

    J'aimerais les désactiver pour discerner ceux générés par MON code.

    Je sais qu'avec MSVC il faudrait faire en gros...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #pragma warning(push)
        #pragma warning(disable:4512) // par exemple
        #include <librairie_bourree_de_warnings.hpp>
    #pragma warning(pop)
    ... pour ignorer les warnings générés par l'entête de la librairie mise en cause.
    Y a-t-il un équivalent avec g++ ?

    Merci.

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    -w mais bon... c'est dangereux si il te sort des warnings sur ton code!

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ce qu'il veut, c'est une directive pour désactiver temporairement les warning le temps d'inclure un fichier header.

    "-w" est une option qui désactive les warning mais duranty toute la compilation du module et effectivement, là c'est dangereux.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Arf d'accord... Le pragma aurait du me mettre la puce à l'oreille!


    Il y'a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #pragma GCC diagnostic warning "-Wformat"

    Mais ça marche pas sur toute les versions de gcc... à toi d'essayer


    ps : plus ici : http://gcc.gnu.org/onlinedocs/gcc/Di...c-Pragmas.html

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Arf, plus la peine je pense avoir trouvé une solution - portable qui plus est.

    Au lieu d'inclure ma librairie_bourre_de_warnings.hpp directement je créé un fichier d'entête intermédiaire (include_lib.hpp par exemple) dans lequel je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ifndef __INCLUDE_LIB_HPP__
    #define __INCLUDE_LIB_HPP__
     
    #if defined __GNUC__
        #pragma GCC system_header
    #elif defined __SUNPRO_CC
        #pragma disable_warn
    #elif defined _MSC_VER
        #pragma warning(push, 1)
    #endif
     
    #include <librairie_bourre_de_warnings.hpp>
     
    #endif // __INCLUDE_LIB_HPP__
    Là librairie_bourre_de_warnings.hpp ne me retourne plus de warnings, j'ai juste ceux de mon code

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Arf, plus la peine je pense avoir trouvé une solution - portable qui plus est.

    Au lieu d'inclure ma librairie_bourre_de_warnings.hpp directement je créé un fichier d'entête intermédiaire (include_lib.hpp par exemple) dans lequel je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ifndef __INCLUDE_LIB_HPP__
    #define __INCLUDE_LIB_HPP__
     
    #if defined __GNUC__
        #pragma GCC system_header
    #elif defined __SUNPRO_CC
        #pragma disable_warn
    #elif defined _MSC_VER
        #pragma warning(push, 1)
    #endif
     
    #include <librairie_bourre_de_warnings.hpp>
     
    #endif // __INCLUDE_LIB_HPP__
    Là librairie_bourre_de_warnings.hpp ne me retourne plus de warnings, j'ai juste ceux de mon code
    Attention, tu oublies le #pragma warning(pop) à mettre après l'inclusion dans le cas de Visual...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    En effet :

    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
     
    #ifndef __INCLUDE_LIB_HPP__
    #define __INCLUDE_LIB_HPP__
     
    #if defined __GNUC__
        #pragma GCC system_header
    #elif defined __SUNPRO_CC
        #pragma disable_warn
    #elif defined _MSC_VER
        #pragma warning(push, 1)
    #endif
     
    #include <librairie_bourre_de_warnings.hpp>
     
    #if defined __SUNPRO_CC
        #pragma enable_warn
    #elif defined _MSC_VER
        #pragma warning(pop)
    #endif
     
    #endif // __INCLUDE_LIB_HPP__
    A noter aussi que pour GCC il faut ajouter l'option Wno-system-headers.

  8. #8
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Je comprend que les avertissements soient embêtant lorsque l'on débute, mais, plutôt que de les désactiver, l'idéal reste même de demander au compilateur d'en afficher un maximum... et de les prendre en considération (de veiller à modifier le code pour qu'ils n'apparaissent plus).

    En effet, les avertissements sont là pour te signaler que "ce que tu fais est potentiellement dangereux": avec un peu de malchance, cela fonctionnera toujours, mais le comportement adopté peut - comme le veut la loi de fingale - tout aussi bien mener à une catastrophe qui, ce n'est pas un hasard, arrivera lorsque tu fera la démonstration de ton produit au client

    L'avertissement concernant un paramètre inutilisé est en outre assez simple à résoudre: supprime le nom de l'argument dans la déclaration de la fonction

    Pour les autres, il est préférable de repenser un peu à la logique à suivre

    Mais, si ces quelques lignes ne t'ont pas convaincu et que tu souhaite malgré tout désactiver les avertissement, tu peux ajouter l'option -w à la commande gcc (attention, c'est bien la minuscule).

    Cela désactivera tous les avertissements
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Je comprend que les avertissements soient embêtant lorsque l'on débute, mais, plutôt que de les désactiver, l'idéal reste même de demander au compilateur d'en afficher un maximum... et de les prendre en considération (de veiller à modifier le code pour qu'ils n'apparaissent plus).
    Des fois, on ne peut pas, on est obligé d'utiliser une librairie tierce et donc les warning qui vont avec.

    Je me rappelle sous VS6 quand on utilisait la STL, il y avait une tonne de warning et il fallait vivre avec.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Ben avec ce que j'ai donné ça devrait passer... si son gcc est supérieur à 4.2.1 (il me semble)

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Ce qu'il veut, c'est une directive pour désactiver temporairement les warning le temps d'inclure un fichier header.
    Citation Envoyé par ram-0000 Voir le message
    Des fois, on ne peut pas, on est obligé d'utiliser une librairie tierce et donc les warning qui vont avec.
    Voilà, je crois que ram-0000 a assez bien résumé ma situation

    Enfin avec le morceau de code sus-cité je peux maintenant me préoccuper de mes propres Warnings sans ceux de la librairie tierce.
    Merci pour vos messages !

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

Discussions similaires

  1. Désactiver les warning
    Par Yolak dans le forum Administration
    Réponses: 3
    Dernier message: 12/02/2011, 13h13
  2. Désactiver les warnings en swi-prolog
    Par Cecilka dans le forum Prolog
    Réponses: 2
    Dernier message: 15/12/2006, 11h33
  3. désactiver les contraintes
    Par romainw dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/07/2004, 10h46
  4. [Warning] comment désactiver un Warning précis?
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 01/06/2004, 16h07
  5. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59

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