我的 ESP-IDF v5.0 应用程序是用 C++ 编写的。在我的主 CMakeList.txt 中,我有以下设置:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
我在 `main.cpp` 中添加了以下语句来检查:
std::cout << __cplusplus << "\n";
我收到的输出是:
这一切都如我所料。但是,我可以在这段代码中为常规 C 结构使用指定的初始值设定项。例如:
// Ini
tialize PWM
ledc_timer_config_t ledcTimer = {
.speed_mode = _ledcMode, // timer mode
.duty_resolution = _ledcResolution, // resolution of PWM duty
.timer_num = LEDC_TIMER_0, // timer index
.freq_hz = 5000, // frequency of PWM signal
.clk_cfg = LEDC_AUTO_CLK // Auto select the source clock
};
ledc_timer_config(&ledcTimer);
使用“标准”C++17 我预计这会产生编译器错误,因为我读过的文档说直到 C++20 才支持指定的初始化器。
Xtensa C++ 编译器在这方面有什么不同吗?如果是这样,是否有关于它在哪些方面偏离标准的文档?