Je calcule dynamiquement la taille d'un tableau. Quelque chose comme:ISO C90 interdit tableau de longueur variable
void foo(size_t limit)
{
char buffer[limit * 14 + 1];
}
Mais compilateur GCC dit:
error: ISO C90 forbids variable length array ‘buffer’
recherche sur SO J'ai trouvé this answer:
C99 §6.7.5.2:
Si la taille est une expression qui n'est pas une constante entière express ion ... ... chaque fois qu'il est évalué, il doit avoir une valeur supérieure à zéro.
Alors, je l'ai fait la nouvelle déclaration de la variable de type limite de taille à:
void foo(const size_t limit)
Mais il continue de donner un avertissement pour moi. Est-ce un bug du GCC?
Eh bien, 'C90! = C99'. – user7116
Déclarer 'taille_t limite' comme' const' ne change rien. C'est toujours un tableau de longueur variable puisque la taille est déterminée à l'exécution. – Mysticial
GCC vous dit qu'avec les options de ligne de commande que vous utilisez, il compile par rapport à la norme C90 par défaut. Le paragraphe que vous avez cité provient de C99. C'est la cause de votre problème, pas le type de 'limite '. –