Sorry, mein Fehler. Dass muss so heißen:
#define DEBUG
#ifdef DEBUG
#define debugPrint(text) Serial.print(text)
#define debugPrintln(text) Serial.println(text)
#else
#define debugPrint(text)
#define debugPrintln(text)
#endif
void setup()
{
#ifdef DEBUG
Serial.begin(9600);
#endif
}
void loop()
{
debugPrintln("test");
delay(1000);
}
#ifdef Duh!
Ich habe das bei mir mit mehr Stufen drin. Also #define DEBUG 2 z.B. Dann muss es #if sein. Hatte ich beim kopieren und abändern übersehen ![]()
Das geht dann aber immer noch nicht mit zwei Argumenten. War mir nicht ganz klar, da ich Modifizierer wie HEX dabei nicht verwende.
Dafür kann man es dann so machen:
#ifdef DEBUG
#define debugPrint(text) Serial.print(text)
#define debugPrintln(text) Serial.println(text)
#define debugPrint2(text, arg) Serial.print(text, arg)
#define debugPrintln2(text, arg) Serial.println(text, arg)
#else
#define debugPrint(text)
#define debugPrintln(text)
#define debugPrint2(text, arg)
#define debugPrintln2(text, arg)
#endif
Dann geht das auch. Gerade ausprobiert ![]()
Vielleicht kennt noch jemand eine schönere Lösung. Funktionen überladen geht halt bei Makros nicht. Daher müssen die Unterschiedliche Namen haben