Hallo,
ich möchte gerne das F() Makro beim Serial.Print benutzen.
Serial.print(F("Beginn ReadAndSendMeasurementValue..."));
oder
Serial.println(F("Beginn ReadAndSendMeasurementValue..."));
Interessanterweise kann ich dies entweder im Hauptprogramm nutzen oder in allen Header Dateien die ich mit eingebunden habe.
Sobalt ich es im Hauptprogramm und zugleich in mindestens einer Headerdateien nutze, bekomme ich die nachfolgende Fehlermeldung. Hat jemand eine Ahnung warum das so ist?
Am Ende ein befindet sich auch ein Codebeispiel.
Vielen Dank
In file included from C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Arduino.h:259:0,
from sketch\MQTT_Bodensensor.ino.cpp:1:
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:16:51: error: __c causes a section type conflict with __c
#define PSTR(s) (extension({static const char __c[] PROGMEM = (s); &__c[0];}))
^
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/WString.h:38:76: note: in definition of macro 'FPSTR'
#define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
^
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/WString.h:39:34: note: in expansion of macro 'PSTR'
#define F(string_literal) (FPSTR(PSTR(string_literal)))
^
C:\Users\USERNAME\OneDrive...\OneDrive\Privat\Arduino\Projekte\MQTT_Bodensensor - Test\MQTT_Bodensensor\MQTT_Bodensensor.ino:21:18: note: in expansion of macro 'F'
Serial.println(F("\nSerielle Verbindung eingereichtet."));
^
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:16:51: note: '__c' was declared here
#define PSTR(s) (extension({static const char __c[] PROGMEM = (s); &__c[0];}))
^
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/WString.h:38:76: note: in definition of macro 'FPSTR'
#define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
^
C:\Users\USERNAME\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/WString.h:39:34: note: in expansion of macro 'PSTR'
#define F(string_literal) (FPSTR(PSTR(string_literal)))
^
sketch\LEDHandler.h:27:20: note: in expansion of macro 'F'
Serial.println(F("Initialisiere LEDHandler..."));
^
exit status 1
Fehler beim Kompilieren für das Board NodeMCU 1.0 (ESP-12E Module).
MAIN Programm
#include "LEDHandler.h" // Einbinden der LED Unterstützung.
LEDHandler ledHandler; // LED Handler Initialisieren
void setup()
{
ledHandler.SetEspLED_Off(); // ESP LED aus (Stromsparen)
// Initialisiere Serial für Seriellen Monitor
Serial.begin(115200);
Serial.println(F("\nSerielle Verbindung eingereichtet."));
}
void loop()
{
// Hier sollte nichts enthalten sein.
}
LEDHandler.h
// Ist erforderlich, weil dem Linker die Arduino-Befehlsumgebung zu diesem Zeitpunkt noch nicht bekannt ist.
// (Der Linker ist Programm, dass die einzelnen Programmteile zu eine einem Gesamtprogramm zusammensetzt,
// damit es vom Compiler in einen vom Arduino verständlichen Maschinencode übersetzt werden kann)
#include <Arduino.h>
// Verhindern, dass die Bibliothek mehrfach geladen werden kann (und so zu Compiler-Fehlermeldungen führt)
#ifndef __LEDHandler__
#define __LEDHandler__
class LEDHandler
{
//------------------------------
private:
//------------------------------
public:
LEDHandler()
{
Serial.println(F("Initialisiere LEDHandler..."));
}
void SetEspLED_On()
{
}
void SetEspLED_Off()
{
}
void SetEspLED_TimeOn(int timeOn)
{
}
};
#endif