Hallo,
Ich habe eine Klasse mit einer Methode geschrieben, welche einen optionalen Parameter beinhaltet. Die Methode sieht so aus
uint16_t TwoSimpleWire::Receive(uint16_t timeOut = 2200)
{
//Something happens
}
Wenn ich als Board den Arduino Nano auswähle, funktioniert das Kompilieren fehlerfrei.
Wenn ich als Board allerdings den ESP8266 auswähle, dann bekomme ich folgende Fehlermeldung :
TwoSimpleWire.cpp:89:10: error: default argument given for parameter 1 of 'uint16_t TwoSimpleWire::Receive(uint16_t)' [-fpermissive]
89 | uint16_t TwoSimpleWire::Receive(uint16_t timeOut = 2200)
| ^~~~~~~~~~~~~
In file included from C:\Users\matth\Documents\Arduino\Empfaenger_LongTest\TwoSimpleWire.cpp:10:
C:\Users\matth\Documents\Arduino\Empfaenger_LongTest\TwoSimpleWire.h:25:14: note: previous specification in 'uint16_t TwoSimpleWire::Receive(uint16_t)' here
25 | uint16_t Receive(uint16_t timeOut = 2200);
| ^~~~~~~
exit status 1
default argument given for parameter 1 of 'uint16_t TwoSimpleWire::Receive(uint16_t)' [-fpermissive]
Wenn ich den Default-Wert von 2200 weg lasse, funktioniert das kompilieren.
Nach Googeln von fpermissive bedeutet dieses Flag, dass der Compiler bestimmte Warnungen und Fehler quasi "durchgehen" lässt. Wobei es sich hier ja um gar keinen Fehler handelt.
Wie bekomme ich die Methode mit optionalem Parameter zum Laufen, bzw. warum funktioniert der Code auf einem Arduino Nano ohne Fehlermeldung ?