Gast
#3301180
Liebe Kollegen! Kann mir jemand sagen wo der Fehler liegt?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
|
Anzeige
|
Union Struct Fehler
Gast
#3301180
Liebe Kollegen! Kann mir jemand sagen wo der Fehler liegt?
i_lat_init ist keine Konstante. Globale und statische Variablen kann man aber nur mit Konstanten initialisieren.
Gast
#3301266
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.
Gast
#3301277
wenn ich const union ... schreibe geht es auch nicht. Darf ich nur Werte nehmen??
Gast
#3301280
Danke! Hab die zweite { schon dazugeschrieben.
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.
Gast
#3301287
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. Was auch in C geht:
#define 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;
Gast
#3301290
A. K. schrieb: > Was auch in C geht: Es sei denn, er versucht danach intuitiv so etwas:
Was natürlich fürchterlich in die Hose geht.
Gast
#3301291
Das fehlende Semikolon ist beim kopieren verschwunden. Im Code steht es. Cool, dass dir das aufgefallen ist. Ich habe es so gelöst:
DANKE! für Eure Hilfe! 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.
Gast
#3301299
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...
Gast
#3301301
Gerhard schrieb: > } BITS; > uint32_t RAW; > } ich schreib's nochmal: keine anonyme Union, Semikolon fehlt. uint32_t RAW; } beliebiger_name;
Gast
#3301304
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 Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|