Forum: Compiler & IDEs Feste Adressierung C30 Compiler


von CManiac (Gast)


Lesenswert?

Hallo,

da es hier wahrscheinlich am Besten reinpasst schildere ich euch mal 
meine Frage:

Im muss eine feste Adressierung meiner RAM-Variablen vornehmen (aus 
Kompatibilitätsgründen)

das sieht dann ungefähr so aus:
1
#define UCHAR     unsigned char
2
3
UCHAR StatusFlag     __attribute__ (address(0x800));//  ;Word der Status-Flag's
4
UCHAR JBStatus      __attribute__ (address(0x801));//  ;Jumper-Status-Flag's
5
UCHAR Stoerung       __attribute__ (address(0x802));//  ;enthaelt Stoerungs-Ursache

Meine Frage ist nun, sollte man es so machen? Oder ist die Compiler 
unabhängige Variante besser?
1
#define StatusFlag(* (unsigned char *)0x800)

Meine Frage zielt darauf ab:
Wenn man ein #define macht, dann kann der Compiler die Variable ja nicht 
richtig verwalten, da er ja eigentlich nur einen Bezeichner für eine 
RAM-Adresse erstellt, richtig?

In MPLAB kann man ja ein Watch Fenster nutzen, welches aber anscheinend 
dann nur mit Variante 1 geht.

Was haltet ihr für besser/sinvoller?

von Gast (Gast)


Lesenswert?

hallo,

mach doch aus dem #define ein typedef

von CManiac (Gast)


Lesenswert?

Was hat das für einen Vorteil?

von Gast (Gast)


Lesenswert?

#define geht indirekt über den Präprozessor an den Compiler, typedef 
direkt.

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.