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 :

Declarer un type dans differents fichiers sources d'un projet


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Declarer un type dans differents fichiers sources d'un projet
    Bonjour,

    Dans le cadre d'un exo je dois programmer une liste chainée dynamique.

    Je develloppe sous dev c++ et je gere l'exo sous forme de projet, j'ai donc un fichier pour mon main et d'autres pour les fonction s et procedures.

    Dans mon main j'ai declaré une structure et un type pointant sur cette structure.

    Mon type est parfaitement reconu dans le main mais dès que je veux m'en servir dans un autre fichier source le compilateur ne le reconnait pas. Alors faut il le stocker dans une bibliotheque et l'inclure dans chaque source j'ai creusé le sujet et j'ai rien trouvé alors si vous avez une idée sur la question ca m'aiderais beaucoup.

    merci d'anvance.

    ca c'est mon main

    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
    #include <stdio.h>
    #include <stdlib.h>
    //************************DECLARATION DES TYPES ET STRUCTURES******************
     typedef struct element
             {
              //stockage de la valeur
              int val;
              //lien vers element suivant
              struct element *suivant;
             }t_el;
    //*****************************************************************************
    int main (int argc,char *argv[])
    {
    //************************DECLARATION DES VARIABLES****************************
     t_el *deb_liste;
     int val;
    //*****************************************************************************
     
     //initialisation du debut de liste
     deb_liste = NULL;
     
     //ajout d'un element en debut de liste
     printf ("Saisir la valeur de l'element a ajouter : ");
     scanf ("%d",&val);
     
     printf ("\n");
     
     deb_liste = insertion (deb_liste,val);
     
     printf ("val = %d\n",deb_liste->val);
     
     system ("PAUSE");system ("CLS");
    }
     
     
    et ca c'est une fonction stocker dans un fichier a part
     
    t_el *insertion (t_el *debut,int val)
    //cette fonction a pour but d'ajouter un element en debut de liste
     
    //parametre par valeur    val    type  entier
    //parametre par adresse   debut  type  pointeur de structure element
    {
     //variables locales
     t_el nouv;
     //*****************
     
     //reservation de la memoire pour le nouvel element
     nouv = (t_el*) malloc (sizeof (t_el));
     
     //remplissage des champs
     nouv->val     = val;
     nouv->suivant = NULL;
     
     //edition des liens
     nouv->suivant = debut;
     debut         = nouv;
     
     //renvoie du debut de liste
     return (debut);
    }
    et les messages d'erreurs

    1 H:\Prog C\Serie 3\Exo 1\insertion.c syntax error before '*' token
    1 H:\Prog C\Serie 3\Exo 1\insertion.c syntax error before '*' token
    H:\Prog C\Serie 3\Exo 1\insertion.c In function `insertion':
    8 H:\Prog C\Serie 3\Exo 1\insertion.c `t_el' undeclared (first use in this function)
    (Each undeclared identifier is reported only once
    for each function it appears in.)
    8 H:\Prog C\Serie 3\Exo 1\insertion.c syntax error before "nouv"
    12 H:\Prog C\Serie 3\Exo 1\insertion.c `nouv' undeclared (first use in this function)
    12 H:\Prog C\Serie 3\Exo 1\insertion.c syntax error before ')' token
    15 H:\Prog C\Serie 3\Exo 1\insertion.c `val' undeclared (first use in this function)
    16 H:\Prog C\Serie 3\Exo 1\insertion.c `NULL' undeclared (first use in this function)
    19 H:\Prog C\Serie 3\Exo 1\insertion.c `debut' undeclared (first use in this function)
    H:\Prog C\Serie 3\Exo 1\Makefile.win [Build Error] [insertion.o] Error 1

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    tu fais un fichier element.h:

    Code de element.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct element
    {
    //stockage de la valeur
    int val;
    //lien vers element suivant
    struct element *suivant;
    }t_el;

    et après dans ton main, et dans tes autres fichiers, tu fais:


  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Points : 718
    Points
    718
    Par défaut
    Il faut créer un fichier .h qui permet d'exporter les types.
    Il peut contenir, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //************************DECLARATION DES TYPES ET STRUCTURES******************
    typedef struct element
    {
    //stockage de la valeur
    int val;
    //lien vers element suivant
    struct element *suivant;
    }t_el;
    ensuite dans les deux fichiers .c il suffit de faire #include "fichierExemple.h"

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Impeccable ca marche
    Merci beaucoup j'ai passé ma journée la dessus

    Une nouvelle barrière est tombé entre moi et le c

  5. #5
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Points : 718
    Points
    718
    Par défaut
    Je suggère de rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifndef C_CONSTANT_EXAMPLE
    #define C_CONSTANT_EXAMPLE
     
     
    déclarations diverses et variées...
     
     
    #endif // C_CONSTANT_EXAMPLE

    Le but étant d'éviter d'inclure par erreurs plusieurs fois un fichier:
    exemple a.c inclus a.h et b.h
    et b.h incluait déjà a.h...

    En espérant avoir été clair...

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

Discussions similaires

  1. 2 classes dans 2 fichiers sources
    Par hartecel dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 03/04/2008, 09h04
  2. Lire dans un fichier source des données
    Par kissmeimshy dans le forum Général Java
    Réponses: 7
    Dernier message: 19/03/2008, 17h22
  3. Réponses: 3
    Dernier message: 23/05/2007, 16h15
  4. Declaration plusieurs DTD dans un fichier XML
    Par sebastien2222 dans le forum Valider
    Réponses: 4
    Dernier message: 02/03/2006, 14h34

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