我要声明一个结构,但是在结构声明之前,我还需要声明它的指针类型,因为这个结构所包含的一个字段的类型引用了这个结构的指针类型,(挺拗口的),我这样声明,但是不行:typedef struct p_my_struct* my_struct;typedef void (MY_PROC_TYPE*)(p_my_struct a);typedef struct my_struct{
  int a;
  MY_PROC_TYPE b;
};这样应该怎样去声明,请教!谢谢!

解决方案 »

  1.   

    struct my_struct;//前向声明;my_struct* pMyStruct;struct my_struct{ 
      int a; 
      MY_PROC_TYPE b; 
    }; 
      

  2.   

    struct my_struct;typedef struct my_struct * p_my_struct; typedef void(*MY_PROC_TYPE)(p_my_struct); struct my_struct { 
    int a; 
    MY_PROC_TYPE b; 
    }  ; 楼主的语法很多地方都有问题啊,都是前后反了,或者*放错地方了。
      

  3.   

    看看链表的定义。
    struct my_struct { 
    int a; 
    struct my_struct *b; 
    }  ; 
      

  4.   

    to wjkgz:
    我的问题就在于:typedef struct my_struct * p_my_struct;
    写成了
    typedef struct p_my_struct * my_struct;
    昨天搞了半个小时都没搞定,各种形式都尝试过了,什么forward declaration都试过了,就是不行,当时就没有注意到这里写反了。哈哈哈,谢谢咯,太感谢咯!很感谢你们!My dear CSDNer!