Problem struct initialisieren



  • Hallo,

    ich versuche gerade ein Codebeispiel von der msdn Seite zum Laufen zu bringen.
    Aber bei der Zeile:

    osReader = {0}; //osReader ist vom Typ Overlapped, also ein struct

    bekomem ich folgende Fehlermeldungen:

    error C2059: Syntaxfehler : '{'
    error C2143: Syntaxfehler : Fehlendes ';' vor '{'
    error C2143: Syntaxfehler : Fehlendes ';' vor '}'

    Overlapped ist wie folgt definiert:
    typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union {
    struct {
    DWORD Offset;
    DWORD OffsetHigh;
    };
    PVOID Pointer;
    };
    HANDLE hEvent;
    } OVERLAPPED,
    *LPOVERLAPPED;

    Kann mir jemand sagen, was falsch ist?? Habe es 1:1 abschrieben.



  • Diese Initialisierungsliste funktioniert nur bei der Deklaration der Variablen, nicht für spätere Zuweisungen:

    // das funktioniert:
    OVERLAPPED reader = {0};
    
    // das ist nicht erlaubt:
    OVERLAPPED reader;
    /* weiterer Quelltext */
    reader = {0};
    


  • Ok, das habe ich verstanden. Aber da die Deklaration im Header steht, kann ich nicht einfach im Header

    OVERLAPPED osReader = {0};

    schreiben. Da motzt der Compiler auch.
    error C2059: Syntaxfehler : '{'
    error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen

    Wie kann ich dieses Problem dann lösen?

    Aber danke für deinen Hinweis.



  • Mir fällt da nur ein, die einzelnen Member von osReader einzeln mit Werten zu belegen. Hast du eigentlich das komplette Code-Beispiel abgeschrieben oder nur Auszüge?

    (btw, zum besseren Verständnis wäre es auch hilfreich, das Umfeld dieser Deklaration zu sehen)



  • Habe das ganze Beispiel abgeschrieben.

    Werde einfach die Variable lokal definnieren in der Methode, wo sie benutzt wird. Damit ist das Problem gelöst.

    Trotzdem danke für eure Hilfe.


Anmelden zum Antworten