#if определить сравнение строк для директивы препроцессора - PullRequest
1 голос
/ 28 марта 2019

Я пытаюсь определить массив с директивами препроцессора, чтобы иметь переменный размер.Этот массив заполняется в зависимости от #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

1 Ответ

0 голосов
/ 29 марта 2019

Возможно, что-то подобное будет работать:

#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 определено ранее

...