![](/img/trans.png)
[英]Error initializing nested struct containing array of struct and function pointer c99 and gnu99
[英]What is the right way of creating and initializing a struct containing a function pointer in C?
我已经读完结构,但是到处都可以看到创建和初始化它们的不同方法。 能否请您告诉我您对我的工作方式的看法,并指出您将进行哪些更改以及原因?
在标题中:
typedef void (*ActionFunc)(void);
typedef struct {
ActionFunc func;
} MyStruct;
在C文件中:
static MyStruct* my_struct;
void action(){
/*....*/
}
void my_function(){
my_struct = &(MyStruct){
.func = action
};
}
我不明白为什么您my_struct
成为指针。
my_function()
的初始化将不起作用,您将my_struct
设置为复合文字的地址,当my_function
退出时,该文字不会停留在周围。
只需将my_func
为适当的全局结构(如果需要的话)(而不是指针),然后直接更改它即可。
static MyStruct my_struct;
void my_function(void)
{
my_struct.func = action;
}
您可以从任何地方访问存储的函数指针( my_struct
毕竟是global !),如下所示:
void random_function(void)
{
extern struct MyStruct my_struct;
my_struct.func();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.