[其他ST产品] 宏定义有关地址时大小写有区别么?

[复制链接]
979|19
 楼主| 柴库柴库 发表于 2025-3-25 11:00 | 显示全部楼层 |阅读模式
ui, PA, AG, T3, AD, 定义
#define ADDR_FLASH_PAGE_148   ((uint32_t)0x0804A000)#define ADDR_FLASH_PAGE_149   ((uint32_t)0x0804A800)
如上大写定义地址,会出现上百个警告。
#define ADDR_FLASH_PAGE_148   ((uint32_t)0x0804a000)#define ADDR_FLASH_PAGE_149   ((uint32_t)0x0804a800)
如上小写地址,就没有这些警告
真奇怪

stormwind123 发表于 2025-3-25 11:57 | 显示全部楼层
如果可能,调整编译器的警告级别或敏感性设置,以减少不必要的警告。
stormwind123 发表于 2025-3-25 11:58 | 显示全部楼层
统一代码风格避免大小写混用导致的潜在问题。
laocuo1142 发表于 2025-3-25 14:23 | 显示全部楼层
使用编译器提供的预处理输出查看预处理后的代码,检查是否有宏定义冲突。
Wordsworth 发表于 2025-3-26 08:18 | 显示全部楼层
你试过别的地址吗?比如 0x0804B000 之类的,看是不是同样的问题?
Bblythe 发表于 2025-3-26 08:20 | 显示全部楼层
感觉像是编译器在解析时对大写和小写地址有不同的处理逻辑,这真是个奇怪的坑。
Pulitzer 发表于 2025-3-26 08:20 | 显示全部楼层
这要是个 Bug,那也太隐蔽了,换个版本的编译器看看会不会好点?
Uriah 发表于 2025-3-26 08:21 | 显示全部楼层
这个问题如果搞不明白,可以试着手动转换大小写,看看编译器的警告信息会不会变化。
Clyde011 发表于 2025-3-26 08:22 | 显示全部楼层
不管啥原因,这都太诡异了,真的很想知道具体的警告内容,能贴出来看看吗?
公羊子丹 发表于 2025-3-26 08:23 | 显示全部楼层
这也太奇怪了吧,理论上大写小写的地址值应该是一样的,编译器居然会区分?
周半梅 发表于 2025-3-26 08:24 | 显示全部楼层
你用的是什么编译器?有没有试过换个编译器看看是不是一样的情况?
帛灿灿 发表于 2025-3-26 08:25 | 显示全部楼层
这个警告具体是啥?是不是编译器对大写格式的地址做了额外的检查?
童雨竹 发表于 2025-3-26 08:26 | 显示全部楼层
可能是某个编译选项在作怪,试试换个编译优化等级看看会不会还有警告。
万图 发表于 2025-3-26 08:26 | 显示全部楼层
这是不是和 CubeIDE 或者某个 ST 提供的库有关?有些库对格式可能有特殊要求。
过期的塔头 发表于 2025-3-31 23:06 | 显示全部楼层
从语法角度看,地址 0x0804A000 和 0x0804a000 在 C 语言中是完全等价的。
过期的塔头 发表于 2025-3-31 23:07 | 显示全部楼层
0x0804A000 和 0x0804a000 代表的是同一个地址。
kzlzqi 发表于 2025-3-31 23:13 | 显示全部楼层
闪存地址可能有严格的对齐要求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

80

帖子

0

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