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 :

constante non déclarée?


Sujet :

C

  1. #1
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut constante non déclarée?
    Bonjour

    Ci-joint un script avec comme message d erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error: 'MAX_ETUDIANT' undeclared here (not in a function)
         struct etudiant Tableau_Eleves[MAX_ETUDIANT];
                                        ^~~~~~~~~~~~
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include<stdio.h>
    #include<string.h>
     
    #define TAILLE_NOM 30
    #define TAILLE_PRENOM 2*TAILLE_NOM
    #define MAX_ETUDIANT 50
     
    int main(int argc, char const *argv[])
    {
     
        int i;               // numero case du tableau
        int Nombre_Eleve;    // variable de controle du tableau
        int Fin_Saisie;
        int Test;
     
        // declaration du type etudiant
        struct etudiant {
                            char Nom_Etudiant[TAILLE_NOM];
                            char Prenom_Etudiant[TAILLE_PRENOM];
                            unsigned int Age_Etudiant;
                        };
     
        // declaration du tableau des eleves
        struct etudiant Tableau_Eleves[MAX_ETUDIANT];
     
        // debut et fin du programme
        i=0;
        Fin_Saisie=0;
        Test=0;
     
        // boucle de saisie
        while (!Fin_Saisie)
        {
            printf("saisissez le nom de l eleve (fin pour terminer):");
            scanf("%s", Tableau_Eleves[i].Nom_Etudiant);
     
            // test de comparaison de 2 chaines de caractere
            Test=strcmp(Tableau_Eleves[i].Nom_Etudiant, "fin");
            Fin_Saisie=(Test==0);       // booleen
     
            // si la saisie n est pas finie ... on continue la saisie
            if (!Fin_Saisie)
            {
                printf("saisissez le prenom de l eleve:");
                scanf("%s", Tableau_Eleves[i].Prenom_Etudiant);
     
                printf("saisissez l age de l eleve:");
                scanf("%d", &Tableau_Eleves[i].Age_Etudiant);
     
                // incrementation: passage a l eleve suivant
                i++;
            }
        }
     
        // mise a jour de la variable de controle du tableau
        Nombre_Eleve=i;
     
        // boucle de verification
        printf("--Verification de la saisie-- \n");
        printf("s", Tableau_Eleves[1].Nom_Etudiant);
        printf("s", Tableau_Eleves[1].Age_Etudiant);
        for ( i = 0; i < Nombre_Eleve; i++)
        {
            printf("eleve %d: %s %s %d ans \n", Tableau_Eleves[i].Nom_Etudiant, Tableau_Eleves[i].Prenom_Etudiant, Tableau_Eleves[i].Age_Etudiant);
        }
        return 0;
    }
    Cordialement

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    Bonjour,

    je ne sais pas avec quoi ou comment tu compiles mais person avec ton code j'obtiens :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $ gcc -Wall -Wextra -fanalyzer -c t.c
    t.c: In function ‘main’:
    t.c:60:12: warning: too many arguments for format [-Wformat-extra-args]
       60 |     printf("s", Tableau_Eleves[1].Nom_Etudiant);
          |            ^~~
    t.c:61:12: warning: too many arguments for format [-Wformat-extra-args]
       61 |     printf("s", Tableau_Eleves[1].Age_Etudiant);
          |            ^~~
    t.c:64:24: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘char *’ [-Wformat=]
       64 |         printf("eleve %d: %s %s %d ans \n", Tableau_Eleves[i].Nom_Etudiant, Tableau_Eleves[i].Prenom_Etudiant, Tableau_Eleves[i].Age_Etudiant);
          |                       ~^                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                        |                                     |
          |                        int                                   char *
          |                       %s
    t.c:64:31: warning: format ‘%s’ expects argument of type ‘char *’, but argument 4 has type ‘unsigned int[-Wformat=]
       64 |         printf("eleve %d: %s %s %d ans \n", Tableau_Eleves[i].Nom_Etudiant, Tableau_Eleves[i].Prenom_Etudiant, Tableau_Eleves[i].Age_Etudiant);
          |                              ~^                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                               |                                                                                                 |
          |                               char *                                                                                            unsigned int
          |                              %d
    t.c:64:34: warning: format ‘%d’ expects a matching ‘int’ argument [-Wformat=]
       64 |         printf("eleve %d: %s %s %d ans \n", Tableau_Eleves[i].Nom_Etudiant, Tableau_Eleves[i].Prenom_Etudiant, Tableau_Eleves[i].Age_Etudiant);
          |                                 ~^
          |                                  |
          |                                  int
    t.c:8:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
        8 | int main(int argc, char const *argv[])
          |          ~~~~^~~~
    t.c:8:32: warning: unused parameter ‘argv’ [-Wunused-parameter]
        8 | int main(int argc, char const *argv[])
          |                    ~~~~~~~~~~~~^~~~~~

    et, sans méchanceté, je ne sais pas où tu as appris le C mais ton code est pour le moins non conventionnel …

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Il ne devrait pas y avoir d'erreur sur cette ligne. Quel compilateur utilises-tu? Ça pourrait être la définition d'une struct dans une fonction qui le perturbe. C'est possible aujourd'hui mais ça ne l'a pas toujours été, essaie de définir ta struct avant le main().
    Par contre les 3 erreurs sur tes printf() sont à corriger.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par binco Voir le message
    Ci-joint un script avec comme message d erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error: 'MAX_ETUDIANT' undeclared here (not in a function)
         struct etudiant Tableau_Eleves[MAX_ETUDIANT];
                                        ^~~~~~~~~~~~
    Chez-moi (gcc) ça compile. En revanche ta fin de saisie est inutilement complexe (tu testes 2 fois Fin_Saisie pour une seule alternative "finir/pas finir") et ne limite absolument pas la saisie (ton tableau est prévu pour 50 étudiants mais rien n'interdit l'utilisateur d'en saisir 1500 si ça lui chante).

    Ensuite je ne comprends pas le but du premier printf() (celui où tu affiches l'élément [1] d'un tableau qui commence à 0 et qui peut donc très bien ne pas avoir d'élément [1]). Et le printf() de la boucle contient 4 éléments de variables mais ne reçoit que 3 variables à afficher (je pense que tu pensais à "i" pour le premier mais que tu l'as oublié).

    Et dans la boucle de saisie, "Nombre_Eleve" peut être utilisé directement à la place de "i" ce qui évite une recopie finale inutile.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Joomla!] Constantes non reconnu par le CMS, comment faire?
    Par Rajhonson dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 07/01/2007, 22h06
  2. [Tableaux] PB constante non définie
    Par ouar dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2006, 17h19
  3. méthode non déclarée *?*
    Par nunurs83 dans le forum C++
    Réponses: 10
    Dernier message: 10/11/2006, 10h30
  4. [Virtual Pascal] Paramètre sous forme de constante non typée
    Par Alcatîz dans le forum Autres IDE
    Réponses: 3
    Dernier message: 18/06/2006, 08h13
  5. Pointeur sur constante non constante
    Par Pragmateek dans le forum C
    Réponses: 3
    Dernier message: 21/03/2006, 14h22

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