结构体中的函数指针,在 C 中将结构体作为参数

Bjö*_*sen 2 c struct typedef

如何使用结构体作为参数在结构体中使用函数指针?

我有这个:

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)

我怎样才能让它发挥作用?

Rob*_*oni 6

(被识别的符号)的“效果”在结构本身中typedef不可用。

您有两个选择:

  1. struct button定义函数指针时只需引用

     void (*ActionL)(struct button *bt);`
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 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在新定义的类型之前添加尾随结构体。