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

时间:2018-03-29 07:05:39

标签: c structure typedef

这根本就错了,没有办法,或者我必须在其他方面做到这一点?

例如:

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;
 ^~~~~~~~

1 个答案:

答案 0 :(得分:1)

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

typedef struct Test Test;

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

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