【发布时间】:2016-09-06 22:57:14
【问题描述】:
我的结构看起来像这样:
typedef struct storage {
char ***data;
int lost_index[];
int lost_index_size;
int size;
int allowed_memory_key_size;
int allowed_memory_value_size;
int memory_size;
int allowed_memory_size;
} STORAGE;
我得到的错误是“错误:灵活数组成员不在结构末尾”。我知道这个错误可以通过在结构末尾移动int lost_index[] 来解决。为什么灵活的数组成员需要位于结构的末尾?原因是什么?
由于这被假定为另一个问题的重复,实际上我没有找到我真正需要的答案,类似问题中的答案没有描述 reason 在编译器后面抛出我询问的错误。
谢谢
【问题讨论】:
-
@pytheos 不是。这个问题询问其设计方式背后的原因。 :)
-
在那个答案中我没有找到解释,为什么它会导致,是什么让编译器抛出这个错误。
-
@StrahinjaDjurić,实际上最后一个答案包含您需要的所有信息。
-
编译器标记错误,因为语言要求成员位于末尾,并且编译器遵循语言规则。现在的问题应该是:“为什么语言需要它?”