Pointer auf Struct
-
Hallo,
ich habe follgenden Code:
union uPixel { ulong ulColor; struct { uchar Blue; uchar Green; uchar Red; const uchar ucReserved; } }; struct uPixel *ptrBildschirm = (union uPixel *) (ptrModeInfoBlock->PhysBasePtr);
so... wie greife ich nun über den Pointer ptrBildschirm auf die Variable Red zu? GCC meckert, bei
ptrBildschirm->Red = 0xff;
das lieget doch daran, dass Red nicht teil der Union ist, sondern teil der untergeordneten Struktur!?
nun, wie greife ich über einen Pointer darauf zu??
danke,
Cheebi
-
Es gibt keine unnamed structs in C. Deine Struktur uPixel hat praktisch nur einen Member, ulColor. Du musst der Struktur schon einen Namen geben.
-
union uPixel { ulong ulColor; struct { uchar Blue; uchar Green; uchar Red; const uchar ucReserved; } RGB[b];[/b] // semikolon nicht vergessen ;) }; struct uPixel *ptrBildschirm = (union uPixel *) (ptrModeInfoBlock->PhysBasePtr); ptrBildschirm->RGB.red = 0xFF;
"unnamed unions" und structs gibt es als compilererweiterung. ansi c sagt davon nichts. folglich MUSST du das struct da drin schon noch benennen.
edit: ich les hier aus unbestaetigten quellen, dass C++ sowas haben soll...
-
c.rackwitz schrieb:
"unnamed unions" und structs gibt es als compilererweiterung. ansi c sagt davon nichts. folglich MUSST du das struct da drin schon noch benennen.
edit: ich les hier aus unbestaetigten quellen, dass C++ sowas haben soll...
iirc gibt's das auch in C99.
-
c.rackwitz schrieb:
edit: ich les hier aus unbestaetigten quellen, dass C++ sowas haben soll...
C++ kennt nur unnamed unions, aber keine unnamed structs.
-
Hallo,
ja gut, dann muss ich wohl die struktur benennen. Aber das hilft mir nicht weiter. Wie greife ich dann mit dem pointer auf elemente der struktur in der union zu?
union uPixel { ulong ulColor; struct sSeperated { uchar Blue; uchar Green; uchar Red; const uchar ucReserved; } };
Nun habe ich die struktur sSeperated genannt. Wie greife ich jetzt mit dem pointer darauf zu???
Danke soweit....
Cheebi
-
das hab ich dir schon demonstriert. du musst die struct als "typen" nicht benennen, sondern nur erzeugen und ihr nen namen geben. siehe oben mein code.
-
upps tut mir leid*g*
das hab ich glatt übersehen...VIELEN DANK!