【发布时间】:2025-11-23 02:25:01
【问题描述】:
我有一个函数,它将指向函数的指针作为参数。 由于函数指针名称的相似性质,此函数在 for 循环中被调用,我使用宏将名称扩展为函数。它看起来像这样:
void fill(int, int(*funcbase)(int));
int funcbase0(int);
int funcbase1(int);
int funcbase2(int);
int funcbase3(int);
/// all the way through funcbase31
#define FILL_(num) fill(num, funcbase##num)
#define FILL(num) FILL_(num)
for(int i = 0; i < 32; i++)
FILL(i);
我希望这个为 0,1,2,... 和 funcbase0, funcbase1, funcbase2,... 调用填充,但它使用“funcbasei”的第二个参数调用填充它不会每次都扩展 i .
我正在尝试做的事情可能吗?我需要尝试什么编译器? (我使用的是 gcc 4.9.3)
【问题讨论】:
标签: c macros variadic-macros