在c编程中使用@符号?

时间:2017-12-12 23:39:37

标签: c

我正在处理一些最初为IAR编写并使用GCC编译器将其转换为编译的代码。

然而,由于我不理解语法或正在发生的事情,我坚持使用一条特定的行。

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

我发现的__root是这样的,即使没有任何实际引用它的变量也包含在最终代码中。 const意味着它不会改变并保存在ROM而不是RAM中。

我不遵循@“。part_number”部分。我得到的具体错误是“stray'@'in program”。

我知道@不是标准C的一部分,但我没有找到解释我所看到的语法的任何运气。

如果有人能够解释,我会非常感激。

由于

1 个答案:

答案 0 :(得分:6)

this KB entry看起来它的语法就是指示链接器将变量放入特定的部分。

  

如果您将对象放入命名段:

__no_init struct setup located_configuration @ "SETUP";

等效的gcc语法是通过section属性。

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