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 alsextern
? Das macht man allerhöchsten bei Funktionen, und auch da ist schlechter Stil. Pack die Deklaration ohneextern
in die Headerdatei und die Definition ebenfalls ohne in eine *.c-Datei.
2. Wo hast du dasstruct
vorxyz
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;