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



  • 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.
    🙂



  • @CStoll

    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';


Anmelden zum Antworten