C中带有@符号的奇怪定义

时间:2015-09-17 17:49:37

标签: c embedded iar

我在嵌入式C源文件中遇到了以下定义:

const preamble_t OAD_Preamble @ ".preamble" =
{
  HAL_OAD_RC_MAX,       // Default program length of max if not using post-processing tool.
  OAD_MANUFACTURER_ID,  // Manufacturer ID
  OAD_TYPE_ID,          // Image Type
  0x00000001            // Image Version
};

我不知道@部分,你能帮我解决这个问题吗?

编辑: 这是在IAR编译器中,与TI SoC一起使用。

1 个答案:

答案 0 :(得分:9)

这是您可以指定内存地址或放置变量的部分的方式。

  • ".preamble"是部分的名称,
  • OAD_Preamble是要放在那里的变量。

您还可以在@符号后指定实际地址:

const unsigned char port_bit @ 0x1800 = BIT0;

更多信息位于this document

注意:这是一个非可移植的编译器扩展,不是标准C语法的一部分。