 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Marc Durufle Guest
|
Posted: Thu Sep 04, 2003 11:08 am Post subject: Re: portée et boucle for. |
|
|
Visual C++ ne respecte pas la norme, il a sa propre norme.
|
|
| Back to top |
|
 |
Serge Paccalin Guest
|
Posted: Thu Sep 04, 2003 12:11 pm Post subject: Re: portée et boucle for. |
|
|
Le jeudi 4 septembre 2003 à 12:03, Vincent Jacques a écrit dans
fr.comp.lang.c++ :
| Quote: | Bonjour à tous,
Je lis dans le Stroustrup que la portée d'une variable déclarée au debut
d'une boucle "for" est le bloc de cette boucle. Or Visual C++ 6.0 etend
cette portée au bloc englobant la boucle:
int main(int,char*[])
{
for(int i=0;i<10;i++)
{
use(i);
}
use(i)
return 0;
}
est compilé sans erreur. Pire,
int main(int,char*[])
{
for(int i=0;i<10;i++)
{
use(i);
}
for(int i=0;i<10;i++)
{
use(i);
}
return 0;
}
Provoque une erreur!
Existe-t-il une option pour qu'il respecte (cette partie de) la norme?
Merci d'avance pour votre aide.
|
VC++ 6.0 est antérieure à la norme, et ce point n'était pas tranché. Il
n'y a pas d'option pour le changer, mais tu peux essayer de rajouter un
truc de ce genre au début de tes programmes :
#define for if (0) ; else for
mais c'est très moyen.
--
___________ 2003-09-04 14:08:29
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
|
|
| Back to top |
|
 |
