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 übersprungenWie 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.