定义新数据类型时,数组类型的元素类型不完整
Array type has incomplete element type when define new data type
我有如下一段代码:
#include <stdio.h>
int main(void) {
typedef int new_type[];
new_type Number[8];
return 0;
}
编译器 (Gcc- 4.9.2) 显示错误:数组类型具有不完整的元素类型。
我有一些问题:
1、通过typedef定义new_type
是否被C90标准接受?在这种情况下,new_type
是一种数据类型,它定义了 一个数组 的未定义数量的元素或 一个指向 的数组的指针 =13=]?
2.If我们保留typedef int new_type[];
行,我们如何定义new_type
类型的变量?
谢谢你的帮助。
Is the definition of new_type through typedef accepted by C90 standard? In this case, new_type is a data type that defines an array of undefined number of element or a pointer to an array of int?
typedef 本身不是问题,因为您可以 typedef 不完整的类型 (typedef struct A A_s;
)。 new_type
确实和你想的差不多。
If we keep the line typedef int new_type[];
, how can we define a variable of type new_type?
对于变量定义,变量的类型必须是完整类型,所以:
typedef int new_type[];
new_type Number = { 1, 2, 3 };
将导致 Number
成为大小为 3 的 int
的数组。但是,您尝试将 Number 定义为大小为 8 的 int[]
的数组(int Number[8][];
).
但是未指定大小的数组不能用于定义任何变量、数组或作为结构的成员1(不完整的类型不能用于这些目的)。
1. 除非是最后一个,灵活的数组成员是允许的(有很多限制)。
我有如下一段代码:
#include <stdio.h>
int main(void) {
typedef int new_type[];
new_type Number[8];
return 0;
}
编译器 (Gcc- 4.9.2) 显示错误:数组类型具有不完整的元素类型。
我有一些问题:
1、通过typedef定义new_type
是否被C90标准接受?在这种情况下,new_type
是一种数据类型,它定义了 一个数组 的未定义数量的元素或 一个指向 的数组的指针 =13=]?
2.If我们保留typedef int new_type[];
行,我们如何定义new_type
类型的变量?
谢谢你的帮助。
Is the definition of new_type through typedef accepted by C90 standard? In this case, new_type is a data type that defines an array of undefined number of element or a pointer to an array of int?
typedef 本身不是问题,因为您可以 typedef 不完整的类型 (typedef struct A A_s;
)。 new_type
确实和你想的差不多。
If we keep the line
typedef int new_type[];
, how can we define a variable of type new_type?
对于变量定义,变量的类型必须是完整类型,所以:
typedef int new_type[];
new_type Number = { 1, 2, 3 };
将导致 Number
成为大小为 3 的 int
的数组。但是,您尝试将 Number 定义为大小为 8 的 int[]
的数组(int Number[8][];
).
但是未指定大小的数组不能用于定义任何变量、数组或作为结构的成员1(不完整的类型不能用于这些目的)。
1. 除非是最后一个,灵活的数组成员是允许的(有很多限制)。