我正在使用一些最初编写的代码IAR https://en.wikipedia.org/wiki/IAR_Systems#IAR_Embedded_Workbench并使用 GCC 编译器将其转换为编译。
然而,我被困在某一行,因为我不理解语法或发生了什么。
__root const uint32_t part_number @ ".part_number" = 701052;
我发现 __root 是为了使该变量包含在最终代码中,即使没有任何内容实际引用它。const意味着它不会改变并且保存在 ROM 而不是 RAM 中。
这是我不遵循的@“.part_number”部分。我得到的具体错误是“程序中存在杂散‘@’”。
我知道 @ 不是标准 C 的一部分,但我没有运气找到任何解释我所看到的语法的东西。
From 此知识库条目 https://www.iar.com/support/tech-notes/compiler/linker-error-for-absolute-located-variable/,它看起来像是指示链接器将变量放入特定部分的语法:
如果您将对象放入命名段中:
__no_init struct setup located_configuration @ "SETUP";
等效的 GCC 语法是通过section
属性。
const uint32_t part_number __attribute__ ((section (".part_number")) = 701052;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)