Как использовать C++ main.cpp с PlatformIO на ESP32 / esp-idf

При использовании PlatformIO для компиляции прошивки легко возможно использовать C++ main.cpp вместо чистого C main.c, просто переименовав main.c в main.cpp

Однако вам также нужно правильно объявить app_main(). После секции #include в вашем main.cpp (или в начале файла, если у вас ещё нет секции #include), добавьте этот код:

app_main_declare.cpp
extern "C" {
    void app_main(void);
}

Это скажет компилятору, что app_main() — это функция C, а не функция C++.

Полный пример main.cpp

espidf_main_cpp_example.cpp
#include <cstdio>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>

extern "C" {
    void app_main(void);
}

void app_main() {
    while(true) {
        printf("Hello PlatformIO!\n");
        // Wait for one second
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

Check out similar posts by category: C/C++ ESP8266/ESP32 PlatformIO