Variablement modifié ‘nom_variable’ lors de l’erreur de fichier

Nouveau sur C. J’obtiens l’erreur suivante lors de la compilation:

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; }; 

Je pensais que l’erreur signifiait que le compilateur avait besoin de savoir quelles étaient ces variables depuis le début. Ainsi, j’ai déplacé main (), à l’endroit où la structure est appelée, vers la fin du programme. J’ai aussi essayé de déclarer les variables au début du programme, mais je ne suis pas sûr de l’avoir fait correctement. J’ai essayé en- char header; et en- char header[];

Vous avez raison, le compilateur a besoin de connaître les types des membres de la structure. Une des raisons pour lesquelles il a besoin de connaître les types est pour pouvoir calculer les tailles. Dans votre cas, cependant, il ne peut pas connaître les tailles car dans votre structure, vous avez défini deux tableaux qui ne sont pas de taille constante. Par conséquent, le compilateur ne connaît pas la taille totale de la structure et cela empêche de connaître les types.

Le plus proche de ce que vous voulez est de remplacer les deux tableaux de caractères par deux pointeurs de caractères et d’allouer la mémoire à laquelle ils vont pointer de manière dynamic.