【发布时间】:2015-09-10 12:20:32
【问题描述】:
我想连接很多宏,以便将它们作为参数传递到一个被触发的数组中。更具体地说,我有这个结构
static struct
{
unsigned int num_irqs;
volatile __int_handler *_int_line_handler_table;
}_int_handler_table[INTR_GROUPS];
我想将一系列宏作为num_irqs 参数传递
AVR32_INTC_NUM_IRQS_PER_GRP1
AVR32_INTC_NUM_IRQS_PER_GRP2
...
首先我想使用这个代码
for (int i=0;i<INTR_GROUPS;i++)
{
_int_handler_table[i].num_irqs = TPASTE2(AVR32_INTC_NUM_IRQS_PER_GRP,i);
}
但它每次都将i 视为char 而不是具体值。我还看到 preprocessor.h 中定义了一个 MREPEAT 宏,但我不明白它是如何从示例中使用的。
任何人都可以解释MREPEAT的用法或其他方式来完成上述操作。
【问题讨论】:
-
有一个很棒的对话 HERE,我相信它触及了你想要做的事情。它包括使用循环宏,在此示例中生成代码。 (可能支持@unwind 在他的回答中的建议:在这种情况下,代码生成是一种常见的解决方案)
标签: c loops macros concatenation