如何在结构体中存储函数指针?

16

我已经声明了typedef void (*DoRunTimeChecks)();

如何将其作为结构体中的字段进行存储? 如何分配它?如何调用这个函数(fn())?


4
注意,在C语言中,void fn()void fn(void)不是同义词。 - Chris Lutz
+1 感谢。我已经陷入其中了。 - Mawg says reinstate Monica
2个回答

21

只需像处理其他字段一样将其放入:

struct example {
   int x;
   DoRunTimeChecks y;
};

void Function(void)
{
}

struct example anExample = { 12, Function };

给字段赋值:

anExample.y = Function;

调用该函数:

anExample.y();

6
#include <stdio.h>

typedef void (*DoRunTimeChecks)();

struct func_struct {
    DoRunTimeChecks func;
};

void function()
{
    puts("hello");
}

int main()
{
    struct func_struct func_struct;
    func_struct.func = function;
    func_struct.func();
    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接