Gerhard schrieb:> } BITS;> uint32_t RAW;> }
zu
uint32_t RAW;
}bob;
semi, keine anonyme Union
>> //Init>> union fnc_lat i_lat_init = {3,0,0,0,0,0,0,0,0,0,0,0,0};>
union fnc_lat i_lat_init = {{3,0,0,0,0,0,0,0,0,0,0,0,0}};
> union fnc_lat i_lat_save = i_lat_init; //FEHLER: expression must have a> constant value
funktioniert.
i_lat_save.BITS.cb hat den Wert 3.
Gerhard schrieb:> wenn ich const union ... schreibe geht es auch nicht.
Weil ein "const" keine Konstante markiert, sondern eine konstante
Variable. Das klingt zwar bescheuert, aber so haben die C Götter das mal
eingetütet. Erst C++ hat da (ein wenig) ein Einsehen.
Gerhard schrieb:> } BITS;> uint32_t RAW;> };
1. fehlt da bei dir das Semikolon
> const union fnc_lat i_lat_init = {{3,0,0,0,0,0,0,0,0,0,0,0,0}};
2. Müssen da doppelte {{ und }} hin
3.: Kompiliere einfach mit C++, da geht sowas. Schreibe dann auch
"constexpr" vor die letzte Zeile um sicherzustellen, dass die "statisch"
initialisiert wird.
Kindergärtner schrieb:> Was natürlich fürchterlich in die Hose geht.
Klar, aber das sagt ihm dann schon der Compiler. Und so wie er es jetzt
gemacht hat geht auch dies.
A. K. schrieb:> Klar, aber das sagt ihm dann schon der Compiler.
Ja, durch unverständliche kryptische Error-Messages...
> Und so wie er es jetzt gemacht hat geht auch dies.
Ja, mit mehr Makros geht alles...
DirkZ schrieb:> ich schreib's nochmal: keine anonyme Union, Semikolon fehlt.
Die union ist nicht anonym, sie heißt "fnc_lat". Dein vorschlag würde
gleich eine Instanz anlegen; das will er an der Stelle aber gar nicht.
DirkZ schrieb:> ich schreib's nochmal:
Naja, dein 1. Post war nicht gerade... verständlich