SocialButterfly 发表于 2025-10-27 08:42

在STM32CubeIDE项目中,“Placement new”和“std::tuple”法正常工作

代码在 Visual Studio 中可以编译,但在 STM32CubeIDE 中无法编译。std::tuple<int, int, int> testTuples() { return { 1, 2, 3 }; }; struct Test { int a = 0, b = 0, c = 0; }; int main(){    auto = testTuples();    void* mem = malloc(3 * sizeof(int));    auto test = new(mem)Test;}令人惊讶的是,"std::pair" 可以正常工作。尽管tuples本质上只是一种语法,但没有placement new的支持确实很麻烦。因为这样,要么必须在需要时手动重新初始化结构体,要么就得分配新的内存,要么就得使用 “memset ()” 。


jcky001 发表于 2025-10-27 14:48

STM32CubeIDE默认使用的GCC ARM Embedded工具链可能不支持C++17

onlycook 发表于 2025-10-27 16:48

看看STM32CubeIDE中是否启用了正确的C++标准支持

elephant00 发表于 2025-10-27 14:49

可能是由于工具链对C++特性的支持不完整或存在bug。

probedog 发表于 2025-10-27 19:50

在STM32CubeIDE中,检查项目属性,要启用了正确的C++标准

solty 发表于 2025-10-27 20:51

可以考虑使用std::pair或自定义结构作为替代方案。

kmnqhaha 发表于 2025-10-27 23:37

若工具链版本受限,需改用低版本兼容的语法。
页: [1]
查看完整版本: 在STM32CubeIDE项目中,“Placement new”和“std::tuple”法正常工作