[STM32F4] 宏定义有关地址时大小写有区别

[复制链接]
141|16
CallReceiver 发表于 2025-11-22 20:24 | 显示全部楼层 |阅读模式
#define ADDR_FLASH_PAGE_148   ((uint32_t)0x0804a000)#define ADDR_FLASH_PAGE_149   ((uint32_t)0x0804a800)
如上小写地址,就没有这些警告
真奇怪
androidbus 发表于 2025-11-22 20:31 | 显示全部楼层
可以调整编译器的警告级别或敏感性设置,以减少不必要的警告。
litengg 发表于 2025-11-22 20:33 | 显示全部楼层
统一代码风格避免大小写混用导致的潜在问题。
litengg 发表于 2025-11-22 20:34 | 显示全部楼层
用DMA采样吗?有时候DMA和ADC同步没配好。
qiangweii 发表于 2025-11-22 20:36 | 显示全部楼层
编译器提供的预处理输出查看预处理后的代码,检查是否有宏定义冲突。
shashaa 发表于 2025-11-22 20:37 | 显示全部楼层
可以试试 0x0804B000 之类的,看是不是同样的问题?
xia00 发表于 2025-11-22 20:39 | 显示全部楼层
像是编译器在解析时对大写和小写地址有不同的处理逻辑
hfdy01 发表于 2025-11-22 20:43 | 显示全部楼层
个版本的编译器看看会不会好点?
boy1990 发表于 2025-11-22 20:45 | 显示全部楼层
可以试着手动转换大小写,看看编译器的警告信息会不会变化。
sourceInsight 发表于 2025-11-22 20:47 | 显示全部楼层
理论上大写小写的地址值应该是一样的,编译器居然会区分?
bbapple 发表于 2025-11-22 20:50 | 显示全部楼层
你用的是什么编译器?有没有试过换个编译器看看是不是一样的情况?
handleMessage 发表于 2025-11-22 20:51 | 显示全部楼层
是不是编译器对大写格式的地址做了额外的检查?
zhouhuanの 发表于 2025-11-22 20:54 | 显示全部楼层
试试换个编译优化等级看看会不会还有警告。
Listate 发表于 2025-11-22 20:55 | 显示全部楼层
从语法角度看,地址 0x0804A000 和 0x0804a000 在 C 语言中是完全等价的。
Mozarts 发表于 2025-11-22 20:58 | 显示全部楼层
闪存地址可能有严格的对齐要求。
_gege 发表于 2025-11-22 21:00 | 显示全部楼层
理论上大写小写的地址值应该是一样的吧
小明的同学 发表于 2025-11-23 08:10 | 显示全部楼层
在 C / C++ 中,宏定义本身不区分大小写,但宏定义中涉及的地址、标识符、寄存器名等是否区分大小写,取决于上下文和编译器 / 汇编器规则。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

1709

帖子

1

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