Preprocessor

#4731707
Lesenswert?

Hallo,
Kann der AVR-GCC Preprocessor auch Integer-Divisions durchführen
Beispiel: 10 \ 3 = 3

Eigentlich suche ich nur eine Truncate-Function, also die 
Nachkommastellen abschneiden. Wichtig ist das die Berechnung der 
Preprocessor durchführt.

Danke für jede Hilfe

Gruß Scotty
#4731833
Lesenswert?

Peter II schrieb:
> Rolf M. schrieb:
>> Karsten S. schrieb:
>>> Hallo,
>>> Kann der AVR-GCC Preprocessor auch Integer-Divisions durchführen
>>> Beispiel: 10 \ 3 = 3
>>
>> Ja, kann er.
>
> seit wann?

Seit es ihn gibt, vermute ich.

> Der Preprocessor rechnet doch nicht (außer im #ifdef)

Nicht in #ifdef, aber in #if. Da kann er auch die Division durchführen.
1
#if 10 / 3 == 3
2
printf("Jawohl!\n");
3
#endif

> sondert der Compiler rechnet.

Deshalb ja auch die Frage, warum es denn so wichtig ist, dass der 
Preprozessor das macht. Außer zur Nutzung in einer #if-Direktive fällt 
mir kein Grund dafür ein.
Gast #4733498
Lesenswert?

Rolf M. schrieb:
> Deshalb ja auch die Frage, warum es denn so wichtig ist, dass der
> Preprozessor das macht. Außer zur Nutzung in einer #if-Direktive fällt
> mir kein Grund dafür ein.

Baudraten Initialisierung?  Gib ein #define für den CPU Takt und eines 
für die gewünschte Baudrate in einer "config.h" und an geeigneter Stelle 
lässt man den Preprozessor den Wert fürs Register ausrechnen.
#4733565
Lesenswert?

Hmm.. schrieb:
> Rolf M. schrieb:
>> Deshalb ja auch die Frage, warum es denn so wichtig ist, dass der
>> Preprozessor das macht. Außer zur Nutzung in einer #if-Direktive fällt
>> mir kein Grund dafür ein.
>
> Baudraten Initialisierung?  Gib ein #define für den CPU Takt und eines
> für die gewünschte Baudrate in einer "config.h" und an geeigneter Stelle
> lässt man den Preprozessor den Wert fürs Register ausrechnen.

Und genau das geht eben nicht (ist aber eigentlich auch nicht nötig). 
Man kann das den Preprozessor nicht ausrechenen lassen, da er, wie oben 
schon gesagt, nur in #if rechnet, weil er da selber das Ergebnis 
braucht.
#define macht nur eine Textersetztung. Es schaut nicht in den 
eingesetzten Text rein, interpretiert den irgendwie und rechnet dann 
was. Es ist so ähnlich wie die suchen/ersetzen-Funktion eines 
Texteditors. Wenn du dem sagst, er soll jedes X durch 3+3 ersetzen, dann 
macht er das. Er ersetzt es nicht stattdessen durch 6.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren