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

//struct struct1;  Is this ok??

struct struct2 {

    struct struct1* someStruct1Var;
    //Other variables
};

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


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

谢谢!

最佳答案

您应该转发声明您的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关键字来命名类型。

关于c - 在C中彼此定义结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22156136/

10-11 16:50