mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variantenhandling von C-Programmen


Autor: Ron Mon (ucprogrammierer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe eine Frage bezüglich Varaintenhandling von Sourcen. Ich 
beschäftige mich gerade mit dem S12 uC. Als Programmierumgebung verwende 
ich Codewarrior.

Jetzt zu meinen Problem. Ich habe ein Prgramm geschrieben das einerseits 
über PWM Eingänge Befehle erhält und zum anderen über CAN. Wenn ich 
jetzt die CAN Variante verwenden will sollen die PWM Sourcen und die 
Teilprograme nicht mitcompiliert werden. Wie kann ich diese 
ausschließen. Meine erste Idee war durch eine Variable und if Abfragen. 
Aber mir gefällt dies nicht.

Wie jemand eine andere Möglichkeit.

Gruß
ucprogrammierer

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst das den Präprozessor machen lassen.

#define PWM_SOURCE 1 // oder 0 wenn der Teil nicht rein soll
#define CAN_SOURCE 1 // oder 0 ...

#if PWM_SOURCE
// hier Code für PWM
#endif

#if CAN_SOURCE
// hier Code für CAN
#endif

Autor: Ron Mon (ucprogrammierer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort.

Klappt wunderbar.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist immer wieder erstaunlich, wie die Leute große Projekte in C auf 
die Beine stellen wollen, ohne die grundlegensten Grundlagen zu 
kennen...

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine andere Möglichkeit wäre mittels

#ifdef PWM_SOURCE
// hier Code für PWM
#endif

#ifdef CAN_SOURCE
// hier Code für CAN
#endif

und darüber einfach irgendwo

#define PWM_SOURCE
oder
#define CAN_SOURCE

so wirds doch gemacht um das mehrmalige einbinden eines Includes
zu verhindern oder nicht?

lg

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar, das kann man auch machen, wenn einem Ja/Nein reicht.

Das #define mit einem Wert gibt einem mehr Möglichkeiten, weil man im 
#if die Werte abfragen kann. Z.B. kann man dann sowas machen:

#define PWM_SOURCE 1 // oder 0 wenn der Teil nicht rein soll
                     // oder 2 wenn zusätzlich Debugcode rein soll

#if PWM_SOURCE
// hier Code für PWM
#if (PWM_SOURCE == 2)
// hier Debugcode für PWM
#endif
#endif

Autor: Ron Mon (ucprogrammierer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

schön das ich dich zum Staunen gebracht habe. Aber man kann doch schon 
mal etwas vergessen.
Mein Projekt hat CAN, SPI und steuert einen Brushlessmotor mit 
Positionserfassung über Hallsensoren an. Ich will das Projekt nicht auf 
die Beine stellen sondern ich habe es schon auf die Beine gestellt. Hab 
vielleicht deshalb etwas zu kompliziert gedacht.

Naja wird immer Meckerer geben, die zu allem einen Kommentar schreiben 
müssen.

Gruß
ucprogrammierer

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.