Include Probleme



  • Hallo ich hab folgendes Problem.
    In meinem File Test.h habe ich ein strcut xyz erstellt.Jetzt includiere ich in ein File Test2.h mein Test.h. Dort will ich jetzt den Prototype einer externen funktion erstellen:
    extern void abc(xyz *pTest); Jetzt bekomme ich die Fehlermeldung xyz wäre undefiniert.Kann mir jemand sagen wo mein Problem liegt?



  • PeterD schrieb:

    Hallo ich hab folgendes Problem.
    In meinem File Test.h habe ich ein strcut xyz erstellt.Jetzt includiere ich in ein File Test2.h mein Test.h. Dort will ich jetzt den Prototype einer externen funktion erstellen:
    extern void abc(xyz *pTest); Jetzt bekomme ich die Fehlermeldung xyz wäre undefiniert.Kann mir jemand sagen wo mein Problem liegt?

    Ohne Code isses verdammt schwer, dir zu helfen, weißt du das? Na gut, probier ich mal, zu entziffern, was du sagen willst.

    Du hast eine Headerdatei namens Test.h:

    /*Die Struktur*/
    struct xyz{};
    

    Jetzt hast du eine Headerdatei, die du einbinden willst:

    /*Eine Funktion in der Headerdatei*/
    extern void adb(struct xyz*pTest);
    

    Wenn das so stimmt, drei Fragen:
    1. Warum definierst du den Prototypen ohne Not als extern ? Das macht man allerhöchsten bei Funktionen, und auch da ist schlechter Stil. Pack die Deklaration ohne extern in die Headerdatei und die Definition ebenfalls ohne in eine *.c-Datei.
    2. Wo hast du das struct vor xyz in deinem Funktionsprototyp? Das muss schon sein.
    3. Wo wird die Datei eingebunden? Vor oder nach der Definition der Struktur?



  • Glühbirne schrieb:

    [Das macht man allerhöchsten bei Funktionen, und auch da ist schlechter Stil.

    Bullshit, ich meinte, bei Variablen macht man das so. Bei Funktionen macht das (ohne "C" danach) keinen Sinn.



  • PeterD schrieb:

    extern void abc(xyz *pTest); Jetzt bekomme ich die Fehlermeldung xyz wäre undefiniert.Kann mir jemand sagen wo mein Problem liegt?

    Du solltest statt

    extern void abc(xyz *pTest);
    

    lieber

    extern void abc(struct xyz *pTest);
    

    verwenden, oder besser gleich

    typedef struct {...} xyz;
    

    Dann klappts auch wieder mit

    extern void abc(xyz *pTest);
    


  • Wutz schrieb:

    oder besser gleich

    typedef struct {...} xyz;
    

    oder noch besser gleich

    typedef struct xyz {...} xyz;
    

Anmelden zum Antworten