[其他ST产品] STM32CubeIDE 中的 C++ 在哪里?

[复制链接]
809|10
 楼主| lilaiju 发表于 2025-3-18 09:00 | 显示全部楼层 |阅读模式
在 STM Cube IDE 中启动新项目时,会给出生成 C++ 而不是 C 代码的选项,但当选择C++时,仍然会时生成 C 代码......想使用 C++ ,咋配置呢?

公羊子丹 发表于 2025-3-19 08:02 | 显示全部楼层
STM32CubeIDE 里默认是 C 代码,即使选了 C++,生成的 HAL 代码还是基于 C 的,需要手动调整。
周半梅 发表于 2025-3-19 08:04 | 显示全部楼层
你试过把 main.c 改成 main.cpp 吗?然后在编译器选项里加上 -fno-rtti -fno-exceptions 以避免不必要的 C++ 运行时特性。
帛灿灿 发表于 2025-3-19 08:05 | 显示全部楼层
在 Project → Properties → C/C++ Build → Settings 里,检查编译器是不是 G++,有时候默认还是用的 GCC(C 编译器)。
童雨竹 发表于 2025-3-19 08:06 | 显示全部楼层
你需要手动用 extern "C" 包裹 HAL 头文件,否则链接时可能会报未定义引用的错误。
万图 发表于 2025-3-19 08:07 | 显示全部楼层
STM32 的 HAL 库本身是用 C 写的,如果要用 C++,你可以封装成类,但底层还是要调用 HAL C 代码。
Wordsworth 发表于 2025-3-19 08:08 | 显示全部楼层
你试过在 CMakeLists.txt 或 Makefile 里手动添加 CPPFLAGS 选项吗?有时候 STM32CubeIDE 生成的 Makefile 可能没有正确配置 C++ 选项。
Bblythe 发表于 2025-3-19 08:09 | 显示全部楼层
如果你要用 C++ 的标准库,记得开启 libstdc++,但注意 STM32 没有默认的操作系统支持 new 和 delete,要自己管理内存。
Pulitzer 发表于 2025-3-19 08:10 | 显示全部楼层
你是想在裸机环境下用 C++ 还是配合 FreeRTOS?在 RTOS 里用 C++ 可能需要额外的 heap 管理。
Uriah 发表于 2025-3-19 08:11 | 显示全部楼层
试试看 Project → Convert to C++ Project,然后手动改 编译工具链,让它默认用 C++ 编译器。
Clyde011 发表于 2025-3-19 08:12 | 显示全部楼层
你可以手动创建 .cpp 文件,比如 MyClass.cpp,然后写 C++ 代码,看看 CubeIDE 能不能正确编译和链接。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部