c - 在文件范围错误处可变修改了 'variable_name'?

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

最佳答案

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

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

关于c - 在文件范围错误处可变修改了 'variable_name'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925803/

相关文章:

json - 如何解码不同的json格式

c - 使用 alloc 的堆栈转储

c - execvp() 系统调用未执行

c++ - 访问在 C++ 函数内部的结构中定义的枚举类属性

.net - 编译器失败,错误代码为 -1073741502(SharePoint 2010 SP1 在 Windows Server 2008 R2 上运行)

c++ - 编译我的 3 个文件时,我收到错误提示 'operator=' 不匹配

java - 为什么不能将此字符串转换为整数?

C: 为什么隐式常量转换会溢出[-Woverflow]?

子进程与父进程之间的通信

c - 尝试将数据从一个结构复制到另一个结构时出现段错误