【发布时间】:2018-05-09 01:13:37
【问题描述】:
我想包含一个可变长度二维数组指针作为结构的一部分,但 c99 编译器在 Array anArray 行上给我以下错误:“flexible array member in else empty struct”。
typedef const int Array[][2];
typedef struct {
Array anArray;
} StructType;
Array myArray = {{1,2},{3,4},{5,6}};
StructType myStruct = { myArray };
如果您能深入了解这个问题和解决方案,我将不胜感激。我最终会向StructType 添加其他组件。
【问题讨论】:
-
我不太明白你想要做什么。
-
灵活数组只允许作为
struct的最后一个成员,具有多个命名成员;你不能有一个struct,它的唯一成员是一个灵活的数组。在更正此问题后,我不认为您可以按照自己的方式初始化灵活数组。 -
它不是一个数组指针。它是一个数组。无论如何,使用这种 FAM 的定义将完全没有用,因为结构分配不会复制数组,因此,无论如何,您都必须使用 memcpy。什么说明了该数组中有多少 元素?!什么都没有。
标签: c arrays struct variable-length-array type-2-dimension