So was?
Code:
typedef union
{
uint32_t l;
uint8_t b[4];
struct
{
unsigned int bit0:1;
unsigned int bit1:1;
unsigned int bit2:1;
...
};
} blah_t;
blah_t foo (blah_t blah)
{
blah.bit2 = 0;
if (blah.bit0)
blah.b[3] = 0;
return blah;
}
Indirekter Zugriff auf die Elemente eines Bitfeldes gehen nicht. Wenn du das haben willst, musst du selber rumfummeln.
::Edit::
Zu beachten ist dabei noch, daß es sich dabei um GNU-C handelt. Andere C-Compiler verschlucken sich evtl an dem anonyman struct. In diesem Falls einfach einen Namen vergeben, dann sind aber die Zugriffe lästiger.
Für so was kann man auch Initializer schreiben. Beim Initialisieren des Anonymous muß der aber ganz vorne stehen im typedef.
Code:
blah_t blubb =
{
{
.bit2 = 1
},
.b[3] = 4
};
Lesezeichen