数组初始化中的宏使用

macro use in array initialization

我对 PIC24F 微控制器的微芯片演示应用程序中的这段代码感到很困惑。看起来这个宏在运行时被分配给这个数组的地址。我不认为这是可能的,所以我对 c 的有限了解现在真的让我失望了。谁能提供一些见解?

#define MBR_ADDR_TAG
#define MBR_ATTRIBUTES __attribute__((space(psv), address(DRV_FILEIO_INTERNAL_FLASH_CONFIG_FILES_ADDRESS)))

...

const uint8_t MBR_ATTRIBUTES MasterBootRecord[FILEIO_CONFIG_MEDIA_SECTOR_SIZE] MBR_ADDR_TAG =
{....}

在阅读我自己几年前的问题后,我现在看到了答案。 MBR_ADDR_TAG 只是插入到 MasterBootRecord[] 的 declaration/initialization 中,但是因为它从未被定义为任何它只是被忽略,所以它等同于:

#define MBR_ATTRIBUTES __attribute__((space(psv), address(DRV_FILEIO_INTERNAL_FLASH_CONFIG_FILES_ADDRESS)))

...

const uint8_t MBR_ATTRIBUTES MasterBootRecord[FILEIO_CONFIG_MEDIA_SECTOR_SIZE] =
{....}