交叉引用typedef结构

问题描述 投票:0回答:1

我有结构的两种类型定义,ARRAY和OBJECT。

ARRAY中的元素属于OBJECT。 OBJECT(当它的TYPE是COMPLEX时)有它的孩子的数组

enum {
      INT,
      FLOAT,
      STRING,
      CHAR,
      COMPLEX
} typedef TYPE;`

`struct {
  TYPE type;
  ARRAY children;
  char name[50];
} typedef OBJECT;`

`struct {
  OBJECT* elements;
  int size;
} typedef ARRAY;

我想创建这些结构,但这是不可能的,因为一个依赖于另一个的定义。

c struct typedef
1个回答
2
投票

这是一种声明TYPEOBJECTARRAY类型别名的方法,使用OBJECT类型别名的前向声明来避免循环依赖。这需要声明关联的struct类型,并使用与其后续完整声明匹配的标记。

typedef enum {
    INT,
    FLOAT,
    STRING,
    CHAR,
    COMPLEX
} TYPE;

// incomplete declaration of struct _OBJECT and OBJECT
typedef struct _OBJECT OBJECT;

typedef struct {
    OBJECT* elements;
    int size;
} ARRAY;

// complete declaration of struct _OBJECT
struct _OBJECT {
    TYPE type;
    ARRAY children;
    char name[50];
};
© www.soinside.com 2019 - 2024. All rights reserved.