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

Strange definition in C with @ sign

我在嵌入式 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 一起使用。

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

  • ".preamble"是段名,
  • OAD_Preamble 是要放置在那里的变量。

您也可以在 @ 符号后指定物理地址:

const unsigned char port_bit @ 0x1800 = BIT0;

更多信息在this document

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