mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Präprozessor frage


Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
#if (ANZAHL > 1)
  uc8Portarray[1]  = 0x66;
#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.

Autor: A. K. (prx)
Datum:

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

Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups, ja okay! ;-)

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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.