Forum: Compiler & IDEs Vom Compiler berechnete Variablen ausgeben?


von Werner A. (homebrew)


Lesenswert?

Wie kann ich Variablen, die während der Compilierung vom Compiler
berechnet werden anzeigen.
Ich bin der Meinung, das ich früher mal eine Anweisung in den Code
geschrieben habe, die mir sowas bei der compilierung auf die
Kommandozeile ausgeben konnte.
irgenwie so...

#define F_CPU = 8000000ul
#define prescaler_timer0   64
#define t0_ints_per_second 1000

OCR0A = F_CPU  prescaler_timer0  t0_ints_per_second;

//echo $$OCR0A ??

von Karsten Brandt (Gast)


Lesenswert?

normale Strings kannst Du mit

#warning "TestString"

ausgeben. Wie Du aber an den Inhalt Compiler-definierter Variablen
kommst weiss ich auch nicht.

von Günter R. (galileo14)


Lesenswert?

Bei der Zeile "OCR0A = F_CPU  prescaler_timer0  t0_ints_per_second;"
weist erst der Prozessor der Variablen OCR0A (bzw. diesem SFR) den vom
Compiler berechneten Wert zu, wenn das Programm ausgeführt wird. Man
könnte daran denken zu schreiben (wie Karsten Brandt richtig anmerkte)

#define XXX (F_CPU  prescaler_timer0  t0_ints_per_second)
#warning XXX

aber das funktioniert so nicht, da dabei einfach

warning: #warning xxx

angezeigt wird, d.h. der Wert ist zu diesem Zeitpunkt nicht berechnet.
Offensichtlich wird der Wert auch nicht vom Präprozessor berechnet (der
ja nur diverse Textersetzungen durchführt), sondern erst vom Compiler,
und das kommt wohl zu spät, da die Zeile "#warning XXX" ja eine
Präprozessor-Anweisung ist.

Vielleicht weiß jemand, wie man den Präprozesor dazu bringen kann, den
Wert zu berechnen, oder den Compiler, zu einem späteren Zeitpunkt den
berechneten Wert doch noch auszugeben?

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.