portée indices de boucle - C++ - Programmation
Marsh Posté le 24-07-2006 à 23:57:04
ta version de VC++ ne respecte pas la norme. Mets à jour. Remarque, j'y connais rien, il y a peut-être un pragma pour régler ça.
Marsh Posté le 25-07-2006 à 00:21:47
ok c'est bien ce que je pensais, merci pour ta réponse rapide
Marsh Posté le 25-07-2006 à 09:42:25
A ce propos, il faut noter que le code suivant compile sous visual 2003 (un ";" peut etre très pénible à trouver ...), je tire ça du code d'un collègue qui ne comprenait rien àu comportement de son programme, et le debugger n'a pas pu l'aider à trouver la faute:
Code :
|
La sortie de ce code est :
Citation : 10 |
Ca nous a pas trop paru normal que cela compile, et on a pas cherché plus loin ...
Marsh Posté le 25-07-2006 à 12:47:20
Sous VC7.1 et + (peut-etre sous le 7.0) mettre l'option "Conformité pour la portée d'une boucle For" qui rajoute l'option /ZC:forScope à la compilation.
Edit : option présente dans les propriétés de ton projet sous la rubrique C/C++
Marsh Posté le 25-07-2006 à 13:47:10
_darkalt3_ a écrit : A ce propos, il faut noter que le code suivant compile sous visual 2003 (un ";" peut etre très pénible à trouver ...), je tire ça du code d'un collègue qui ne comprenait rien àu comportement de son programme, et le debugger n'a pas pu l'aider à trouver la faute:
|
Pourquoi tu voudrais que ça ne compile pas?
Marsh Posté le 25-07-2006 à 13:48:24
parce que la portée de 'i' est censée être dans la boucle for. Or, j'y fais appel en dehors.
Marsh Posté le 25-07-2006 à 13:49:41
_darkalt3_ a écrit : parce que la portée de 'i' est censée être dans la boucle for. Or, j'y fais appel en dehors. |
Ha oui ok, effectivement. M'en suis rendu compte après avoir posté
Marsh Posté le 24-07-2006 à 23:53:54
Salut tout le monde, je me pose une petite question, il se trouve que lorsque je fais un truc du genre :
VisualC++ me dit qu'il y a une erreur, comme quoi i est déclaré 2 fois, donc il veut que j'enlève le "int" de la 2ème boucle quoi.
Ok je l'enlève, ça compile, s'exécute niquel, maintenant je teste mon code sous devC++, et lui me met une erreur lorsqu'il n'y a pas le "int" de la 2ème boucle...
Hors je pense que DevC++ a raison, puisque selon la norme la portée de l'indice de boucle n'est plus valable hors de la boucle quand on le déclare comme ça non ?
Alors qui faut-il croire ? VisualC++ raconterait-il des conneries ?
Parceque du coup je vais changer mon code comme ça mais bon, ça fait très "C" :
Message édité par Zipo le 24-07-2006 à 23:54:25