如何从现有任务列表宏填充函数指针数组?
任务列表如下所示:
#define execute_list \
printhello(); \
printbye();
printhello 和 printbye 是现有函数。
我们需要用这些函数的地址填充函数指针数组。
void (*my_fptr_array[])(void) =
{
&printhello,
&printbye,
};
这应该通过宏自动发生。像这样的东西:
void (*my_fptr_array[])(void) =
{
EXTRACT_FUNCTION(0,execute_list),
EXTRACT_FUNCTION(1,execute_list)
};
这在 C 语言中可能吗?
最佳答案
您不需要宏。如果你有数组,你可以通过遍历数组轻松执行这些函数。
换句话说,你的要求是错误的。不要尝试从执行列表中提取内容,而是尝试从更简单的函数指针数组构建执行列表。
(您可以为此使用 X 宏,但除了可能节省一点循环开销之外,我没有看到任何好处。)
关于c - 使用 C 中的宏提取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58335301/