在文件范围错误时修改了’variable_name’?

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[];

你是对的,编译器需要知道结构成员的类型。 它需要知道类型的一个原因是它可以计算尺寸。 但是,在您的情况下,它无法知道大小,因为在您的结构中,您定义了两个不是常量大小的数组。 因此,编译器不知道结构的总大小,这违背了知道类型的目的。

最接近你想要的是用两个char指针替换两个char数组并分配它们将动态指向的内存。