ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1221192
Dingo (06.07.2022 10:39, просмотров: 3029)
А как бы автоматизировать получение элемента из нескольких? Можно и желательно макросами. 

Есть таблица векторов

    TMR0_IRQn               = 16,      /*!< Timer 0 Interrupt                          */
    TMR1_IRQn               = 17,      /*!< Timer 1 Interrupt                          */
    ADC_IRQn                = 18,      /*!< ADC Interrupt                              */
// ------ SKIP -----// USBD_IRQn = 29, /*!< USB Device Interrupt */ TMR2_IRQn = 30, /*!< Timer 2 Interrupt */ TMR3_IRQn = 31, /*!< Timer 3 Interrupt */ TMR4_IRQn = 32, /*!< Timer 4 Interrupt */

Хочется одним дефайном задать опосредованно получение *_IRQn

// h-file //
#define TIMx TMR0

// c-file //
#define SUPERMACRO( TIMx)
void TimerInit(void)
{
// cut
InitIRQ( arg1, arg2, SUPERMACRO( TIMx) );
// cut
}

Вот чтобы SUPERMACRO() возвращал TMR0_IRQn . Пробовал через объединение лексем, но с помощью ## получается TIMx_IRQn

Один элемент массива из нескольких? Но как-то не придумывается.