Compileranweisung in Sketch für Library?

Hallo zusammen,

ich versuche gerade eine Compileranweisung im Sketch:

#define REALTIME 1

in einer Library auszuwerten:

if (REALTIME == 1)

geht aber nicht… ist das prinzipiell nicht möglich, oder ist der Syntax falsch??

LG Michael

Wo ist der Beweissketch?

Wenn Du globale #define möchtest, die in jedem Modul gleich sind, dann müssen die in der Kommandozeile des Compilers angegeben werden. Aber KaiNeahnung, wie man das in der IDE macht :frowning:

Im Code geht das nur in einer Header-Datei, die auch von der Bibliothek mit #include gelesen wird, oder direkt im Header der Bibliothek. Das ärgert mich auch schon lange Zeit, habe aber noch keine ordentliche Lösung dafür gefunden.

Nein, das funktioniert nicht.

Das kannst du vielleicht in der *.h Datei auswerten, ja.
Aber die *.cpp der Lib wird das NIE zu sehen bekommen.

Hat jemand eine Idee,
wie man das hinbekommen könnte?? :confused:

Anders als schon aufgezählt?

Nicht per #define.

buddhafragt:
Hat jemand eine Idee,
wie man das hinbekommen könnte?? :confused:

Du kannst in Deinem .ino Sketch Definitionen reinschreiben und danach(!) die Header-Datei der Library einbinden . z.B.

#define REALTIME       1
#include <libname.h>

und dann kannst Du in der Header-Datei libname.h die vorherigen #defines auswerten und davon abhängig eine bedingte Kompilierung durchführen. Syntax beachten!

Informiere Dich wie “bedingte Kompilierung” (conditional compilation) mit Arduino funktioniert und denke daran, dass in der Programmiersprache C/C++ nur das im Scope (“Sichtbarkeitsbereich”) des Compilers verfügbar ist, was vorher(") im Code ddeklariert wurde!

Also die #defines ggf. nicht in den Sketch sondern in die .h Headerdatei der Library schreiben!