#if define预处理程序指令的字符串比较

问题描述 投票:1回答:1

我正在尝试使用预处理程序指令定义一个具有可变大小的数组。根据#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)不允许这种预处理器语法。是否有任何解决方案让它工作?谢谢Syl

c pointers directive string-comparison preprocessor
1个回答
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是先前定义的

© www.soinside.com 2019 - 2024. All rights reserved.