Präprozessor frage

Gast #1352944
Lesenswert?

hi!
ich habe gerade leider keinen µC zur hand an dem ich das "ausprobieren" 
kann, übersetzt der compiler diese Anweisung richtig oder wird das nicht 
gehen?

Compilieren lässt es sich zumindest mal, wenn es aber nachher im µC 
nicht läuft suche ich später ewig einen Fehler
1
#if (ANZAHL > 1)
2
  uc8Portarray[1]  = 0x66;
3
#endif

Ziel ist es, wenn das Array uc8Portarray mehr als 1 Feld hat, nur und 
ausschließlich das zweite Feld auf 42 zu setzen, geht das so?

"ANZAHL" ist hierbei ein define welches ich beim compilieren mit 
ensprechender Versionsnummer ändere.
Gast #1352963
Lesenswert?

>...aber die Präporzessor-Anweisung müsste funktionieren, oder?

Wieso nicht. Die Frage dürfte lauten: Was für ein Wurm sitzt
dir da quer im Hirn? Soll ANZAHL sich im Programm ändern?
Wenn nein, wozu der Kram? Kann man doch auch so im Quellcode
eintragen.
Gast #1352989
Lesenswert?

>Wenn nein, wozu der Kram? Kann man doch auch so im Quellcode
>eintragen.

siehe oben!
>>"ANZAHL" ist hierbei ein define welches ich beim compilieren mit
>>ensprechender Versionsnummer ändere.

Durch die defines ist es eben einfacher alle nötigen Parameter nur durch 
setzen der Versionsnummer zu ändern, ich ändere 1x die Versionsnummer 
und ändere dadurch gleichzeitig ANZAHL, DAUER, LAENGE....

Wieso es nicht funktionieren soll?
Keine Ahnung! ich habe das eben noch nie gemacht und kann es wie bereits 
gesagt im Moment nicht testen!
Wenn ich die Hardware dann wieder da habe denke ich vlt. nicht mehr an 
diese Präprozessor Anweisung und wundere mich warum das Programm nicht 
läuft!
Persönliche Seite #1353010
Lesenswert?

n00b schrieb:
> hi!
> ich habe gerade leider keinen µC zur hand an dem ich das "ausprobieren"
> kann, übersetzt der compiler diese Anweisung richtig oder wird das nicht
> gehen?

Wozu braucht man da einen µC?

Der Präprozessor läuft duch nicht auf dem µC, sondern in deinem PC.

> Compilieren lässt es sich zumindest mal, wenn es aber nachher im µC
> nicht läuft suche ich später ewig einen Fehler

Schau dir das Präcompilat an.

In GCC wird es zB mit -save-temps nicht gelöscht und erhält die Endung 
.i für C bzw. .ii für C++.

Evtl ist dann auch -g3 hülfreich.

Johann

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