我是 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
指针,并动态分配它们将指向的内存。
关于c - 在文件范围错误处可变修改了 'variable_name'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925803/