[C] Non reconnaissance Membre strcucture

Résolu
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Bon, voilà plusieurs plombes que je n'arrive pas à résoudre une erreur... Si vous pouviez m'aider ça serait sympa :)

$ gcc -I../include -W -Wall -pedantic -c operations.c
operations.c: Dans la fonction «lol» :
operations.c:29: erreur: «struct Neurone» has no member named «etatSortie»

$ gcc -E -I../include -W -Wall -pedantic operations.c
# 1 "operations.c"
# 1 "<interne>"
# 1 "<ligne de commande>"
# 1 "operations.c"
# 24 "operations.c"
# 1 "../include/reseau.h" 1
# 29 "../include/reseau.h"
typedef struct Neurone {

  float etatInterne;

  float etatSortie;

  float *poids;
} Neurone;




typedef struct Couche {

  Neurone* neurone;

  int nbNeurones;
} Couche;




typedef struct Reseau {

  Couche* couche;

  int nbCouches;

  int tempFormelle;

  float coeffApprentissage;

  float (*f)(float,int);
} Reseau;
# 25 "operations.c" 2


void lol(Reseau reseau) {
  reseau.couche[0].neurone[2].etatInterne=2;
  reseau.couche[0].neurone[2].etatSortie=2;
}



Remarque : etatInterne est bien reconnu... Langue au chat.
Merci :)

5 réponses

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
typedef struct Neurone {
    float etatInterne;
    float etatSortie;
    float *poids;
} Neurone;

typedef struct Couche {
    Neurone* neurone;
    int nbNeurones;
} Couche;

typedef struct Reseau {
    Couche* couche;
    int nbCouches;
    int tempFormelle;
    float coeffApprentissage;
    float (*f)(float,int);
} Reseau;

void lol(Reseau reseau) {
    reseau.couche[0].neurone[2].etatInterne=2;
    reseau.couche[0].neurone[2].etatSortie=2;
}

int main(){
    return 0;
}

Ben ça chez moi ca compile très bien. Donc soit tu as mal copié collé, soit il nous manque les sections de code à problème.

Bonne chance
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342
 
C'est très étrange parceque su je mets le fichier inclus et le fichier .c dans le même repertoire cela marche.

Je ne saisis pas du tout :(

Pensez-vous que ce soit un bug de gcc ?
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342
 
OK, merci.

Pourtant regarde j'ai préparé une archive simplifiée du problème disponible ici :
http://ekra.free.fr/Fichiers/bug.tar.gz

Avec un script tout fait dans src qui me provoque l'erreur. Si jamais tu as le temps tu peux m'en donner le résultat chez toi.

Pour ma part il me produit :
$ ./bug_script.sh
operations.c: Dans la fonction «lol» :
operations.c:29: erreur: «struct Neurone» has no member named «etatSortie»

Je te remercie en tout cas de ton intervention.
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342
 
Re

J'ai enfin trouvé la solution ! Dans les include/ j'avais compilé un .h suite à une erreur quelques jours auparavent en écrivant le Makefile.
Apparemment, gcc se servait du reseau.h.gch au lieu du reseau.h modifié.
=> rm reseau.h.gch

De longues heure de perdues !

Merci a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Ok :-)
0