如何使用结构体作为参数在结构体中使用函数指针?
我有这个:
typedef struct button {
char SizeUnit;
char Status;
int Width;
int Height;
char *Text;
Color TextColor;
Color BGColor;
Color BorderColor;
int BorderWidth;
void (*ActionL)(button *bt);
void (*ActionR)(button *bt);
void (*ActionM)(button *bt);
void (*Hover) (button *bt);
void (*draw) (button *bt);
} button;
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?
(被识别的符号)的“效果”在结构本身中typedef不可用。
您有两个选择:
struct button定义函数指针时只需引用
void (*ActionL)(struct button *bt);`
Run Code Online (Sandbox Code Playgroud)
将 typedef 写在结构体定义之前(前向声明):
typedef struct button_s button_t;
typedef struct button_s {
char SizeUnit;
char Status;
int Width;
int Height;
char *Text;
Color TextColor;
Color BGColor;
Color BorderColor;
int BorderWidth;
void (*ActionL)(button_t *bt);
void (*ActionR)(button_t *bt);
void (*ActionM)(button_t *bt);
void (*Hover) (button_t *bt);
void (*draw) (button_t *bt);
} button_t;
Run Code Online (Sandbox Code Playgroud)
在这里,我使用了一种约定,_s在结构体之前添加尾随typedef,并_t在新定义的类型之前添加尾随结构体。