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 :

variable non déclarée?


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par défaut variable non déclarée?
    alut tout le monde!
    je suis en train de reviser un partiel de langageC et je dois créer une fonction dont le prototype est imposé. voici le morceau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void triMerite(ELEVE *e, unsigned int nbEleves)
    {
         unsigned int ind1,ind2,taille;
         float mem;
         
         taille=nbEleves;
    ......etc

    mais quand je compile il me mets que nbEleves est pas déclarer je ne comprends pas pourquoi.... si je le passe en parametre il est bien declarer, non?

    meri d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, comme ça je ne vois pas l'erreur. Peux-tu mettre le message du compilo et poster la fonction en entière ?

  3. #3
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Bonjour,

    Effectivement...
    Bizarre. Vérifie qu'il n'y a pas d'erreur de frappe : un "s" qui manque, une majuscule à la place d'une minuscule, ce genre de choses.
    Sinon, je ne vois pas trop...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par défaut
    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
    void triMerite(ELEVE *e, unsigned int nbEleves)
    {
         unsigned int ind1,ind2,taille;
         float mem;
     
         taille=nbEleves;
     
         for(ind1=0;ind1<(taille-1);ind1++)
         {
             for(ind2=(ind1+1);ind2<taille;ind2++)
             {
                 if((e[ind1].moyenne)<(e[ind2].moyenne))
                 {
                   mem=e[ind1].moyenne;
                   e[ind1].moyenne=e[ind2].moyenne;
                   e[ind2].moyenne=mem;                                    
                 }                                      
             }                                    
         }    
    }


    le message du compilateur est :
    13 D:\Mes documents\carole\main2.c syntax error before '*' token
    D:\Mes documents\carole\main2.c In function `triMerite':
    18 D:\Mes documents\carole\main2.c `nbEleves' undeclared (first use in this function)
    (Each undeclared identifier is reported only once for each function it appears in.)
    24 D:\Mes documents\carole\main2.c `e' undeclared (first use in this function)
    D:\Mes documents\carole\Makefile.win [Build Error] [main2.o] Error 1

  5. #5
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Ah, en fait, c'est ELEVE qui est inconnu.
    Les erreurs suivantes sont provoquées par la première.

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    13 D:\Mes documents\carole\main2.c syntax error before '*' token

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par défaut
    pourtant juste avant la fonction j'ai declarer ma structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*création du type de structure ELEVE*/  
      struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
             };
    c'est bien correct ça, non?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    alors il faut que tu mettes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void triMerite(struct ELEVE *e, unsigned int nbEleves)
    je crois...

  8. #8
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par salseropom
    alors il faut que tu mettes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void triMerite(struct ELEVE *e, unsigned int nbEleves)
    je crois...
    Oui, ou alors déclarer ELEVE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*création du type de structure ELEVE*/  
    typedef struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE;

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*création du type de structure ELEVE*/  
    typedef struct{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE;
    n'est pas mieux ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par défaut
    merci bien vue en fait il suffisait de rajouter struct....
    faut jamais faire confiance au prof,c'est la seule partie du programme qu'il avait ecrit...
    merci beaucoup!!!
    bonne journéé

  11. #11
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par salseropom
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*création du type de structure ELEVE*/  
    typedef struct{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE;
    n'est pas mieux ?
    Si, j'ai corrigé

  12. #12
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par zooro
    Si, j'ai corrigé
    Je ne vois pas trop ce qu'il ya à corriger. Pour moi les deux écritures sont équivalentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE;

  13. #13
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par crocodilex
    Je ne vois pas trop ce qu'il ya à corriger. Pour moi les deux écritures sont équivalentes.
    J'avais oublié le typedef... et j'ai corrigé pendant qu'il postait sa remarque.

  14. #14
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Personnellement, je préfère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE_s;
     
    /* ou simplement */
     
    struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    };
    Cela favorise la lisibilité et permet de savoir du 1er coup d'oeil que ELEVE_s ou struct ELEVE est une structure. Sinon toutes ces notations sont équivalentes et les critères qui conduisent à favoriser une syntaxe ou une autre relèvent du standard de codage personnel. zooro, il n'y avait donc rien à corriger.

    Carole8, n'oublie pas le tag si ton code fonctionne maintenant

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  15. #15
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par mujigka
    Personnellement, je préfère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    } ELEVE_s;
     
    /* ou simplement */
     
    struct ELEVE{
             char nom[20];
             char prenom[20];
             float moyenne;
    };
    Cela favorise la lisibilité et permet de savoir du 1er coup d'oeil que ELEVE_s ou struct ELEVE est une structure. Sinon toutes ces notations sont équivalentes et les critères qui conduisent à favoriser une syntaxe ou une autre relèvent du standard de codage personnel. zooro, il n'y avait donc rien à corriger.

    Carole8, n'oublie pas le tag si ton code fonctionne maintenant

    Thierry
    Moi aussi, je préfère ta notation, mais Carole8 disait que le prototype de sa fonction était imposé. Donc, j'ai proposé une solution qui ne le modifiait pas.

  16. #16
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par mujigka
    Cela favorise la lisibilité et permet de savoir du 1er coup d'oeil que ELEVE_s ou struct ELEVE est une structure.
    Sauf que dans ton exemple, ELEVE_s est un typedef, donc ELEVE_t serait plus logique. Pour eviter d'utiliser des noms reserves, t_ELEVE encore meilleur.
    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef struct s_mytype {
       ...
    } t_mytype;
    (desole, je suis allergique aux majuscules dans les codes sources...)

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

Discussions similaires

  1. variable non déclarée
    Par chicabonux dans le forum Débuter
    Réponses: 19
    Dernier message: 22/06/2009, 13h52
  2. Réponses: 6
    Dernier message: 31/12/2008, 10h59
  3. Option Explicit et erreur variable non déclarée
    Par petitours dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/04/2008, 15h38
  4. [Design] Erreur variable non déclarée ou non assignée
    Par Arnard dans le forum Visual Studio
    Réponses: 3
    Dernier message: 19/12/2007, 17h53
  5. Problème de variable non déclarée
    Par jncoffy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 24
    Dernier message: 06/06/2007, 11h01

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