Merci Thierry pour tes lumières. Ca vient evidemment du C++ et pas du java (je m'étais faite aussi la reflexion depuis mon mail ...) mais sur le fond, ça reste la même chose... As-tu une idée de ce qui peut causer le deuxième problème ? C'est sans doute du à autre chose, mais les codes générés sont substanciellement différents dans les deux environnements (l'environnement F206-7 génère des codes qui devraient planter et qui ont le mauvais goût de ne pas le faire! ; et j'ai bien conscience qu'il n'y a évidemment que moi pour trouver que c'est désavantageux !). Catherine Thierry Hamon a écrit :
Catherine Recanati <Catherine.Recanati@lipn.univ-paris13.fr> disait recemment que :
Le compilateur des salles F206 et F207 (gcc ...) laisse passer des erreurs de syntaxe graves en C, en l'occurence, il ne nécessite pas qu'une variable soit déclarée en tête de bloc. (Je rappelle à ceux qui ne connaitraient pas bien C qu'un bloc en C (tout ce qui est entre accolades) est constitué de deux blocs successifs, un bloc de déclarations suivi d'un bloc d'instructions).
On peut dans cet environnement déclarer ses variables "au vol" comme en java. La seule chose qu'il controle apparemment est que la variable
SI j'ai bien compris, c'est un truc du genre :
------------------------------------------------------------------------ #include <stdio.h>
main() {
int i = 4;
printf("i = %d\n", i);
int j = 5;
printf("j = %d\n", j);
} ------------------------------------------------------------------------
SI j'en crois le man de gcc, ça semble être du a la compatibilité avec le C++ (gcc est également utilisé pour compiler le C++).
Pour éviter d'avoir ce genre de "bug", il suffit d'utiliser l'option '-pedantic' (elle force la confirmité à la norme ISO C90) :
]>gcc -pedantic test1.c -o test1 test1.c: Dans la fonction « main »: test1.c:9: attention : ISO C90 forbids mixed declarations and code
TH