C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Re: portée et boucle for.

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Marc Durufle
Guest





PostPosted: Thu Sep 04, 2003 11:08 am    Post subject: Re: portée et boucle for. Reply with quote



Visual C++ ne respecte pas la norme, il a sa propre norme.

Back to top
Serge Paccalin
Guest





PostPosted: Thu Sep 04, 2003 12:11 pm    Post subject: Re: portée et boucle for. Reply with quote



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





PostPosted: Thu Sep 04, 2003 12:19 pm    Post subject: Re: portée et boucle for. Reply with quote



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





PostPosted: Fri Sep 05, 2003 8:38 am    Post subject: Re: portée et boucle for. Reply with quote

"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





PostPosted: Fri Sep 05, 2003 11:26 am    Post subject: Re: portée et boucle for. Reply with quote

[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





PostPosted: Fri Sep 05, 2003 6:08 pm    Post subject: Re: portée et boucle for. Reply with quote

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





PostPosted: Sun Sep 07, 2003 11:20 am    Post subject: Re: portée et boucle for. Reply with quote

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





PostPosted: Sun Sep 07, 2003 5:37 pm    Post subject: Re: portée et boucle for. Reply with quote

"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





PostPosted: Sun Sep 07, 2003 5:49 pm    Post subject: Re: portée et boucle for. Reply with quote

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





PostPosted: Sun Sep 07, 2003 5:56 pm    Post subject: Re: portée et boucle for. Reply with quote

Samuel Krempp <krempp (AT) crans (DOT) truc.en.trop.ens-cachan.fr> writes:

Quote:
confomance.

« conformance » ou « conformité  » ?

-- Gaby

Back to top
Samuel Krempp
Guest





PostPosted: Sun Sep 07, 2003 6:29 pm    Post subject: Re: portée et boucle for. Reply with quote

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





PostPosted: Sun Sep 07, 2003 6:33 pm    Post subject: Re: portée et boucle for. Reply with quote

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





PostPosted: Sun Sep 07, 2003 6:40 pm    Post subject: Re: portée et boucle for. Reply with quote

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 Wink
[et je ne pense pas que como soit inférieur à GCC, mais c'est mon
opinion Smile]

-- Gaby

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.