ich habe mit #define xxx
am Anfang des Code eine "Constante" definiert,
später frage ich die Constante ab mit:
#if defined(xxx)
.... #endif
Der Compiler erzeugt den entsprechenden Code.
Jetzt möchte ich dass der Compiler den Code nicht erzeugt und setze den Wert auf "false"
#define xxx false
(In der Beschreibung steht auch, dass am Ende kein ; geschrieben werden darf.)
Aber der Code wird trozdem erzeugt.
In einem anderen Beitrag habe ich folgende Antwort gefunden: Wenn man das erste #define auskommentiert, wird auch die entsprechende Ausgabe nicht in den Code eingebaut.
Scheint so dass man die #define Anweisung auskommentieren muss. ?
Wie kann ich die Constanten (#define ... #ifdef ) sonst noch Ein/Aus-Schalten ?
Auskommentieren ist eine Möglichkeit, aber mir wäre lieber true und false oder 0 und 1 zu benutzen, oder auch 1 2 3 4 .... dann könnte man mit vergleichen #if defined(x) arbeiten, was noch flexiebler wäre.
Habe auch mit Google gesucht, aber keine entsprechende Antwort gefunden, ausser das Auskommentieren wie oben beschrieben.
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Daran sollte erkennbar sein, das Du ein #define brauchst um festzulegen, was passiert und einen elseZweig der ausgeführt wird, wenn die nicht aktiviert ist...
Du fragst mit #ifdef BLAH ab, ob die Präprozessorvariable BLAH überhaupt definiert wurde. Der Ersatzwert ist dabei uninteressant. Also ändert #define BLAH false nix daran, dass BLAH immer noch definiert ist und deswegen liefert #ifdef BLAH auch immer noch WAHR zurück.
Eigentlich macht man das üblicherweise anders, man kann nämlich in Präprozessorstatements auch Werte abfragen. Du könntest also schreiben:
Es gibt halt viele Wege nach Rom. Du könntest auch Deine #ifdef-Variante behalten, müsstest dann aber am Anfang entweder #define BLAH oder #undef BLAH benutzen, um die richtige Weiche zu stellen.
Habe ich dir doch gesagt, dass die Arduino Referenz nur für die Arduinofunktionalität taugt.
Nicht als Sprachreferenz.
Ich danke dir, für diese Bestätigung.
Punkt 1:
Du musst mir nicht glauben.
Punkt 2:
Wenn dir was in der Arduino Doku nicht gefällt, dann kannst du es ändern.