#DEFINE

Hallo,

ich habe ein kleines C++ Problem. Da ich auch viel mit 3D Druck mache habe ich meine Marlin Firmware selber angepasst. Dabei in der Configuration folgende Syntax gefunden.

//#define MIXING_EXTRUDER
#if ENABLED(MIXING_EXTRUDER)
  #define MIXING_STEPPERS 3        // Number of steppers in your mixing extruder
  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
  #define GRADIENT_MIX             // Support for gradient mixing with M166 and LCD
  #if ENABLED(GRADIENT_MIX)
    #define GRADIENT_VTOOL         // Add M166 T to use a V-tool index as a Gradient alias
  #endif
#endif

Es geht jetzt nicht was MIXING_EXTRUDER bedeutet. Sondern //#define MIXING_EXTRUDER
Wenn ich die // vor der Zeile entferne werden die anderen aktiv.

Aber mache ich das in meinem Programm so bekomme ich die Fehlermeldung

exit status 1
missing binary operator before token "("

Wie mache ich das?

Wo ist die Definition von ENABLED()?
(ok, das war fast ein Witz...)

Tipp:
Wenn es irgendwie geht, verzichte auf solche Define Orgien.
In vielen Fällen geht das, denn einige C++ Features zielen genau darauf ab.

#define ENABLED(V...)       DO(ENA,&&,V)
#define DISABLED(V...)      DO(DIS,&&,V)

Das habe ich noch gefunden wenn ich in Visual Code rechts klick -> gehe zu Definition klicke
mehr nicht.

combie:
Wo ist die Definition von ENABLED()?

Oder soll es einfach heißen:

#if defined (MIXING_EXTRUDER)

Ja, ein "Variadic Macro" sowas gruseliges habe ich irgendwie schon erwartet.

Danke, da bin ich dann auch raus, nicht meine Baustelle.

Mit den defines kann man in der Marlin verschiedene Optionen aktivieren oder deaktivieren. Da die Marlin sehr universell ist und auf alle möglichen Konfigurationen angewendet werden kann ist die voll von defines.

Das define ist nicht das Problem.

Wie lautet denn die ganze Fehlermeldung?