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 :

Problème inclusion de .h


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème inclusion de .h
    Bonjour à tous,

    J'ai un petit problème avec les inclusions de .h et je n'arrive pas à comprendre mon erreur...

    J'ai à ma disposition les fichiers listes , Lsystem.c et leur fichier .h associés.

    Dans le fichiers listes.h, j'ai défini une structure de liste "chaine"...
    Le fichiers Lsystem.c inclus listes.h et Lsystem.h...

    Quand le prototypage d'une fonction prenant en paramêtre une "chaine" est défini dans Lsystem.c je n'ai pas d'erreur.
    Cependant quand ce dernier est défini dans le Lsystem.h, j'ai unknown type name "chaine"...

    Je ne trouve pas l'erreur... Peut-il venir de mon makefile ?

    Que souhaitez-vous que je partage comme fichiers ?

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Tu as essayé d'inclure listes.h dans ton Lsystem.h ?
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Essayes de voir si tu trouves Lsystem.h quand tu fais Ou alors un #ifdef ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    en faisant cette commande dans le terminal, dans la liste j'ai bien liste.h et Lsystem.h

    dans tout mes .h j'ai toujours la forme
    #ifndef _NOM_H
    #define _NOM_

    structures
    prototypes

    #endif

    Kirilenko : non je pensais que les inclusions se faisant uniquement dans le .c

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    je soupçonne mon makefile... :

    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
    # Création de l'exécutable 'Fractales'
     
    all: create main.o menu.o utilitaires.o mandelbrot.o julia.o IFS.o listes.o flocon.o LSYSTEMS.o Flame.o
    	gcc -lm ./bin/*.o -o Fractales `sdl-config --libs --cflags` -lSDL_ttf
     
    # Création du dossier bin (à condition que ce dernier n'existe pas déjà)
     
    create:
    	mkdir -p bin
     
     
    ############ Compilation de l'ensemble des fichiers ############
    main.o: ./src/main.c
    	gcc -c ./src/main.c -o ./bin/main.o
     
    utilitaires.o: ./src/utilitaires.c
    	gcc -c ./src/utilitaires.c  -o ./bin/utilitaires.o `sdl-config --libs --cflags`
     
    listes.o: ./src/listes.c
    	gcc -c ./src/listes.c -o ./bin/listes.o `sdl-config --libs --cflags`
     
    menu.o: ./src/menu.c
    	gcc -c ./src/menu.c  -o ./bin/menu.o `sdl-config --libs --cflags`
     
    mandelbrot.o: ./src/mandelbrot.c
    	gcc -c ./src/mandelbrot.c -o ./bin/mandelbrot.o `sdl-config --libs --cflags`
     
    julia.o: ./src/julia.c
    	gcc -c ./src/julia.c -o ./bin/julia.o `sdl-config --libs --cflags`
     
    IFS.o: ./src/IFS.c
    	gcc -c ./src/IFS.c -o ./bin/IFS.o `sdl-config --libs --cflags`
     
    Flame.o: ./src/Flame.c
    	gcc -c ./src/Flame.c -o ./bin/Flame.o `sdl-config --libs --cflags`
     
    flocon.o: ./src/flocon.c
    	gcc -c ./src/flocon.c -o ./bin/flocon.o `sdl-config --libs --cflags`
     
    LSYSTEMS.o: ./src/LSYSTEMS.c 
    	gcc -lm -c ./src/LSYSTEMS.c -o ./bin/LSYSTEMS.o `sdl-config --libs --cflags`
     
     
     
     
    # Suppression des fichiers temporaires
    clean:
    	rm -rf ./bin/*.o
     
    # Suppression de tous les fichiers, sauf les sources,
    # en vue d'une reconstruction complète
    very-clean: clean
    	rm -rf bin
    	rm -rf Fractales
    je pense qu'il manque des "dépendance" et qu'il y a des choses en trop/répétitif

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Effectivement, sans vouloir te vexer c'est loin d'être le meilleur makefile que j'ai vu penses à l'utilisation des vpath, des variables, des variables automatiques et surtout des règles implicites (make --just-print) parce que je pense que toutes tes règles pour la compil sont superflues (si tu as le vpath)

    Mais plus sérieusement je ne pense pas que ça vienne de ton Makefile.

    Je pense plutôt qu'il doit y avoir un problème dans l'ordre d'inclusion des fichiers. Si ton include de Lsystem.h (avec le prototype en question) se trouve avant le include de Listes.h et que chaine est déclaré dans liste.h, au moment de la lecture du proto dans Lsystem.h chaine n'est pas encore déclaré, vu que Liste.h n'a pas encore été parsé.

    C'est quoi l'adresse de l'erreur? Quelqu'un d'autre t'aidera pour la suite (et ton makefile avec de la chance ) parce que je m'absente.

    bon courage et bonne soirée

    cordialement

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    :mouarf en effet, j'ai fais le makefile le plus "bâteau" possible sans me casser la tête... mais à la fin il s'est avéré que ce fut plus "chiant" à gérer sans les variables automatiques et autre gadget...

    En tout cas merci d'avoir pris le temps de jeter un oeil

  8. #8
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Kirilenko : non je pensais que les inclusions se faisant uniquement dans le .c
    Euh... Pas à ma connaissance. Tu peux très bien avoir des .h du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifndef __FILE_H_INCLUDED
    #define __FILE_H_INCLUDED
     
    #include "listes.h"
     
    /* Ici pas d'erreur puisqu'on a le type chaine a notre disposition */
    chaine *f(void);
     
    #endif /* guard */
    Il n'y a qu'à voir les include de la libstd...
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

Discussions similaires

  1. Problème inclusion de code source
    Par dodi1 dans le forum Erreurs - Avertissements
    Réponses: 11
    Dernier message: 26/02/2011, 21h56
  2. problème inclusion cyclique
    Par marion5515 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/05/2009, 13h53
  3. Problème inclusion de l'API Mysql
    Par magicpm7 dans le forum Visual C++
    Réponses: 3
    Dernier message: 10/03/2008, 22h02
  4. problème inclusion variable
    Par youp_db dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2007, 10h15
  5. Problème inclusion dans un .lib
    Par Didj7 dans le forum C++
    Réponses: 6
    Dernier message: 22/01/2006, 16h00

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