[STM32U5] HAL 库使用无效关键字?

[复制链接]
144|41
闪烁阴影 发表于 2026-9-17 10:49 | 显示全部楼层
用 CMake 的朋友,记得在 target_compile_options 中给 CXX 加 -Wno-error=register,别搞错了加到 CFLAGS 上。
jonas222 发表于 2026-9-17 12:40 | 显示全部楼层
register 在这里毫无作用?
mattlincoln 发表于 2026-9-17 14:10 | 显示全部楼层
抑制特定警告              
ccook11 发表于 2026-9-17 15:06 | 显示全部楼层
ST是否有计划更新HAL库支持C++编译?
51xlf 发表于 2026-9-17 15:36 | 显示全部楼层
全局适配 C++ 标准              
mickit 发表于 2026-9-17 20:20 | 显示全部楼层
把它删掉,生成的汇编一个字节都不会变,性能零影响。
plsbackup 发表于 2026-9-17 20:55 | 显示全部楼层
算术运算只能在寄存器之间进行,访存必须走 LDR/STR。这是编译器后端在指令选择阶段自动完成的,跟源码里写不写 register 完全无关。
nomomy 发表于 2026-9-18 11:47 | 显示全部楼层
局部修改源码              
MessageRing 发表于 2026-9-18 13:21 | 显示全部楼层
直接用 CubeMX 生成 HAL 代码,然后编译时用 -Wno-error=register,这样 HAL 库就不会有问题了。
hilahope 发表于 2026-9-19 12:34 | 显示全部楼层
如何配置编译器忽略register警告?
backlugin 发表于 2026-9-19 16:06 | 显示全部楼层
是否需要调整C++标准版本?              
彩虹彼岸 发表于 2026-9-20 11:27 | 显示全部楼层
升 CubeU5 到最新版,或者将 HAL 相关代码放在 .c 文件中,用 extern "C" 隔离。
febgxu 发表于 2026-9-20 17:15 | 显示全部楼层
通过预处理宏移除register关键字
deliahouse887 发表于 2026-9-20 21:32 | 显示全部楼层
修改 LL 库头文件              
ulystronglll 发表于 2026-9-21 09:24 | 显示全部楼层
在 HAL 头文件前定义宏              
abotomson 发表于 2026-9-21 10:48 | 显示全部楼层
通过预处理宏或编译器选项全局处理register关键字,保持库文件的原始兼容性。
wengh2016 发表于 2026-9-21 11:37 | 显示全部楼层
C++17 里 register 是保留字,用宏定义掉保留字属于未定义行为;而且宏会污染你自己的代码和 STL,可能引发莫名其妙的编译错误
loutin 发表于 2026-9-21 12:14 | 显示全部楼层
通过编译器选项屏蔽              
tabmone 发表于 2026-9-21 15:31 | 显示全部楼层
降低 C++ 标准或使用 C 模式包装
dspmana 发表于 2026-9-21 16:53 | 显示全部楼层
更新HAL库              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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