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成员变量,因此我尝试添加以下内容

我在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 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
两个结构都没有标记。在这两种情况下,您都将变量声明为匿名结构。