Variably modified 'variable_name' at file

2019-01-27 00:47发布

问题:

New to C. I'm getting the following error when compiling:

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

Code:

struct list{
  char header[list_header_size];
  char sequence[list_sequence_size];
  struct list *next;
};

I thought the error meant that the compiler needed to know what these variables were from the beginning. So, I moved main(), which is where the struct is called, to the end of the program. I also tried declaring the variables at beginning of the program, but I'm not sure if I did that correctly. I tried char header; and char header[];

回答1:

You are right that the compiler needs to know the types of the members of the struct. One reason why it needs to know the types is so that it can calculate sizes. In your case, however, it can't know the sizes because in your struct you have defined two arrays that are not of a constant size. Therefore, the compiler doesn't know the total size of the struct and this defeats the purpose of knowing the types.

The closest to what you want is to replace the two char arrays with two char pointers and allocate the memory they will point to dynamically.