Forum: Mikrocontroller und Digitale Elektronik #pragma - Was passiert da?


von Jörg (Gast)


Lesenswert?

Hi zusammen,

ich habe in dem Headerfile, in dem Special-Function-Register festgelegt 
werden, viele Zeilen in folgender Form:

#pragma ADDRESS  c0ctlr_addr 0210h  /* CAN0 control register (Low) (6N) 
*/


Jetzt ist die Frage, was die Direktive #pragma bewirkt?


Gruß
Jörg

von Timmo H. (masterfx)


Lesenswert?

Pragma ist eine Preprozssor-Direktive, die den Compiler dazu anweist 
etwas "compilerspezifisches" zu tun. Diese Pragmas sind also je nach 
Compiler und Prozessor anders.
In diesem Fall wird der Compiler wohl dazu angewiesen die 
Speicheradresse 0210h über den namen c0ctlr_addr ansprechbar zu machen 
um die Lesbarkeit im Quellcode zu verbessern. Andere Compiler z.B. für 
AVR lösen dies eher über #defines
Bei Microsoft C++ kann man über Pragmas z.B. auch libs einbinden, was 
bei gcc hingegen nicht geht. Darum sind diese Pragmas zwecks 
Portabilität immer mit Vorsicht genießen und nach Möglichkeit nur 
einsetzen wenn es nicht anders geht.
In deinem Fall ist es aber egal, da es ja nur eine art Namenszuweisung 
ist.

von Jörg (Gast)


Lesenswert?

Danke für die super Antwort!

Weiter so!

von Volker Z. (vza)


Lesenswert?

Du kannst auch in das PDF-File nc30ue.pdf im Kapitel B.7.3 schauen.
Wird mit jeder Instalation mitgeliefert.

Volker

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.