代码之家  ›  专栏  ›  技术社区  ›  Ruslan Yandiev

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

  •  0
  • Ruslan Yandiev  · 技术社区  · 6 年前

    这到底是错的,而且没有办法,还是我不得不做别的事情?

    例如:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Tom's    6 年前

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

    typedef struct Test Test;
    
    typedef void (*UserFunc)(Test *tx);
    
    typedef struct Test {
        int      a;
        char     b;
        UserFunc func;
    } Test;