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 de declaration de structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut Probleme de declaration de structure
    Voici une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct
    {
    	uint32 id;
    	MYSQL mysql;
    	int linkUp;
    	int nbActiveThreads;
    	char sqlQuery[MYSQL_QUERY_MAX_LEN];
    	pthread_mutex_t connectionMutex;
    	pthread_mutex_t reconnectionMutex;
    	Connection_t* nextFree;
    } Connection_t;
    qui ne compile pas car qd je declare le champs Connection_t* nextFree; il me mets :
    error: syntax error before "Connection_t"

    C'est parce qu'il ne connais pas encore le type Connection_t a l'interieur de la structure je pense et en C apparemment, je ne peux pas faire de forward declaration comme en C++.
    Quelqu'un aurait une idee pour rendre mon type valide ?

    Merci.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par vandamme Voir le message
    Voici une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct
    {
    	uint32 id;
    	MYSQL mysql;
    	int linkUp;
    	int nbActiveThreads;
    	char sqlQuery[MYSQL_QUERY_MAX_LEN];
    	pthread_mutex_t connectionMutex;
    	pthread_mutex_t reconnectionMutex;
    	Connection_t* nextFree;
    } Connection_t;
    qui ne compile pas car qd je declare le champs Connection_t* nextFree; il me mets :
    error: syntax error before "Connection_t"

    C'est parce qu'il ne connais pas encore le type Connection_t a l'interieur de la structure je pense et en C apparemment, je ne peux pas faire de forward declaration comme en C++.
    Quelqu'un aurait une idee pour rendre mon type valide ?

    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct Connection_t
    {
    	uint32 id;
    	MYSQL mysql;
    	int linkUp;
    	int nbActiveThreads;
    	char sqlQuery[MYSQL_QUERY_MAX_LEN];
    	pthread_mutex_t connectionMutex;
    	pthread_mutex_t reconnectionMutex;
    	struct Connection_t* nextFree;
    } Connection_t;

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut
    Merci beaucoup, ca marche.

  4. #4
    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
    Je déconseille de donner le même nom à la structure et au typedef.

    Sinon, on peut aussi le faire en deux étapes:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef struct Connection Connection_t;
     
    struct Connection
    {
    	uint32 id;
    	MYSQL mysql;
    	int linkUp;
    	int nbActiveThreads;
    	char sqlQuery[MYSQL_QUERY_MAX_LEN];
    	pthread_mutex_t connectionMutex;
    	pthread_mutex_t reconnectionMutex;
    	Connection_t* nextFree;
    };
    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.

  5. #5
    Membre émérite 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
    Par défaut
    Petite remarque :
    Citation Envoyé par http://www.gnu.org/software/libtool/manual/libc/Reserved-Names.html
    <...>
    Names that end with `_t' are reserved for additional type names.
    <...>

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

Discussions similaires

  1. Petit probleme lors de la declaration de structure (pointeurs)
    Par KosenHitatchi dans le forum Débuter
    Réponses: 8
    Dernier message: 03/01/2013, 15h01
  2. Réponses: 6
    Dernier message: 16/11/2009, 01h02
  3. Réponses: 6
    Dernier message: 21/01/2009, 00h13
  4. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19
  5. [Traduction] probleme de declaration
    Par Mercilius dans le forum Langage
    Réponses: 3
    Dernier message: 03/04/2003, 16h16

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