C新手。编译时出现以下错误:
error: variably modified 'header' at file scope
error: variably modified 'sequence' at file scope
代码:
struct list{
char header[list_header_size];
char sequence[list_sequence_size];
struct list *next;
};
我认为错误意味着编译器需要从一开始就知道这些变量是什么。所以,我将main()(调用结构的位置)移动到程序的末尾。我也尝试在程序开始时声明变量,但我不确定我是否正确地执行了此操作。我尝试了char header;
和char header[];
答案 0 :(得分:3)
你是对的,编译器需要知道结构成员的类型。它需要知道类型的一个原因是它可以计算尺寸。但是,在您的情况下,它无法知道大小,因为在您的结构中,您已经定义了两个不是常量大小的数组。因此,编译器不知道结构的总大小,这违背了知道类型的目的。
最接近你想要的是用两个char
指针替换两个char
数组,并分配它们将动态指向的内存。