error: invalid conversion from 'unsigned char*' to 'const char*' [-fpermissive]

Hi,

ich habe einen sehr umfanhreichen Sketch, den ich am optimieren und debuggen bin. Es läuft auch alles ohne Fehlermeldung und lädt hoch. Das aber sehr langsam. 115200 eben. Nun habe ich, um das etwas zu beschleunigen, den MegaCore installiert, auf den Mega2560 einen Bootlader mit 500000 baud draufgebrannt, das funzt auch, sehr viel schneller.
Nun zum Problem:
Mein umfankreicher Sketch bringt nun beim kompilieren under Megacore 2560 den o.a. Fehler. Ich nehme an, das ist irgendeine Einstellung der Kompilerversion oder C-Version. Da hört es aber bei meinen Kenntnissen auf.

Hat jemand eine Idee?

Die Zeile bei der ausführlichen Ausgabe habe ich im Verdacht:

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11              -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_ATmega2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\cores\\MCUdude_corefiles" "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\variants\\100-pin-arduino-mega" "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\libraries\\Wire\\src" "-ID:\\daten\\Arduino\\libraries\\MCP23017_Arduino_Library_master" "-ID:\\daten\\Arduino\\libraries\\Liquidcrystal" "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\libraries\\SPI\\src" "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\libraries\\Ethernet\\src" "-ID:\\daten\\Arduino\\libraries\\Blynk\\src" "-ID:\\daten\\Arduino\\libraries\\DHT_sensor_library_master" "-ID:\\daten\\Arduino\\libraries\\OneWire" "-ID:\\daten\\Arduino\\libraries\\DallasTemperature" "-ID:\\daten\\Arduino\\libraries\\Streaming" "-ID:\\daten\\Arduino\\libraries\\PString" "-ID:\\daten\\Arduino\\libraries\\DS3232RTC" "-ID:\\daten\\Arduino\\libraries\\Time" "-ID:\\daten\\Arduino\\libraries\\RunningMedian" "-IC:\\Users\\rm\\AppData\\Local\\Arduino15\\packages\\MegaCore\\hardware\\avr\\2.0.2\\libraries\\EEPROM\\src" "-ID:\\daten\\Arduino\\libraries\\INTERVAL" "-ID:\\daten\\Arduino\\libraries\\Adafruit_Sensor-master" "-ID:\\daten\\Arduino\\libraries\\Adafruit_BME280_Library-master" "-ID:\\daten\\Arduino\\libraries\\NewPing\\src" "C:\\Users\\rm\\AppData\\Local\\Temp\\arduino_build_422806\\sketch\\Mega_unten65.ino.cpp" -o "C:\\Users\\rm\\AppData\\Local\\Temp\\arduino_build_422806\\sketch\\Mega_unten65.ino.cpp.o"
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-ID:\\daten\\Arduino\\libraries\\MCP23017_Arduino_Library_master" "-ID:\\daten\\Arduino\\libraries\\Liquidcrystal" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Ethernet\\src" "-ID:\\daten\\Arduino\\libraries\\Blynk\\src" "-ID:\\daten\\Arduino\\libraries\\DHT_sensor_library_master" "-ID:\\daten\\Arduino\\libraries\\OneWire" "-ID:\\daten\\Arduino\\libraries\\DallasTemperature" "-ID:\\daten\\Arduino\\libraries\\Streaming" "-ID:\\daten\\Arduino\\libraries\\PString" "-ID:\\daten\\Arduino\\libraries\\DS3232RTC" "-ID:\\daten\\Arduino\\libraries\\Time" "-ID:\\daten\\Arduino\\libraries\\RunningMedian" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\EEPROM\\src" "-ID:\\daten\\Arduino\\libraries\\INTERVAL" "-ID:\\daten\\Arduino\\libraries\\Adafruit_Sensor-master" "-ID:\\daten\\Arduino\\libraries\\Adafruit_BME280_Library-master" "-ID:\\daten\\Arduino\\libraries\\NewPing\\src" "C:\\Users\\rm\\AppData\\Local\\Temp\\arduino_build_422806\\sketch\\Mega_unten65.ino.cpp" -o "C:\\Users\\rm\\AppData\\Local\\Temp\\arduino_build_422806\\sketch\\Mega_unten65.ino.cpp.o"

Die, die den Parameter -fpermissive enthält, ist von da, wo es kompiliert.

Nee, das ist eine unsaubere Stelle in dem Code.

Ein impliziter Cast, welcher vom Compiler als potentiell gefährlich eingestuft wird.

Entweder den Kontext reparieren, oder einen expliziten verwenden.

Alternativ:
Die Meldung abschalten.
(tus nicht)

Was mich nur wundert, dass beim Kompilieren für den "originalen" Mega2560 deas durchläuft, beim Kompilieren für den MegaCore 2560 halt nicht.
Das reparieren besser ist, ist mir schon klar, aber wie?

Ich denk mal noch ein bisschen darauf rum ....
und schau mir meine Varieblendefinitionen an.

Fehlermeldung verstümmelt.
Code geheim.

Untestbar, selbst wenn ich den Megacore 2560 hätte.

Das reparieren besser ist, ist mir schon klar, aber wie?

Meldung lesen
Meldung verstehen
Code reparieren.
(so, oder so ähnlich, würde ich das tun)

Code nciht geheim. Hat ca. 90 kB in 10 Dateien pius 20 Libs. Ich blicke da selber bald nicht mehr durch, ist mit den Jahren gewachsen.

Die Fehlermeldung war komplett, bis auf die Pfadangaben. Gelesen habe ich sie auch. Gegoogelt auch. Deswegen kam ich ja auf -fpermissive. Das Problem habe ich mehrmals im Sketch, bei ähnlichen Routinen.

Wenn ich den Fehler nicht finde, mache ich einen Minimalsketch zum hier einstellen. Dann stelle ich auch die ausführlichen Fehlermeldungen dazu.
Bin mir aber inzwischen sicher, dass es mit den Deklarationen der Variablen zu tun hat. Der -fpermissive deckte das nur auf. Das habe ich inzwischen verstanden.

Bin mir aber inzwischen sicher, dass es mit den Deklarationen der Variablen zu tun hat. Der -fpermissive deckte das nur auf. Das habe ich inzwischen verstanden.

Ich stimme dir zu.

Die Einstellungen finden sich übrigens in der betreffenden platform.txt vom Megacore 2560

Hab mir die platform.txt mal angeschaut, so richtig schlau werde ich daraus nicht. Macht aber auch nix.

Ich hab den Fehler inzwischen gefunden. Ein buffer war unsigned char deklariert, und darin wurde ein char array "xxx" gesucht.

Nachtrag:
In dem Sketch ist mir dann aufgefallen, dass die NTP-Zeit falsch war. Kam immer irgendwas mit Jahr 2036. nach längerer Probiererei kam ich dahinter, dass ich den unsigned char buffer, der eigentlich als genereller Zwischenspeicher gedacht war, auch im ntp Teil verwendet wurde. Und das ändern der Deklaration brachte nun den Fehler mit sich.

Ein unerwünschter Seiteneffekt!
Das sind interessante Fehler.

Deswegen habe ich das ja auch noch gepostet.