C问题中的嵌套结构
我在C中有一个结构声明,看起来像这样:C问题中的嵌套结构,c,C,我在C中有一个结构声明,看起来像这样: static struct { int a; int b; } myStruct[10]; static struct { int a; int b; } myStruct[10]; static struct { int c; int d; struct myStruct s[10]; } myNestedStruct[100]; 我想在myStruct中声明一个struct成员变量,因此我尝试添加以下内容
static struct {
int a;
int b;
} myStruct[10];
static struct {
int a;
int b;
} myStruct[10];
static struct {
int c;
int d;
struct myStruct s[10];
} myNestedStruct[100];
我想在myStruct中声明一个struct成员变量,因此我尝试添加以下内容:
static struct {
int c;
int d;
struct myStruct[10] s;
} myNestedStruct[100];
我在:[之前或在:[和
语法要求在最后一个结构/联合成员之后加“;”
。实现嵌套结构的更好方法是什么
编辑:我的代码现在如下所示:
static struct {
int a;
int b;
} myStruct[10];
static struct {
int a;
int b;
} myStruct[10];
static struct {
int c;
int d;
struct myStruct s[10];
} myNestedStruct[100];
但是我得到了一个错误:
不完整的结构/union/enum myStruct:s
在将其用作结构类型之前,需要先声明myStruct
struct myStruct {
int a;
int b;
};
static struct {
int c;
int d;
struct myStruct s[10];
} myNestedStruct[100];
这将创建一个名为
myNestedStruct
的变量,它是一个由100个结构组成的数组,每个结构包含两个int
s和一个由10个mystruct
s组成的数组。在将其用作结构类型之前,需要先声明mystruct
struct myStruct {
int a;
int b;
};
static struct {
int c;
int d;
struct myStruct s[10];
} myNestedStruct[100];
这将创建一个名为myNestedStruct
的变量,它是一个由100个结构组成的数组,每个结构包含两个int
s和一个由10个mystruct
s组成的数组
struct{…}Foo;
,它不是声明一个名为Foo
的类型,而是一个变量。它的类型是一个匿名struct
,对应于放在花括号中的内容。如果要声明类型,请编写struct Foo{…};
这就是错误的来源--myStruct
不是类型名,因此当您在myNestedStruct
的定义中编写struct myStruct
时,编译器认为您将要用该名称定义结构。但随后它遇到了一个[
它不应该是结构声明中的下一个标记,因此它告诉您无法理解代码。当您编写类似
struct{…}Foo;
,它不是声明一个名为Foo
的类型,而是一个变量。它的类型是一个匿名struct
,对应于放在花括号中的内容。如果要声明类型,请编写struct Foo{…};
这就是错误的来源--
myStruct
不是类型名,因此当您在myNestedStruct
的定义中编写struct myStruct
时,编译器认为您将要用该名称定义结构。但随后它遇到了一个[
它不应该是结构声明中的下一个标记,因此它告诉您无法理解代码。在结构成员中使用“struct myStruct s[10]”。修改struct myStruct[10]s;
到struct myStruct s[10];
第二个结构被稍微编辑以添加其名称myNestedStruct[100]
。我做了更改,但出现了一个错误,显示不完整的struct/union/enum myStruct:s
两个结构都没有标记。在这两种情况下,您都将变量声明为匿名结构。在结构成员中使用“struct myStruct s[10]”。修改struct myStruct[10]s;
到struct myStruct s[10];
对第二个结构进行了轻微编辑,以添加其名称myNestedStruct[100]
。我进行了更改,但出现了一个错误,即结构不完整/union/enum myStruct:s
两个结构都没有标记。在这两种情况下,您都将变量声明为匿名结构。