舌头扭曲的标题,但我可能只是想过来。
我有一个结构,其中有一个回调函数指针,它将输入参数作为该结构的类型。怎么去呢?
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的已知地址不匹配。
答案 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我已经实例化的结构。一旦我这样做,它调用函数就好了,尽管根据调试器有不同的值。