![](/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.