我正在将GCC用于STM32微控制器应用程序,但遇到了一个奇怪的现象。我在闪存中有一个常量值表,其中包含来自链接器符号的地址。现在,我想添加另一个值,该值包含来自两个Linker符号的计算(在构建时),但似乎不起作用。
看起来像这样:
extern uint32_t _ls1; // Linker symbol 1
extern uint32_t _ls2; // Linker symbol 2
const volatile uint32_t table[4] =
{
(uint32_t)(&_ls1), // 1. Correct value
(uint32_t)(&_ls2), // 2. Correct value
(uint32_t)(&_ls1) + 1, // 3. Correct value
(uint32_t)(&_ls1) + (uint32_t)(&_ls2) // 4. Wrong value, always 0
}
表中的前三个值完全正确。
每当我在计算中放入两个(或多个)链接器符号时,结果均为0。不会给出错误或警告。
有任何想法吗?