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 :

Signification d'un warning à la compilation


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 160
    Points
    160
    Par défaut Signification d'un warning à la compilation
    Bonjour à tous.

    Je suis actuellement occupé de développer une API pour créer des plug-ins pour un de mes projets.
    Tout se passe plus ou moins bien à part ce warning que je ne comprends pas relatif à l'application "principale" et non au module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    In file included from /usr/local/include/cid/cid/cid-utilities.h:16,
                     from /usr/local/include/cid/cid.h:21,
                     from applet-struct.h:5,
                     from applet-init.c:12:
    /usr/local/include/cid/cid/cid-struct.h:70: warning: declaration does not declare anything
    cid-struct.h contient autour de la ligne 70 la déclaration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    65 struct _CidDataContent {
    66     union {
    67         gchar *string;
    68         gint iNumber;
    69         gboolean booleen;
    70     };
    71     GType type;
    72 };
    Quelqu'un pourrait-il m'éclairer sur ce point ?

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Un union ça se déclare un peu comme une structure. Là tel que tu l'as déclaré, tu ne peux pas référencer ton union ! Il faut lui donner un nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct _CidDataContent {
    	union {
    		gchar *string;
    		gint iNumber;
    		gboolean booleen;
    	} qqch;
    	GType type;
    };
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    @Pouet_forever ce que tu viens d'écrire ce n'est pas
    Citation Envoyé par Pouet_forever
    ...lui donner un nom
    Pour cela il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct _CidDataContent {
    	union nom {
    		gchar *string;
    		gint iNumber;
    		gboolean booleen;
    	} qqch;
    	GType type;
    };
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 160
    Points
    160
    Par défaut
    Au temps pour moi...

    Je ne compilais pas avec les mêmes options des deux côtés.

    Pour mon plug-in, j'avais ajouté l'option -std=c99, et pas pour mon application.

    Cette écriture permet de déclarer un union "anonyme". Après, je ne sais pas si c'est "propre" (et visiblement ce n'est plus accepté en c99), mais ça fonctionne.

    Merci à vous.

    [edit]

    C'est visiblement inspiré du C++ et implémenté sous gcc : http://gcc.gnu.org/ml/gcc-patches/19.../msg00376.html
    Probablement pas très portable cela dit.

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Cette écriture permet de déclarer un union "anonyme". Après, je ne sais pas si c'est "propre" (et visiblement ce n'est plus accepté en c99), mais ça fonctionne.
    Si, on peut déclarer une struct/union anonyme en C99.

    Par contre, si une struct/union ne contient aucun membre nommé, le comportement est indéfini. Donc, il fallait nommer le champ comme indiqué par Pouet_forever
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

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

Discussions similaires

  1. Enlever les warnings à la compilation
    Par piotrr dans le forum Général Java
    Réponses: 3
    Dernier message: 29/10/2007, 19h02
  2. [GCC] warning de compil
    Par AcidBurn37 dans le forum C
    Réponses: 2
    Dernier message: 22/10/2007, 13h11
  3. problème de warning en compilant win32 + directx
    Par madcode dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 17/10/2006, 16h58
  4. Réponses: 8
    Dernier message: 23/08/2006, 18h40
  5. Petits warnings apres compilation sous Solaris
    Par Thordax dans le forum C++
    Réponses: 22
    Dernier message: 04/07/2006, 09h45

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