用C语言相互定义结构

时间:2014-03-03 19:58:38

标签: c struct typedef

有没有办法以循环方式正确定义结构(在C中)?换句话说:

//struct struct1;  Is this ok??

struct struct2 {

    struct struct1* someStruct1Var;
    //Other variables
};

struct struct1 {
   //Some variables
   struct2* (*someFunc)(struct2* someStruct2Var);
}

我基本上想要的行为是第一个struct有一个变量,它是指向第二个实例的指针(它是一个全局变量,只有1个存在)。然后我希望第二个结构具有返回第一个结构的类型的函数指针。我想要这种行为,以实现基本的面向对象的类/对象。如果有类似的方法可以完成同样的事情,那也会非常有帮助。同样,我需要的是有一个包含函数指针的类struct(struct1),该函数指针作为参数并返回变量对象的类型(struct2)。然后,我需要每个对象都有一个对其全局类变量(类型为struct1)的引用。

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该转发声明您的struct

typedef struct struct1 struct1;
typedef struct struct2 struct2;

struct struct2 {

    struct1* someStruct1Var;
    //Other variables
};

struct struct1 {
   //Some variables
   struct2* (*someFunc)(struct2* someStruct2Var);
}

使用typedef帮助来省略struct关键字来命名类型。