我正在尝试将结构集内的数组初始化为全零。
typedef struct month {
char name[19];
int yearCounts[10] = { 0 };
struct month *next;
} MONTH;
编译器似乎不想让我将yearCounts设置为结构中的值。我得到了旧的错误: “预期â:â,â,â,â€â€â€â€
这对我来说似乎很奇怪,因为在结构定义之外的确切声明似乎工作正常。如果我在不尝试设置其值的情况下初始化数组,那么它也可以正常工作。
我是否遗漏了一些愚蠢的东西,或者我不允许在结构定义中使用值初始化数组?
我正在使用C89标准中的gcc编译,如果这有所不同。
答案 0 :(得分:3)
我错过了一些愚蠢的事情,或者我不允许初始化 结构定义中包含值的数组?
初始化程序在结构声明中没有意义。
答案 1 :(得分:2)
您不能将初始化指定为类型定义的一部分。您必须等待初始化,直到您定义该类型的对象。使用C89 / 90编译器,在没有首先初始化yearCounts
的情况下,没有真正的方法来初始化name
。在C99或更新版本中,您可以使用指定的初始值设定项仅初始化yearCounts
:
MONTH m = { .yearCounts = {0} };
答案 2 :(得分:0)
由于typedef
仅定义MONTH
(而不是MONTH
类型变量实例的实际声明),因此没有任何内容可以初始化。
typedef struct month {
char name[19];
int yearCounts[10];
struct month *next;
} MONTH;
/* declare month as MONTH and initialise it to all zeros. */
MONTH month = {0};