柴库柴库 发表于 2025-3-25 11:00

宏定义有关地址时大小写有区别么?

#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

闪存地址可能有严格的对齐要求
页: [1]
查看完整版本: 宏定义有关地址时大小写有区别么?