乐鑫技术交流
直播中

jjll652

9年用户 1456经验值
私信 关注
[问答]

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

回帖(1)

甘满盛

2023-3-1 15:09:48
GNU 扩展?您可以尝试将“-pedantic”传递给 g++。这将禁止对标准进行扩展。
举报

更多回帖

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