Bonjour à tous,

Je débute actuellement dans la programmation en C. J'ai quelques notions en programmation (je développe en Java et en C#) et j'utilise le logiciel Visual Studio 2010 (Beta 2 :p) pour l'écriture et la compilation de programmes C.

Je viens de me heurter à une légère incompréhension vis-à-vis de la déclaration de variables dans un bloc.

Voici le code, qui ne fait pas grand chose pour le moment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char * argv[])
{
	int i;
	int *p;
	p = (int *) malloc(10 * sizeof(int));
 
	for(i = 0; i < 10; i++)
	{
	}
 
	system("pause");
	return 0;
}
Il fonctionne, pas de problème à ce niveau là. Par contre, cette version ci ne passe pas à la compilation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char * argv[])
{
	int *p;
	p = (int *) malloc(10 * sizeof(int));
 
	int i;
	for(i = 0; i < 10; i++)
	{
	}
 
	system("pause");
	return 0;
}
La seule chose qui a changé c'est la position de la déclaration de la variable i.

Le compilateur retourne les erreurs suivantes :

Error 1 error C2143: syntax error : missing ';' before 'type' c:\users\nicolas\documents\visual studio 10\projects\cprog\cprog\program.c 9 1 CProg
Error 2 error C2065: 'i' : undeclared identifier c:\users\nicolas\documents\visual studio 10\projects\cprog\cprog\program.c 10 1 CProg
Error 3 error C2065: 'i' : undeclared identifier c:\users\nicolas\documents\visual studio 10\projects\cprog\cprog\program.c 10 1 CProg
Error 4 error C2065: 'i' : undeclared identifier c:\users\nicolas\documents\visual studio 10\projects\cprog\cprog\program.c 10 1 CProg
Dès lors je me pose la question suivante : ai-je raté une propriété incroyable du langage C disant que toute variable doit être déclarée en début de bloc ou est-ce une propriété bizarre du compilateur C de Visual C++ ?

En vous remerciant d'avance et en vous souhaitant un agréable week-end,

Nicolas