正在编写一个简单的 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
|
|