1. #1
    Membre averti
    Homme Profil pro
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 690
    Points : 446
    Points
    446

    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 averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    novembre 2012
    Messages
    187
    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 : 187
    Points : 422
    Points
    422

    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
    Membre expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 763
    Points : 3 810
    Points
    3 810

    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 averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    novembre 2012
    Messages
    187
    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 : 187
    Points : 422
    Points
    422

    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 averti
    Homme Profil pro
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 690
    Points : 446
    Points
    446

    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. 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