Hallo Peter,
Hinzu kommt noch die Aussage, dass dieser Punkt nicht in
seinem Buch besprochen wird, ich finde es aber sehr
Unwarscheinlich, dass bitfields nicht in einem C-Buch
beschrieben werden.
guter Punkt, dachte das Strukturen unbekannt sind.
Ansonsten, wenn Strukturen genutzt werden, ohne union mit integer-Wert, nochmal eine alternative, so wie ich sie aus Bequemlichkeit verwende:
Gegeben sei eine Struktur x, die durch Alignment oder Summe der Inhalte 32-bit breit sei:
#define UI32ACCESS(variable) (*((unsigned long *)(&variable)))
void f(void)
{
x.Paket1 = 5; // setzt den Strukturteil Paket1 in x auf 5
UI32ACCESS(x) = 0; //löscht alle bits zu 0
}
Dies ist immer gefährlich, nicht sehr sauber, aber z.B. auch auf Strukturen anwendbar, die man nicht in der Hand hat, die also extern deklariert und in libraries verwendet werden. Das Define sollte sein, da ein vergessenes & oder * nicht immer wirklich auffallen muß.
achim