void Zeiger
-
Folgendes Problem
void* Vram; // Kann auch unsigned short sein. // Surface ist Speicher im Videospeicher Vram = (unsigned long*)Surface; // Hier meint der Compiler Vram unbekannte Größe // und void mit Typen nicht möglich. Vram[x,y]=value;
-
sicher, void ist auch kein Typ, hat eine unspezifizierte größe. Dereferenzieren unmöglich.
-
Mögliche Lösungen?
-
Vielleicht mal eine andere Tonart probieren, Cheffe?
-
Andere Frage.
Warum geht das nicht.
unsigned long* pvram; void* universal; universal = pvram; // Das müsste doch gehen. // Trozdem erkennt er später universal nicht.
-
ilinoi schrieb:
Mögliche Lösungen?
Ich habe das mit drei Pointer gelöst, ganz einfach. Da gibt's nicht viel Nachzudenken.
alsouchar *VRAM; RGB16 *VRAM; //16 Bit, sizeof (short int) RGBA *VRAM; //32 Bit, sizeof (int32)
Falls du es mit einem void-ptr löst, musst du, sobald du drauf schreiben willst, in char konvertieren und die Farbe reinschreiben, also bei 16 Bit 2 char's. Das ist aber langsamer, da jedesmal gecastet werden muss und dann mehrmals kopiert werden muss, anstatt eine Zuweisung, z.B. int a=b;, bei 32 Bit.