Typdefinition in andern Header-Files verwenden



  • Hi Leute!

    Ich habe folgendes Problem:
    Ich habe einen Datentyp mit typedef in einer Headerdatei (nennen wir sie A.h) erstellt. Um eine Variable dieses Datentyps in einer beliebigen .c-Datei zu deklarieren, muss ich diese Headerdatei einbinden, soweit ist das mir noch klar.
    Nun habe ich aber in einer .c-Datei (nennen wir sie B.c) eine Funktion, die diesen Datentyp als Parameter verwendet und die ich ebenfalls in anderen c-Files verwenden will. Daher habe ich eine Datei namens "B.h", die von den entsprechenden anderen c-Files inkludiert wird. An dieser Stelle tritt dann das Problem auf: Wie kann ich in der "extern-Deklaration" im Headerfile B.h als Parameter der Funktion den in A.h definierten Typ verwenden?

    Hier nochmal als Code:

    A.h

    typedef struct{
    					unsigned char romcode[8];
    					unsigned char scrpad[9];
    					} DEVICE;
    

    B.c

    #include "A.h"	
    
    void OWReadScrpad(DEVICE tempsens)
    {
       doit();
    }
    

    B.h

    void OWReadScrpad(DEVICE tempsens);
    

    Muss ich in B.h auch A.h inkludieren? Das fände ich ziemlich komisch, in einem Header-File einen anderen zu inkludieren...

    Viele Grüße,
    Stefan



  • oh, B.h sollte natürlich lauten:

    extern void OWReadScrpad(DEVICE tempsens);
    


  • Das fände ich ziemlich komisch, in einem Header-File einen anderen zu inkludieren...

    Warum? Ich mache das andauernd. Bau include guards ein, dann kann eigentlich nicht viel schiefgehen.

    Muss ich in B.h auch A.h inkludieren?

    Wie du es drehst und wendest, der Typ muss zum Zeitpunkt der Funktionsdeklaration schon bekannt sein. Da ist es doch schlau, ihn auch aus A.h zu holen, sonst müsstest du ihn nämlich an zwei verschiedenen Stellen definieren (oder die Struktur nocheinmal ausschreiben, was noch schlimmer wäre).



  • Okay, also inkludiere ich dann A.h auch in B.h...

    Danke!


Anmelden zum Antworten