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 strukturdef

hab 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 union

kann mir veilleicht jemand helfen?

Thx, Denny

Hallo,

In der Headerdatei ist folgende Struktur definiert:

> typedef struct  
> {  
> unsigned char var1;  
> unsigned char var2;  
> } strukturname[];

Ich wuerde von den [] am Ende absehen, weil es bedeutet, dass du immer ein Array erstellen musst, wenn du mit dieser struct arbeitest.

Stattdessen solltest du

extern int funktion(const strukturname srtukturdefinition);

in

extern int funktion(const strukturname \* strukturdefinition);

umwandeln.

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 strukturdef

hab 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 union

Ja klar, strukturdef ist ja ein Array, kein struct.

strukturdef[0].var1 = 1;

sollte aber gehen.

Gruesse,
Moritz