2

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

4

1 回答 1

3

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

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

于 2013-02-17T20:42:59.653 回答