131 votes

Erreur de compilation C : « L’objet de taille variable peut ne pas être initialisé »

Pourquoi l’erreur « L’objet de taille variable peut ne pas être initialisé » s’affiche-t-elle avec le code suivant ?

166voto

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 :

33voto

AndreyT Points 139512

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.

19voto

Amitesh Ranjan Points 11

Cela donne une erreur:

Cela donne également une erreur:

Mais cela fonctionne bien:

Vous devez mettre de la valeur de la manière suivante:

5voto

Après avoir déclaré le tableau

le moyen le plus simple d’attribuer les valeurs initiales comme zéro est d’utiliser pour la boucle, même si cela peut être un peu long

2voto

Sergey Points 37

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X