Variable C lugar de statement

Posible duplicado:
Declaración variable de colocación en C

Realmente no entiendo por qué cuando declaro la variable ‘m’ como en el código cortado a continuación, ¿por qué no funciona? – Declaro m antes de usarla, ¿cuál es el punto? Gracias

int main(){ int a[] = {2,-4,6,47,59,-6,0}; sort(a, 7); int m; for(m = 0; m < 7; m++){ printf("%d ",a[m]); } } 

Pero si pongo la statement al principio, por encima de la matriz, funciona.

Parece que estás comstackndo en modo ANSI C En C89, la statement de variables solo se permite al principio de un bloque.

Desde C99, esta restricción ha sido eliminada. Compile con -std=c99 que le permitirá declarar variables en cualquier lugar.

que yo sepa en C, todas las declaraciones deben estar por encima del código

Probablemente esté utilizando un comstackdor que admita C99 parcialmente (o no lo admita en absoluto), en el cual, la statement de variable in situ está prohibida.

El uso de un comstackdor de este tipo necesitaría que declararas tus variables antes de un código “ejecutable”.

Esta fue una restricción en C89 y anteriores.

En realidad no es una respuesta, pero no puedo hacer comentarios todavía. Estoy de acuerdo con la respuesta de la gente sobre la implementación de C que está usando; está causando el error. Lo que te sugiero que pruebes es para (int m = 0, …) por dos razones: para ver si se comstack, y el scope (por su aspecto, no necesitas m fuera del bucle for) Espero que esto ayude