#if为预处理指令定义字符串比较

时间:2019-03-28 20:11:14

标签: c pointers directive string-comparison preprocessor

我正在尝试使用预处理器指令定义数组以具有可变大小。根据#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)不允许使用这种预处理程序语法。有什么解决方案可以使其正常工作吗? 谢谢 西尔

1 个答案:

答案 0 :(得分:0)

也许这样的事情会起作用:

#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