我在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
答案 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
时,编译器认为你将要定义该名称的结构。但是它会遇到一个[
,它不应该是结构声明中的下一个标记,所以它告诉你无法理解代码。