我正在尝试使用预处理器指令定义一个具有可变大小的数组。该数组根据#define 进行填充:
#define PORTA (*(PORT_t *) 0x0400)
#define EXP_GPIO0_PORT PORTA
#define EXP_GPIO0_PIN 0
我想用 :
填充数组const uint8_t PortAGpiosPortpinUsed[] =
{
#if EXP_GPIO0_PORT == PORTA
EXP_GPIO0_PIN,
#endif
}
由于 PORTA 是一个指针,编译器 (GCC) 不允许这种预处理器语法。有什么解决办法让它工作吗? 谢谢 锡尔
最佳答案
也许像这样的东西会起作用:
#ifdef PORTA
#define ADDRESS (*(PORT_t *) 0x0400)
#define EXP_GPIO0_PORT ADDRESS
#define EXP_GPIO0_PIN 0
#endif
const uint8_t PortAGpiosPortpinUsed[] =
{
#ifdef PORTA
EXP_GPIO0_PIN,
#endif
}
当然,这需要 PORTA
是先前定义的
关于c - #if 为预处理器指令定义字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55406110/