Mickael Pointier Guest
|
Posted: Thu Sep 04, 2003 12:19 pm Post subject: Re: portée et boucle for. |
|
|
| Quote: | [scoping des variables déclarées dans le for sous VC 6]
Existe-t-il une option pour qu'il respecte (cette partie de) la norme?
|
Si tu as un .h global, style stdafx, tu peux rajouter ca:
#define for if(1) for
Je ne sais pas si on peut passer ca directement dans les paramètres du
projet en définition, mais bon ca à pour vertue de créer un scope local
au if et donc de résoudre le problème.
Mike
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Fri Sep 05, 2003 8:38 am Post subject: Re: portée et boucle for. |
|
|
"Michaël Cortex" <cort (AT) meloo (DOT) com> wrote
| Quote: | Vincent Jacques wrote:
Je lis dans le Stroustrup que la portée d'une variable déclarée au
debut d'une boucle "for" est le bloc de cette boucle. Or Visual C++
6.0 etend cette portée au bloc englobant la boucle:
C'est en effet une extension de VC++ 6. Je ne sais plus s'il y a un
flag du compilateur pour désactiver cette extension... Quoiqu'il en
soit, dans la version 7 (et plus) du compilo, on peut choisir si on
prend la règle stricte de portée des boucles for ou non, par une ligne
dans les options de projet...
|
Je ne sais pas si le mot « extension » convient. C'est une compatibilité
avec une ancienne règle, pour ne pas casser du code existant. On peut le
supprimer avec l'option /Xa (si mes souvenirs sont bons). Seulement,
parmi le code ancien qu'elle est censé supporter se trouvent des
fonctions inline et des templates dans les en-têtes standard. C-à-d que
l'option est quasiment inutilisable.
| Quote: | Tu vas sûrement devoir faire avec...
|
Ce qui n'est pas vraiment difficile. Neuf fois sur dix, la meilleur
solution consiste à mettre chacune des boucles dans sa propre fonction.
Sinon, éviter de déclarer des variables dans le for, et tu n'auras
jamais de problème. (Mais je préfère la première solution.)
--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
|
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Fri Sep 05, 2003 11:26 am Post subject: Re: portée et boucle for. |
|
|
[email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:
[Variation du scope des variables déclarées dans une boucle for]
| Quote: | Ce qui n'est pas vraiment difficile. Neuf fois sur dix, la meilleur
solution consiste à mettre chacune des boucles dans sa propre fonction.
Sinon, éviter de déclarer des variables dans le for, et tu n'auras
jamais de problème. (Mais je préfère la première solution.)
|
Ou aussi nommer les variables différemment dans les deux boucles.
--
Loïc
|
|
| Back to top |
|
 |
Alexandre Guest
|
Posted: Fri Sep 05, 2003 6:08 pm Post subject: Re: portée et boucle for. |
|
|
option pour que VC++ respecte la norme :
désinstaller VC++
installer un compilo qui respecte mieux la norme (borland ? gcc ?)
"Vincent Jacques" <vjacques (AT) wanadoo (DOT) fr> a écrit dans le message de
news:XnF93EC7AA1E13B0vjacqueswanadoofr (AT) 193 (DOT) 252.19.141...
| Quote: | Bonjour à tous,
Je lis dans le Stroustrup que la portée d'une variable déclarée au debut
d'une boucle "for" est le bloc de cette boucle. Or Visual C++ 6.0 etend
cette portée au bloc englobant la boucle:
int main(int,char*[])
{
for(int i=0;i<10;i++)
{
use(i);
}
use(i)
return 0;
}
est compilé sans erreur. Pire,
int main(int,char*[])
{
for(int i=0;i<10;i++)
{
use(i);
}
for(int i=0;i<10;i++)
{
use(i);
}
return 0;
}
Provoque une erreur!
Existe-t-il une option pour qu'il respecte (cette partie de) la norme?
Merci d'avance pour votre aide.
--
Vincent Jacques
|
|
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Sun Sep 07, 2003 11:20 am Post subject: Re: portée et boucle for. |
|
|
Alexandre wrote:
| Quote: | option pour que VC++ respecte la norme :
désinstaller VC++
installer un compilo qui respecte mieux la norme (borland ? gcc ?)
|
VC++ pourrait aussi convenir (version 7.1, bien évidemment)
--
Loïc
|
|
| Back to top |
|
 |
Alain Naigeon Guest
|
Posted: Sun Sep 07, 2003 5:37 pm Post subject: Re: portée et boucle for. |
|
|
"Demanet Michael" <michaeldemanet (AT) brutele (DOT) be> a écrit dans le message news:
bjflis$2mp$1 (AT) news (DOT) brutele.be...
| Quote: | Alexandre wrote:
option pour que VC++ respecte la norme :
désinstaller VC++
installer un compilo qui respecte mieux la norme (borland ? gcc ?)
"Vincent Jacques" <vjacques (AT) wanadoo (DOT) fr> a écrit dans le message de
news:XnF93EC7AA1E13B0vjacqueswanadoofr (AT) 193 (DOT) 252.19.141...
Personnellement je ne pense pas que Borland respecte plus la norme que
VC++.
|
Concernant le point précis dans le titre du fil, il me semble
que Borland a eu pas mal d'avance sur MS quant au respect
de la norme.
--
Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - [email]anaigeon (AT) free (DOT) fr[/email] - Strasbourg, France
|
|
| Back to top |
|
 |
Samuel Krempp Guest
|
Posted: Sun Sep 07, 2003 5:49 pm Post subject: Re: portée et boucle for. |
|
|
le Dimanche 7 Septembre 2003 19:37, [email]anaigeon (AT) free (DOT) fr[/email] écrivit :
| Quote: | Concernant le point précis dans le titre du fil, il me semble
que Borland a eu pas mal d'avance sur MS quant au respect
de la norme.
|
Je ne connais pas trop la situation du côté de borland, mais microsoft a
fait bcp de progrès récemment en matière de confomance. MSVC 7.1 n'a pu
guère des défauts qu'avait MSVC 6, et c'est même le compilo qui passent le
plus de tests de regression de boost sur cette page
http://boost.sourceforge.net/regression-logs/
2 échecs (je sais pas trop pquoi, ces 2 tests échouent pour tous les
compilors de la liste..), contre 5 pour gcc-3.3.1, 14 pour intel-7.1-linux
et 49 pour Borland 0x0564 - pour ce que ça veut dire, et sachant que tout
ça est très dépendant de comment la plateforme est configurée.
--
Sam
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Sun Sep 07, 2003 5:56 pm Post subject: Re: portée et boucle for. |
|
|
Samuel Krempp <krempp (AT) crans (DOT) truc.en.trop.ens-cachan.fr> writes:
« conformance » ou « conformité » ?
-- Gaby
|
|
| Back to top |
|
 |
Samuel Krempp Guest
|
Posted: Sun Sep 07, 2003 6:29 pm Post subject: Re: portée et boucle for. |
|
|
le Dimanche 7 Septembre 2003 19:56, [email]gdr (AT) integrable-solutions (DOT) net[/email] écrivit :
| Quote: | « conformance » ou « conformité » ?
|
ah tiens, « conformance » n'existe pas en français.
bon, ben « conformité » alors !
--
Sam
|
|
| Back to top |
|
 |
Richard Delorme Guest
|
Posted: Sun Sep 07, 2003 6:33 pm Post subject: Re: portée et boucle for. |
|
|
Samuel Krempp a écrit :
| Quote: | le Dimanche 7 Septembre 2003 19:37, [email]anaigeon (AT) free (DOT) fr[/email] écrivit :
Concernant le point précis dans le titre du fil, il me semble
que Borland a eu pas mal d'avance sur MS quant au respect
de la norme.
Je ne connais pas trop la situation du côté de borland, mais microsoft a
fait bcp de progrès récemment en matière de confomance. MSVC 7.1 n'a pu
guère des défauts qu'avait MSVC 6, et c'est même le compilo qui passent le
plus de tests de regression de boost sur cette page
http://boost.sourceforge.net/regression-logs/
2 échecs (je sais pas trop pquoi, ces 2 tests échouent pour tous les
compilors de la liste..), contre 5 pour gcc-3.3.1, 14 pour intel-7.1-linux
et 49 pour Borland 0x0564 - pour ce que ça veut dire, et sachant que tout
ça est très dépendant de comment la plateforme est configurée.
|
Est-ce que ce test ne signifie pas plutôt que boost a été plus testé pour
VC++ 7.1 et gcc que pour les autres ? Par exemple le nombre d'échecs est de
43 pour comeau C++. Je croyais pourtant que ce compilateur respectait le
mieux possible la norme.
--
Richard
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Sun Sep 07, 2003 6:40 pm Post subject: Re: portée et boucle for. |
|
|
Richard Delorme <abulmo (AT) nospam (DOT) fr> writes:
| Quote: | Est-ce que ce test ne signifie pas plutôt que boost a été plus testé pour
VC++ 7.1 et gcc que pour les autres ?
|
yep, ou que plus de développeurs de boost travaillent avec VC++ qu'avec
les autres compilateurs -- d'ailleurs, c'était flagrant dans les
premiers temps de boost où de l'énergie formidable a été dépensée pour
faire compiler des codes sous VC++.
| Quote: | Par exemple le nombre d'échecs est de
43 pour comeau C++. Je croyais pourtant que ce compilateur respectait le
mieux possible la norme.
|
mais visiblement peu de gens l'utilisent dans boost
[et je ne pense pas que como soit inférieur à GCC, mais c'est mon
opinion ]
-- Gaby
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|