Struct Typ an Funktion übergeben
-
Hallo alle zusammen. Das ist mein erster Beitrag hier im Forum, der mir schon öfter die Erleuchtung gebracht hat! Hoffentlich auch dieses mal.
Ich komme mal gleich zur Sache:
Ich habe mir per struct mehrere neue Typen definiert:struct d_Reservation { char Kunde[20]; int Anzahl; int BuchNummer; }; struct d_Vermietung { d_Reservation Datum[5][12][31][12]; }; struct d_Flugzeug { int Typ; char Name[8]; int Passagiere; d_Vermietung Vermietung; }; int main(int argc, char *argv[]) { d_Flugzeug Flugzeug[10];
Jetzt möchte ich gerne das Array Flugzeug.Name an eine Funktion übergeben, in der mittels Schleife alle 10 Flugzeuge Namen zugewiesen werden sollen.
Also die Schleife ist ja nicht das Ding, aber ich habe keine Ahnung wie die Übergabe aussehen soll. Hab schon versucht das ganze mit Pointern zu realisieren, hat aber nicht geklappt.Danke für eure Mühe!
-
//AUFRUF namesetzen(Flugzeug); //FUNKTION void namensetzen(d_Flugzeug *p){ for(int i=0; i< 10; i++) strcpy((*(p++)).name,"TEST"); }
-
Danke für die schnelle Antwort!
Eine ähnliche Idee hatte ich auch schon und ich denke mal das würde so auch klappen, allerdings erkennt er meinen struct Typ nicht, da die Funktion eine eigene Datei ist und per Header bekanntgemacht wurde.Wie kann ich den Typ mit der Funktion bekanntmachen?
Hab mal was mit "extern" gelesen, aber weiß nicht wie ich das nutzen soll.
-
wenn der struct in einer andere datei ist, muss du evtl.
extern struct d_Flugzeug;
noch in die datei deiner funktion einfügen. damit deine funktion weis, das dein strukt extern definiert wurde... bin mir aber nich sicher ob man das so handababt
void namensetzen(struct d_Flugzeug *p){..}
-
Jetzt dachte ich es funktioniert, aber jetzt meckert der Header rum weil er den Typ nicht kennt. Wenn ich ihn per extern in die Header datei einbinde, dann erkennt er den Typ im ganzen Programm nicht mehr.
So siehts im Moment aus:
Hauptprogramm:struct d_Reservation { char Kunde[20]; int Anzahl; int BuchNummer; }; struct d_Vermietung { d_Reservation Datum[5][12][31][12]; }; struct d_Flugzeug { int Typ; char Name[8]; int Passagiere; d_Vermietung Vermietung; }; int main(int argc, char *argv[]) { d_Flugzeug Flugzeug[10]; init(Flugzeug);
dann der Header:
void init(d_Flugzeug *p);
Hier gibts den Fehler
error C2065: 'd_Flugzeug': nichtdeklarierter Bezeichner
error C2065: 'p': nichtdeklarierter Bezeichner
error C2182: 'init': Unzulässige Verwendung des Typs 'void'und die Funktion
extern struct d_Reservation { char Kunde[20]; int Anzahl; int BuchNummer; }; extern struct d_Vermietung { d_Reservation Datum[5][12][31][12]; }; extern struct d_Flugzeug { int Typ; char Name[8]; int Passagiere; d_Vermietung Vermietung; }; void init(struct d_Flugzeug *p) { for(int i=0; i< 10; i++) { strcpy_s((*(p++)).Name,"TEST"); } }
Außerdem habe ich Warnings in der Funktion:
warning C4091: 'extern ': Ignoriert auf der linken Seite von 'd_Flugzeug', wenn keine Variable deklariert wurdeHab keinen Plan woran das liegen könnte!
Danke noch mal für die Unterstützung
-
Hab jetzt des Rätsels Lösung!!
den struct einfach komplett in den Header kopieren und dann nur per
include in die einzelnen Dateien einbinden--> fertigDanke für deine Hilfe!!!
CU
-
resis schrieb:
Hab jetzt des Rätsels Lösung!!
den struct einfach komplett in den Header kopieren und dann nur per
include in die einzelnen Dateien einbinden--> fertigNa also, es geht doch!
-
Javaner schrieb:
Na also, es geht doch!
na super !
wenn wir dich nicht hätten