Erreur C2057: expression constante attendue

if(stat("seek.pc.db", &files) ==0 ) sizes=files.st_size; sizes=sizes/sizeof(int); int s[sizes]; 

Je comstack ceci dans Visual Studio 2008 et j’obtiens le message d’erreur suivant: erreur C2057: erreur d’expression constante attendue C2466: impossible d’allouer un tableau de taille constante 0.

J’ai essayé d’utiliser des vecteurs [tailles] mais en vain. Qu’est-ce que je fais mal?

Merci!

La taille des variables de tableau en C doit être connue au moment de la compilation. Si vous le savez seulement au moment de l’exécution, vous devrez vous-même malloc peu de mémoire.

La taille d’un tableau doit être une constante de temps de compilation. Cependant, C99 prend en charge les tableaux de longueur variable. Donc, au lieu de cela, pour que votre code fonctionne sur votre environnement, si la taille du tableau est connue au moment de l’exécution, alors –

 int *s = malloc(sizes); // .... free s; 

Concernant le message d’erreur:

 int a[5]; // ^ 5 is a constant expression int b = 10; int aa[b]; // ^ b is a variable. So, it's value can differ at some other point. const int size = 5; int aaa[size]; // size is constant.