c - 使用 C 中的宏提取内容

标签 c macros c-preprocessor

如何从现有任务列表宏填充函数指针数组?

任务列表如下所示:

#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/

相关文章:

c++ - 将参数添加到列表并在 C 预处理器宏中应用另一个宏

具有多个语句的 C++ 宏

c - GCC 如何停止 ROM 中函数的误报警告隐式函数声明?

c - 为什么在 POSIX/IEEE 标准中 pthread_mutexattr_settype() 需要 _GNU_SOURCE 宏?

ChangeDisplaySettings 成功但不执行任何操作。我如何让它工作?

c++ - 在 VXWorks 6.7(workspace-4) 中由 c++(UsrAppInit) 执行的 ADA 文件有问题吗?

printing - 有什么方法可以使用Google Apps脚本打印Google表格工作表?

c++ - C C++内存泄漏的原因

java - 与Java中可用的Scala 2.10宏相比

C预处理器编译异常时使用 "bitwise and"