E - Funktion als Makro / Allgemeine Makro - Fragen

OP #2419589
Lesenswert?
• ▲
▼
Hallo liebes Forum,

ich habe bisher noch nicht viel mit C Makros gemacht. Ich möchte einfach 
div. Berechnungen von Konstanten nicht vom Controller errechnet haben, 
sondern vom Compiler.
Wenn ich jetzt einfach hingehe und folgendes schreibe:
1
#define VAR1         123
2
#define VAR2         234
3
#define VAR3         567
4
#define TESTFACTOR    (VAR1 * (VAR2 + VAR3) / 89)

wird der Faktor dann vom Präprozessor ausgerechnet oder einfach nur die 
Zahlen eingefügt und dann vom Controller berechnet? Bzw. durch den 
Compiler herausoptimiert?

Ansonsten habe ich noch eine Frage: Gibt es ein Makro für eine 
e-Funktion?

Gruß
Bernhard
#2419612
Lesenswert?
• ▲
▼
Bernhard N. schrieb:
> Ansonsten habe ich noch eine Frage: Gibt es ein Makro für eine
> e-Funktion?

Vorsicht, das Makro macht nur reine Textersetzung! das rechnet KEINE 
Konstanten im Voraus aus.
Das macht der Compiler nachdem die Makro-Textersetzung durch ist.

d.H. es braucht keine spezielle Makro-Exp-Funktion, nimm die Normale. Ob 
der Compiler die als Konstante vorberechnen kann, hängt nur von ihm 
ab...
=> Ausprobieren
Gast #2419618
Lesenswert?
• ▲
▼
Bernhard N. schrieb:
> Wenn ich jetzt einfach hingehe und folgendes schreibe:
> #define VAR1         123
> #define VAR2         234
> #define VAR3         567
> #define TESTFACTOR    (VAR1 * (VAR2 + VAR3) / 89)
>
> wird der Faktor dann vom Präprozessor ausgerechnet oder einfach nur die
> Zahlen eingefügt und dann vom Controller berechnet? Bzw. durch den
> Compiler herausoptimiert?

Option 3. Der Präprozessor fügt einfach nur die Zahlen ein, und sofern 
die Optimierungen an sind, berechnet der Compiler dann das Ergebnis und 
trägt das als fertige Konstante ein.

> Ansonsten habe ich noch eine Frage: Gibt es ein Makro für eine
> e-Funktion?

Nein. Aber GCC kann auch die Funktion zur Compilezeit auflösen und 
gleich das Ergebnis eintragen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.