NXP MCU 技术论坛
直播中

云达贞

8年用户 939经验值
私信 关注
[问答]

请问Xtensa C++编译器的C++17版本是否支持指定初始化器?

我的 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 结构使用指定的初始值设定项。例如:

    // Initialize 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++ 编译器在这方面有什么不同吗?如果是这样,是否有关于它在哪些方面偏离标准的文档?

更多回帖

发帖
×
20
完善资料,
赚取积分