具有该Struct输入类型的Struct中的函数

时间:2014-06-27 01:14:21

标签: c struct

舌头扭曲的标题,但我可能只是想过来。

我有一个结构,其中有一个回调函数指针,它将输入参数作为该结构的类型。怎么去呢?

typedef struct my_type my_type;

void (*my_callback_f)(my_type *Type);

struct my_type
{
   my_callback_f my_callback;
};

编译器显然不喜欢这样,但希望它能说明我所追求的内容。就像我说的那样,我可能只是过度思考上下文指针。

编辑(实例化):

my_type *TheThing = { MyFunction };

,其中

void MyFunction (my_type *Type)
{
 //stuff
}

这导致对象的函数指针中的函数地址与MyFunction的已知地址不匹配。

2 个答案:

答案 0 :(得分:2)

最糟糕的情况是,只需向前声明结构;

struct my_type; // this is the forward declaration
typedef void (*my_callback_f)(struct my_type *Type);

struct my_type
{
   my_callback_f my_callback;
};

答案 1 :(得分:0)

我要回答"回答"我自己的问题只是因为我解决了我的问题,但我接受了Soren的答案,因为他的回答在技术上回答了我原来问的主题。

函数指针抛出非法访问错误,因为我没有malloc' ed我已经实例化的结构。一旦我这样做,它调用函数就好了,尽管根据调试器有不同的值。