类型化结构包含将此类型化结构作为参数的类型化函数

Typed struct contains typed function that takes this typed struct as an argument

是完全错误,没有办法,还是我必须做其他事情?

例如:

typedef void (*UserFunc)(Test *tx);

typedef struct{
int a;
char b;
UserFunc func;
} Test;

我收到这个错误:

c.c:5:26: error: unknown type name ‘Test’
 typedef void (*UserFunc)(Test *tx);
                          ^~~~
c.c:10:1: error: unknown type name ‘UserFunc’
 UserFunc func;
 ^~~~~~~~

当我向下移动函数 typedef:

typedef struct{
int a;
char b;
UserFunc func;
} Test;

typedef void (*UserFunc)(Test *tx);

我得到:

c.c:8:1: error: unknown type name ‘UserFunc’
 UserFunc func;
 ^~~~~~~~

你必须先声明测试,然后再定义它:

typedef struct Test Test;

typedef void (*UserFunc)(Test *tx);

typedef struct Test {
    int      a;
    char     b;
    UserFunc func;
} Test;