> Reserviert sind nur führende Unterstriche, auf die ein Großbuchstabe
> oder ein weiterer Unterstrich folgt. Alles andere, was mit
> Unterstrich anfängt, ist zwar teilweise auch reserviert, aber auf
> struct-Members trifft es nicht zu.
OK, hast Recht. Allerdings sind die Regeln für den Rest so wenig
einprägsam, dass ich mir das eher nicht im Kopf behalten würde und auf
führende Unterstriche generell verzichten würde.
Erlaubt:
struct foo {
int _bar;
};
Nicht erlaubt:
struct _foo {
int bar;
};
Um das rauszufinden, muss ich aber wirklich erst im Standard
nachgucken. (Klar, bei näherem Hinsehen ist eine gewisse Logik drin,
das _bar da oben kann mit nichts aus der Bibliothek kollidieren, da es
zum namespace von struct foo gehört und nur in diesem eine Bedeutung
hat.)
> Es ist zwar in der Norm (nicht Standard) nicht festgelegt, aber
> kennst du eine Implementation, auf der das anders als oben erwartet
> ist?
Hab' ich mir nie die Mühe gemacht, das anzusehen. Da sie als
implementation defined bezeichnet werden, nehme ich sie für derartige
Zwecke einfach nicht, sondern nehme lieber gewöhnliche Bitmasken. (An
dieser Stelle soll dem Vernehmen nach Ada einfach mal schlauer gewesen
sein.) Bitfields sind trotzdem hin und wieder recht nett, z.B. wenn
man Platz sparen will und ein paar globale Interruptflags braucht,
denen man dann nicht jedem ein Byte spendieren möchte.