Frage zu typedef struct
-
Hallo miteinander...
Ich versuche in mein programm fertige funktionen einzubinden und habe probleme mit der parameterübergabe.
In der Headerdatei ist folgende Struktur definiert:
typedef struct { unsigned char var1; unsigned char var2; } strukturname[];
Die Funktion, welche diese Struktur als Parameter benötigt sieht folgendermaßen aus:
extern int funktion(const strukturname srtukturdefinition);
Wenn ich die Funktion jedoch in mein Prgramm einbinden will, muss ich vorher die Struktur definieren. Dies hab ich so probiert:
strukturname strukturdef; strukturdef.var1 = 1; strukturdef.var1 = 2;
Hier bekomme ich folgende Fehlermeldung:
error: array size missing in strukturdefhab auch schon probiert die struktur als array zu definieren, alá:
strukturname strukturdef[5]; strukturdef.var1 = 1; strukturdef.var1 = 2;
Hier heisst der Fehler:
error: reguest for member 'var1' in something not a structure or unionkann mir veilleicht jemand helfen?
Thx, Denny
-
Hast du diese Struct selber erzeugt? Wenn ja - lass mal die Arrayklammern beim "typedef" weg.
(du hast den Bezeichner 'strukturname' als "Array (unbestimmer Größe) von struct's" definiert - ob das im Sinne des Erfinders ist, ist fraglich)
-
Dender schrieb:
typedef struct { unsigned char var1; unsigned char var2; } strukturname[];
das kannst du nehmen um z.b. arrays anzulegen:
strukturname strukturdef = {{1,2},{3,4}}; // array davon mit 2 elementen
sonst sind die möglichkeiten aber sehr eingeschränkt.
-
Das ist ja das Problem, die Struktur ist schon fertig...
@NanoVM
die Variante klappt. Vielen Dank!
- Kann ich die Strukturelemente im Nachhinein dann noch ändern, bzw. noch welche hinzufügen?MfG Denny
-
Wer erzeugt denn solche seltsamen Struktur-Definitionen? Damit kann doch kein vernünftiger Mensch etwas anfangen.
Dender schrieb:
- Kann ich die Strukturelemente im Nachhinein dann noch ändern, bzw. noch welche hinzufügen?
Hinzufügen nicht - ändern kannst du die vorhandenen Elemente über
strukturdef[0].var1='X';