【发布时间】:2013-09-19 16:12:16
【问题描述】:
我有一个看起来像这样的事件结构
typedef struct {
void* fn;
void* param;
} event;
如何通过指针调用这个函数作为结构的一部分。例如,这些不起作用:
event->(*function)();
event->function();
(*event->function)();
我想知道如何在使用和不使用附加 void* 参数的情况下进行函数调用。我最初使用此链接作为参考:
http://www.cprogramming.com/tutorial/function-pointers.html
我以前使用过这些函数指针,但无法正确获取语法。
【问题讨论】:
-
您需要先将
void*转换为函数指针。还是要声明指向什么都不返回的函数的指针? -
如何正确地转换成函数指针,因为在这种情况下解引用结构指针?
-
你在类型声明中有
fn,但在调用中引用function。他们应该是同一个东西吗?如果您希望fn保存函数指针,则需要将其声明为函数指针,而不是void*(您可以将void*转换为函数指针,但不能保证工作)。此外,event是一种类型,而不是对象或表达式;你需要有一个event类型的对象,然后才能引用它的fn成员。 -
That tutorial 不会尝试将函数指针存储在
void*中。你为什么要这样做? -
我编辑了 OP 以使其保持一致。基本上,我需要将函数指针存储在这样的结构中,并通过指针调用函数。我不确定最好的方法,本教程也没有为我解决这个问题。