Forum: Mikrocontroller und Digitale Elektronik Präprozessor frage


von n00b (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

Nein, so geht das nicht. Denn 66 ist zwar 0x42, aber 0x66 nicht 42.

von n00b (Gast)


Lesenswert?

ups, ja okay! ;-)

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

von (prx) A. K. (prx)


Lesenswert?

Ja.

von holger (Gast)


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.

von n00b (Gast)


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!

von Johann L. (gjlayde) Benutzerseite


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

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.