Forum: Compiler & IDEs Wertzuweisung


von Markus C. (ljmarkus)


Lesenswert?

Hallo.

Ich stehe gerade auf dem Schlauch.

in der config.h steht:
1
#define WERT1 0x00
2
#define WERT2 0x20
3
...

möchte ich in der main.c jetzt den Wert ändern mit

WERT1 = 0x01

dann bekomme ich die Fehlermeldung:
error: lvalue required as left operand of assiggment

System: WinAvr 20071221 mit ATmega1280


Danke, Markus

von Stefan E. (sternst)


Lesenswert?

Markus C. wrote:

> möchte ich in der main.c jetzt den Wert ändern

Geht nicht. Du kannst Präprozessor-Konstanten nicht zur Laufzeit ändern. 
Am besten schnappst du dir das nächstbeste C-Buch, und liest mal nach, 
was der Präprozessor eigentlich macht. Und dann auch gleich noch, was 
Variablen sind.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Obacht WERT1 udn WERT2 sind Makros! Ändern geht zur Kompilierzeit 
nicht zur Laufzeit mit

#undef WERT1
#define WERT1 0x01

von Markus C. (ljmarkus)


Lesenswert?

hmm, schade...

der Hintergrund ist der, es handelt sich dabei um MAC Adresse für den 
Webserver von Ullrich. Ich wollte eigendlich das er sich die MAC Adresse 
aus dem EEPROM holt, weil so brauche ich nicht für jeden Webserver 
seperate Updates erstellen weil der Webserver einen ETH Bootloader hat.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mach aus dem #define eine Variable.
1
uint_8 WERT1 = 0x00;
2
uint_8 WERT2 = 0x20;
Dann mußt du nur vor der Stelle, an der diese Werte verwendet werden, 
deine Adresse aus dem EEPROM holen und mit dieser Adresse arbeiten.

Langfristig könnte der Erwerb eines C-Buches auch nicht schaden ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.