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 :

Probleme avec gcc


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv� Avatar de uriotcea
    Homme Profil pro
    Ing�nieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par d�faut Probleme avec gcc
    Bonjour,

    J'ai des centaines de message de warning � la compile � cause de l'attribue "warm_unused_result" qui me g�n�re un warning pour toutes les fonctions standard non void. C'est agacant et les autres warning plus important sont noy�s dedans.

    Comment pourrais-je d�sactiv� cette option?

  2. #2
    zul
    zul est d�connect�
    Membre chevronn� Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Par d�faut
    man gcc /warn_unused_result et tu aurai trouv� l'option qui va bien...

    L'option en question c'est -Wno-unused-result. Et sinon c'est en g�n�ral une mauvaise id�e. La valeur de retour de ces fonctions indiquent si la fonction s'est bien pass� ou pas, donc il est extr�mement important de le v�rifier. De plus, si tu as des centaines de warning, �a tend � prouver que tu utilise trop l'api C, et pas assez d'abstraction C++.

  3. #3
    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,

    Cet avertissement te pr�viens que tu ne r�cup�re pas la valeur des fonctions non void.

    En toute logique, si une fonction renvoie quelque chose, c'est parce que la valeur retourn�e est... int�ressante pour la fonction appelante, ne serait-ce que parce qu'elle repr�sente la r�ussite ou la raison de l'�chec de la fonction, ou parce que la fonction appelante a besoin de cette valeur pour travailler.

    L'id�al serait donc, partout o� cet avertissement survient, de veiller � effectivement r�cup�rer la valeur de retour de la fonction et � g�rer, au minimum, le cas de la r�ussite (qui permet de "faire la suite") et le cas g�n�ral de l'�chec

    Ce type d'avertissement est occasionn� par l'option -Wunused-return, qui est activ�e, entre autres, par l'options -Wunused, elle m�me activ�e -Wall (options valables pour Gcc-.

    Tu peux donc envisager de d�sactiver ces avertissements en rajoutant (toujours sous Gcc) l'option -Wno-unused-result, mais, tu comprendra que je conseille fortement de plut�t choisir la premi�re option, qui consiste � effectivement r�cup�rer et g�rer le retour de toutes les fonctions
    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

  4. #4
    Membre �prouv� Avatar de uriotcea
    Homme Profil pro
    Ing�nieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par d�faut
    Merci de vos r�ponses.
    Effectivement j'ai enorm�ment de fonction C tel "sscanf", "fget".
    Le flag "Wno-unused_result" me va totalement en me suppriment tous ces warning.
    M�me si je suis conscient qu'ils peuvent avoir leurs utilit�, ils n'�tait pas pr�sent dans le gcc < 4.4.0.

  5. #5
    zul
    zul est d�connect�
    Membre chevronn� Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Par d�faut
    fgets peut �tre probablement facilement remplacer par getline.
    sscanf par des ostringstream ou par des choses plus haut niveau, en fonction de la s�mantique derri�re (�a pourrait �tre remplac� par boost::serialization si il s'agit d'une op�ration de sauvegarde / lecture d'une structure).

    De plus, il est franchement impossible d'utiliser sscanf sans v�rifier la valeur de retour. Comment peux-tu savoir que ta ligne � matcher ce que tu attends si tu ne le v�rifie pas ? Comment peux-tu �tre s�r par la suite de ne pas utiliser une variable non initialis� ?

    De m�me, pour fgets, comment g�re tu les fin de fichiers si tu ne lis pas le retour de la fonction (et je ne parle pas de tous les autres cas d'erreurs qui peuvent arriver). ?

    Ces warning ne sont pas l� pour "faire chier le monde", mais parce qu'il signale potentiellement des choses qui vont dans le future provoquer des comportements ind�termin�es. Donc, je r�p�te, il serait bien mieux de les corriger, pas de les masquer (et m�me si gcc < 4.4.0 ne les indiquait pas, il n'est jamais trop tard pour corriger le code).

  6. #6
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par uriotcea Voir le message
    J'ai des centaines de message de warning � la compile � cause de l'attribue "warm_unused_result" qui me g�n�re un warning pour toutes les fonctions standard non void. C'est agacant et les autres warning plus important sont noy�s dedans.
    -U_FORTIFY_SOURCE si j'ai bonne m�moire.

    Citation Envoy� par zul Voir le message
    man gcc /warn_unused_result et tu aurai trouv� l'option qui va bien...

    L'option en question c'est -Wno-unused-result. Et sinon c'est en g�n�ral une mauvaise id�e. La valeur de retour de ces fonctions indiquent si la fonction s'est bien pass� ou pas, donc il est extr�mement important de le v�rifier. De plus, si tu as des centaines de warning, �a tend � prouver que tu utilise trop l'api C, et pas assez d'abstraction C++.
    C'est en th�orie une tr�s mauvaise id�e d'ignorer ces warnings qui ne sont g�n�r�s que pour des fonctions marqu�es comme devant les g�n�r�r. Mais le probl�me est que la libc de GNU a marqu� trop de choses, sous contr�le d'un ifdef, d'une part, et d'autre part que certaines distributions ont activ� cet ifdef par d�faut.

    (et m�me si gcc < 4.4.0 ne les indiquait pas, il n'est jamais trop tard pour corriger le code).
    C'est pas li� � la version de gcc (qui a ce m�canisme depuis la 3.4).

  7. #7
    Membre �prouv� Avatar de uriotcea
    Homme Profil pro
    Ing�nieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par d�faut
    tout � fait d'accord, mais quand on a g�rer un code de dizaines de millier de lignes, constiut� de c, cpp, fortran datant parfois de 20 ans, on fait au mieux pour que ca continu � fontionner et les belles ambitions de perfection sont pass� au second plan.

Discussions similaires

  1. Probleme avec gcc(D�butant)
    Par Freedom57 dans le forum D�buter
    R�ponses: 2
    Dernier message: 02/12/2010, 16h03
  2. Probleme avec gcc
    Par nightmare06 dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 09/10/2007, 19h34
  3. Problem avec gcc 4
    Par Arthuris dans le forum GCC
    R�ponses: 3
    Dernier message: 23/04/2007, 15h05
  4. Problème de compilation avec gcc
    Par Niktou dans le forum Linux
    R�ponses: 9
    Dernier message: 27/09/2005, 15h18
  5. Problème avec l'option -static de gcc
    Par lsdInside dans le forum Linux
    R�ponses: 2
    Dernier message: 08/05/2004, 01h01

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