Vom Compiler berechnete Variablen ausgeben?

OP #410976
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 ??
Gast
normale Strings kannst Du mit

#warning "TestString"

ausgeben. Wie Du aber an den Inhalt Compiler-definierter Variablen
kommst weiss ich auch nicht.
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.