Я использую PlatformIO и в настоящее время разрабатываю код для ESP32. У меня есть несколько библиотек, в которых я хочу иметь возможность ведения журнала отладки.
Чтобы включить журнал отладки, я подумал, что было бы неплохо установить константу через #define MYDEBUG
или около того в main.cpp, который затем оценивается внутри включенных библиотек. Я разбил свой код на этот простой пример:
main.cpp:
#include <Arduino.h>
#define MYDEBUG
#include "LedSetup.h"
void setup()
{
Serial.begin(9600);
LedSetup::doSomething();
Serial.println("Is there output?");
}
void loop()
{
}
LedSetup.h:
#ifndef LedSetup_h_
#define LedSetup_h_
#include <Arduino.h>
class LedSetup
{
public:
static void doSomething();
private:
static void logDebug(String message)
{
#ifdef MYDEBUG
Serial.print("LedSetup: ");
Serial.println(message);
#endif
}
};
#endif
LedSetup.cpp:
#include "LedSetup.h"
void LedSetup::doSomething()
{
logDebug("Did something!");
}
Когда я запускаю это, я ожидаю увидеть две строки в последовательном журнале:
Did something!
и Is there output?
Но я вижу только Is there output
. Очевидно, что определение MYDEBUG
недоступно во включенном заголовочном файле. Почему?
Ранее я видел нечто похожее, где они используют #define как способ настройки вещей во включаемых заголовочных файлах, например, здесь:
https://github.com/FastLED/FastLED/wiki/ESP8266-notes
Что я здесь наблюдаю?
Заранее спасибо,
Timo