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 :

Erreur d'inclusion d'headers


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Points : 460
    Points
    460
    Par défaut Erreur d'inclusion d'headers
    Hello,

    J'ai un petit problème d'inclusion d'headers.
    C'est à dire que lors de la compilation, un type déclaré dans un autre header et utilisé par un le header n'est pas reconnu.

    J'ai donc :
    csA.c
    csA.h

    et

    csB.c
    csB.h

    De telle manière que csA.h définit des types de structures dont j'ai besoin de connaître l'existance dans csB.h

    Pour simplifier, admettons ceci

    csA.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #ifndef CSA_H
    #define CSA_H
     
    typedef struct
    {
       ...
    }maStruct;
     
    ....
     
    #endif
    csB.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "csA.h"
    #include "csB.h"
     
    maStruct fonction_utilisant_maStruct(...)
    {
    ....
    }
    csB.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifndef CSB_H
    #define CSB_H
     
    maStruct fonction_utilisant_maStruct(...);
     
    #endif
    Je ne sais pas si c'est parce que j'ai la tête dans le guidon que je vois pas le caca qui me bloque mais à priori, le compilateur est bien censé voir la définition de maStruct avant son appel dans csB.C.

    Merci d'avance pour votre aide.
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Chez moi sous Devuan 2.0 pas d'erreur de compilation :

    Quel est le message d'erreur ? Ta fonction fonction_utilisant_maStruct renvoie bien une variable de type maStruct ?

  3. #3
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Tel que le décris, c'est csb.h qui doit inclure csa.h
    Indique l'erreur exacte indiquée par le compilateur et la ligne concernée.
    L'erreur est peut-être à l'édition des liens et n'aurait rien à voir avec les include.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Citation Envoyé par dalfab
    L'erreur est peut-être à l'édition des liens et n'aurait rien à voir avec les include.
    C'est une bonne piste, en testant le code source, c'est effectivement la première erreur générée : il n'y avait pas de fonction main() dans le fichier .c.

  5. #5
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Points : 460
    Points
    460
    Par défaut
    Alors, je ne sais ni pourquoi ni comment, dans un fichier source csC.c annexe qui utilise ce même header définissant maStruct ( csA.h ), se trouvait après l'include de csB.h (csC.c utilise aussi csB.h ). Par conséquent, la compilation foirait et me donnait "type inconnu". J'ai le replacé l'include csA.h en amont de csB.h et c'était repartit comme l'an 40.
    Je ne comprends par contre pas pourquoi l'erreur du type inconnu se reportait dans sur le header csB.h et pas csC.h.
    J'ai du faire un copier coller hasardeux ou en changeant d'onglet, j'ai fais une mauvaise manip en sélectionnant les lignes et ça les aurait interverties ( ça m'est déjà arrivé ).

    Merci pour vos réponses
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

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

Discussions similaires

  1. [CKEditor] pb fckeditor chez ovh !!!upload ok! erreur browser cannot modify header information
    Par damien40 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 29/03/2007, 20h37
  2. Erreur d'inclusion
    Par malves dans le forum Linux
    Réponses: 1
    Dernier message: 12/03/2007, 01h13
  3. Réponses: 1
    Dernier message: 13/11/2006, 23h14
  4. Erreur sur inclusion types.h avec cygwin
    Par Bayard dans le forum Réseau
    Réponses: 12
    Dernier message: 12/11/2006, 16h48
  5. erreur LNK2019 avec propre header.
    Par FamiDoo dans le forum C++
    Réponses: 1
    Dernier message: 02/08/2006, 16h37

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