Pourquoi l’erreur « L’objet de taille variable peut ne pas être initialisé » s’affiche-t-elle avec le code suivant ?
Réponses
Trop de publicités?Je suppose que vous utilisez un compilateur C99 (avec prise en charge des tableaux de taille dynamique). Le problème dans votre code est qu’au moment où les compilateurs voient votre déclaration de variable, ils ne peuvent pas savoir combien d’éléments il y a dans le tableau (je suppose également ici, à partir de l’erreur du compilateur, qu’elle n’est `` pas une constante de temps de compilation).
Vous devez initialiser manuellement ce tableau :
Vous recevez cette erreur car en langage C, vous n’êtes pas autorisé à utiliser des initialiseurs avec des tableaux de longueur variable. Le message d’erreur que vous recevez dit essentiellement tout.
6.7.8 Initialisation
...
3 Le type d’entité à initialiser est un tableau de taille inconnue ou un objet type qui n’est pas une longueur variable type de tableau.
La question est déjà répondue, mais je voulais souligner une autre solution qui est rapide et fonctionne si la longueur n’est pas destinée à être modifiée au moment de l’exécution. Utilisez la macro #define avant main() pour définir la longueur et dans main() votre initialisation fonctionnera :
Les macros sont exécutées avant la compilation réelle et la longueur sera une constante de temps de compilation (comme mentionné par David Rodríguez dans sa réponse). Il remplacera en fait la longueur par 10 avant la compilation.