C编程中@符号的使用

8tntrjer  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(444)

我正在处理一些最初为IAR编写的代码,并将其转换为使用GCC编译器进行编译。
然而,我被一个特定的行卡住了,因为我不理解语法或发生了什么。

__root const uint32_t part_number @ ".part_number" = 701052;

我发现的__root是这样的,即使没有任何东西实际引用它,变量也会包含在最终代码中。const 意味着它不会改变,并且保存在ROM中而不是RAM中。
我不理解的是@“.part_number”部分。我得到的具体错误是“stray '@' in program”。
我知道@不是标准C的一部分,但我还没有找到任何解释我所看到的语法的东西。

gzszwxb4

gzszwxb41#

this KB entry中,它看起来像是指示链接器将变量放置到特定节中的语法:
如果将对象放置到命名线段中:

__no_init struct setup located_configuration @ "SETUP";

等价的GCC语法是通过section属性。

const uint32_t part_number __attribute__ ((section (".part_number")) = 701052;

相关问题