Variantenhandling von C-Programmen

OP #1057150
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
Gast #1057275
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
Persönliche Seite #1057289
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
OP #1057362
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

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