Gast
#821185
Hallo, laut meinen bisherigen C-Kenntnissen bedeutet variable++, daß variable erst in dem Ausdruck verwendet wird und dann um 1 erhöht wird. Warum meckert der Compiler (WinAVR 20071221 bzw. avr-gcc 4.2.2) in folgendem Ausdruck (wo "=>" steht)
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 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
=> error: lvalue required as left operand of assignment Nun ja, was hindert ihn jetzt daran, erst den linken Wert zu nehmen, um die Zuweisung zu machen und danach diesen Wert dann um 1 zu erhöhen? Wenn ich die Zeile "auseinanderziehe" reset_counter = eeprom_read_byte (eepromaddress_ptr); reset_counter++; gibt es kein Problem. Gefällt mir sogar besser, da "Schritt für Schritt" zumindest als Anfänger noch einfacher nachvollziehbar. Ist aber halt eine Grundsatzfrage. P.S.: Mit diesem vielleicht etwas merkwürdig ausschauenden EEPROM-Konstrukt verfolge ich folgende Idee: Auf einem CAN-Bus haben alle uC die gleiche Software (wegen späterem update per Bootloader). Die individuellen Parameter jedes uC will ich im EEPROM ablegen und beim Starten mit fester Adresstabelle einlesen.