C问题

时间:2016-02-04 05:42:34

标签: c

我在C中有一个结构声明,看起来像这样:

static struct {
   int a;
   int b;
} myStruct[10];

我想在myStruct中声明一个struct成员变量,所以我尝试添加它:

static struct {
   int c;
   int d;
   struct myStruct[10] s;
} myNestedStruct[100];

我遇到了一堆错误,即syntax error before or at: [和。{ syntax requires ";" after last struct/union member。实现嵌套结构的更好方法是什么?

编辑:我的代码现在看起来像这样:

static struct {
   int a;
   int b;
} myStruct[10];

static struct {
   int c;
   int d;
   struct myStruct s[10];
} myNestedStruct[100];

但是我收到了错误:incomplete struct/union/enum myStruct: s

2 个答案:

答案 0 :(得分:3)

在将myStruct用作结构类型之前,您需要先声明struct myStruct { int a; int b; }; static struct { int c; int d; struct myStruct s[10]; } myNestedStruct[100];

myNestedStruct

这会创建一个名为int的变量,它是一个包含100个结构的数组,每个结构包含两个mystruct和一个10 List<MyClass> and MyClass[] s的数组。

答案 1 :(得分:1)

当您编写代码时 struct { ... } Foo;,它并未声明名为Foo类型,而是变量。它的类型是一个匿名struct,对应于你在花括号中放置的内容。如果要声明类型,请写struct Foo { ... };

这就是你的错误所在 - myStruct不是类型名称,所以当你在struct myStruct的定义中编写myNestedStruct时,编译器认为你将要定义该名称的结构。但是它会遇到一个[,它不应该是结构声明中的下一个标记,所以它告诉你无法理解代码。