Wie man C++17 / C++23 mit PlatformIO mit ESP32 / Arduino verwendet

English Deutsch

Problem:

Standardmäßig verwendet PlatformIO -std=gnu++11 als Compiler-Flag, aber Sie möchten C++17- oder C++23-Funktionen verwenden.

Wenn Sie einfach

platformio.ini
build_flags = -std=gnu++17

verwenden, führt dies dazu, dass g++ mit g++ ... -std=gnu++17 ... -std=gnu++11 ... Compiler-Flags aufgerufen wird. Das letzte - gnu++11 bzw. C++11 hat Vorrang.

Lösung

Um C++17 zu aktivieren, verwenden Sie

platformio.ini
build_flags = -std=gnu++17
build_unflags = -std=gnu++11

Um C++23 zu aktivieren (in G++ noch nicht vollständig implementiert), müssen Sie derzeit -std=gnu++2a verwenden:

platformio.ini
build_flags = -std=gnu++2a
build_unflags = -std=gnu++11

Check out similar posts by category: Arduino, ESP8266/ESP32, PlatformIO