[其他ST产品] std::string 导致编译错误

[复制链接]
223|14
zhouyou99 发表于 2025-11-19 11:50 | 显示全部楼层 |阅读模式
正在编写一个简单的 UART 控制振荡器程序。
当引入 std::string 时,basic_string.h 和 stl_iterator.h 头文件会引发多个错误。
错误信息看起来像是某些内容未被包含,比如 remove_const_t、add_const_t 等类型别名(或模板)未定义。
这些错误中,GLIBCXX_THROW 的使用与 C++17 标准不符 ,该项目是通过 STM32CubeIDE 生成的,我本以为配套的库会与 IDE 默认设置的 C++ 标准兼容。
相关错误信息如下:
c:\st\stm32cubeide_1.12.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-20.10.win32_1.0.200.202511161003\tools\arm-none-eabi\include\c++\10.3.1\bits\stl_iterator.h:2307:26: error: 'remove_const_t' does not name a type
2307 |     using __iter_key_t = remove_const_t<
      |                          ^~~~~~~~~~~~~~
c:\st\stm32cubeide_1.12.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-20.10.win32_1.0.200.202511161003\tools\arm-none-eabi\include\c++\10.3.1\bits\stl_iterator.h:2319:10: error: 'add_const_t' was not declared in this scope
2319 |     pair<add_const_t<__iter_key_t<_InputIterator>>,
      |          ^~~~~~~~~~~
c:\st\stm32cubeide_1.12.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-20.10.win32_1.0.200.202511161003\tools\arm-none-eabi\include\c++\10.3.1\bits\stl_iterator.h:2319:22: error: '__iter_key_t' was not declared in this scope; did you mean '__iter_val_t'?
2319 |     pair<add_const_t<__iter_key_t<_InputIterator>>,
      |                      ^~~~~~~~~~~~
      |                      __iter_val_t

spicy 发表于 2025-11-19 15:46 | 显示全部楼层
C++ 标准库版本估计不匹配
stormwind123 发表于 2025-11-19 15:47 | 显示全部楼层
编译器配置问题吧
七毛钱 发表于 2025-11-19 16:47 | 显示全部楼层
C++ 标准库版本过旧?
内政奇才 发表于 2025-11-19 17:48 | 显示全部楼层
错误提示 GLIBCXX_THROW 与 C++17 不兼容,表明工具链的 C++ 标准库实现可能存在版本冲突。
classroom 发表于 2025-11-19 15:50 | 显示全部楼层
STM32CubeIDE 生成的嵌入式项目默认使用 C++11 或 GNU++11 标准,而 std::string 和某些 STL 组件在嵌入式环境中可能受限
cr315 发表于 2025-11-19 15:50 | 显示全部楼层
用 C++14 或 C++17
duo点 发表于 2025-11-19 20:51 | 显示全部楼层
应该避免使用 std::string
onlycook 发表于 2025-11-19 21:51 | 显示全部楼层
建议改用C 风格字符串或者静态字符串类
onlycook 发表于 2025-11-19 22:52 | 显示全部楼层
工具链可能因安装不完整导致标准库缺失,重新安装工具链
powerantone 发表于 2025-11-19 22:53 | 显示全部楼层
嵌入式项目中通常禁用异常和 RTTI 以减少代码体积
probedog 发表于 2025-11-19 16:13 | 显示全部楼层
调整 C++ 标准 为 C++14/C++17。
solty 发表于 2025-11-19 17:24 | 显示全部楼层
检查工具链完整性,必要时重新安装。
spicy 发表于 2025-11-19 19:24 | 显示全部楼层
手动定义缺失的类型别名
stormwind123 发表于 2025-11-19 15:55 | 显示全部楼层
建议提供完整的编译日志
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

67

帖子

0

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