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

时间:2013-02-17 20:38:33

标签: c struct compiler-errors

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

1 个答案:

答案 0 :(得分:3)

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

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