交叉引用typedef结构

时间:2019-03-26 17:02:17

标签: c struct typedef

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

ARRAY中的一些对象都是对象。对象(当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;

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

1 个答案:

答案 0 :(得分:2)

这是声明OBJECTARRAYOBJECT类型别名的一种方法,它使用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]; }; 类型必须使用与其以后的完整声明相匹配的标签进行声明。

gridSize = getTotalNumberOfCells()
snakeSize = getSnakeSize()
cellsLeft = gridSize-snakeSize
randomCell = random(cellsLeft)

cell = 0
do
    while occupiedBySnake(cell)
        cell++
while randomCell-- > 0