我正在处理一些最初为IAR编写并使用GCC编译器将其转换为编译的代码。
然而,由于我不理解语法或正在发生的事情,我坚持使用一条特定的行。
__root const uint32_t part_number @ ".part_number" = 701052;
我发现的__root是这样的,即使没有任何实际引用它的变量也包含在最终代码中。 const意味着它不会改变并保存在ROM而不是RAM中。
我不遵循@“。part_number”部分。我得到的具体错误是“stray'@'in program”。
我知道@不是标准C的一部分,但我没有找到解释我所看到的语法的任何运气。
如果有人能够解释,我会非常感激。
由于
答案 0 :(得分:6)
从this KB entry看起来它的语法就是指示链接器将变量放入特定的部分。
如果您将对象放入命名段:
__no_init struct setup located_configuration @ "SETUP";
等效的gcc语法是通过section
属性。
const uint32_t part_number __attribute__ ((section (".part_number")) = 701052;