Datentyp aus Funktion direkt als Datentyp* (Pointer) übergeben



  • schlauch schrieb:

    die Funktion ist aber nur dazu gedacht eine für die API-Funktion neu befüllte Struktur zu erzeugen. Sie wird eigentlich nur beim Aufruf dieser API-Funktion verwendet und die static struct kann in sofern nicht versehentlich mit falschen Werten neu erzeugt und damit überschrieben werden.

    Die Aufrufe der API-Funktion können sich aber nicht überschneiden (Threads), ja?



  • schlauch schrieb:

    Das stimmt wohl - die Funktion ist aber nur dazu gedacht eine für die API-Funktion neu befüllte Struktur zu erzeugen. Sie wird eigentlich nur beim Aufruf dieser API-Funktion verwendet und die static struct kann in sofern nicht versehentlich mit falschen Werten neu erzeugt und damit überschrieben werden.

    mach doch sowas:

    // MyStruct initialisieren
    void setup (struct MyStruct *s)
    {
     s.i = ...;
     ...
    }
    ...
    // in zwei schritten eine neue struct anlegen
    struct MyStruct s;
    setup (&s);
    ...
    

    ^^so erhältste jedesmal eine neue struct wo du sie brauchst.
    wenn am anfang alles 0 sein soll, kannste dir sogar 'ne eigene init-funktion sparen und machst es einfach so:

    struct MyStruct s;
    memset (&s, 0, sizeof(s));
    

    🙂


Anmelden zum Antworten