我有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;
我想创建这些结构,但这是不可能的,因为一个结构依赖于另一个结构的定义。
答案 0 :(得分:2)
这是声明OBJECT
,ARRAY
和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];
};
类型必须使用与其以后的完整声明相匹配的标签进行声明。
gridSize = getTotalNumberOfCells()
snakeSize = getSnakeSize()
cellsLeft = gridSize-snakeSize
randomCell = random(cellsLeft)
cell = 0
do
while occupiedBySnake(cell)
cell++
while randomCell-- > 0