C 可变修改';变量名称';文件范围错误?

C 可变修改';变量名称';文件范围错误?,c,struct,compiler-errors,C,Struct,Compiler Errors,C新手。我在编译时遇到以下错误: error: variably modified 'header' at file scope error: variably modified 'sequence' at file scope 代码: 我认为这个错误意味着编译器需要从一开始就知道这些变量是什么。因此,我将调用结构的main()移动到程序的末尾。我还尝试在程序开始时声明变量,但我不确定是否正确声明。我尝试了字符头和字符头[]编译器需要知道结构成员的类型,这是正确的。它需要知道类型的一个原因是它

C新手。我在编译时遇到以下错误:

error: variably modified 'header' at file scope
error: variably modified 'sequence' at file scope
代码:


我认为这个错误意味着编译器需要从一开始就知道这些变量是什么。因此,我将调用结构的main()移动到程序的末尾。我还尝试在程序开始时声明变量,但我不确定是否正确声明。我尝试了
字符头
字符头[]

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


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

“计算大小”缺少有趣的一点:在C中,数组类型是类型,以及类型部分的大小。好的,我这样做了。现在我得到一个奇怪的错误:应该是“:”,“,”,“;”,“}”或'='标记''int list.\u header.\u size=200之前的'attribute';int list_sequence_size=2000;结构列表{char header=(char)malloc(sizeof(list_header_size));char sequence=(char)malloc(sizeof(list_sequence_size));结构列表*next;}`@user1472747请发布修改后的代码,这样我们就可以看到出了什么问题。我正在尝试。。。但是我不知道如何在注释中格式化代码。我会把它贴在主贴上。哦,哇。你不应该在结构中设置字段,是不是。。。我是个白痴>。
struct list{
  char header[list_header_size];
  char sequence[list_sequence_size];
  struct list *next;
};