OVH Cloud OVH Cloud

Parameter x is never used

23 réponses
Avatar
Fabien LE LEZ
Bonjour,

J'ai une fonction, en cours de création, qui ressemble à ça :

bool f (std::string const& x)
{
return true;
}

Bien évidemment, mon compilo râle parce que le paramètre "x" n'est pas
utilisé. Histoire de le faire taire pendant que je réfléchis à
l'implémentation réelle de la fonction, je tente ceci :

bool f (std::string const& x)
{
return x, true;
}

Et là, il râle toujours... alors qu'avec ceci :

bool f (std::string const& x)
{
x;
return true;
}

il ne râle plus (et considère donc que "x" est utilisé).

Bon, c'est pas une affaire d'état, et j'imagine que c'est encore une
bizarrerie de mon compilo, mais si jamais quelqu'un sait pourquoi en
voyant "return x, true;" il ne réagit pas de la même façon qu'en
voyant "x; return true;"...

Merci d'avance ;-)


--
schtroumpf schtroumpf

3 réponses

1 2 3
Avatar
Fabien LE LEZ
On Thu, 24 Jun 2004 11:03:20 +0200, Vincent Guichard
:

je ne sais même pas si on peut avoir l'occasion de
l'utiliser légitimement ;-)


Mais si, mais si, [...] dans les boucles for()


Oups... Oui, j'avais oublié ce cas-là.

Note que dans
for( i=0, j; i<6 ; i++, j--)

La première virgule est un cas tordu, puisqu'elle force la déclaration
(et donc le scope) des variables de boucle i et j en-dehors de la
boucle for() -- c'est commun en C, mais peu conseillé en C++.
Il est possible de l'écrire :

for (int i=0, j; ...

mais dans ce cas la virgule n'a plus du tout le même sens.

D'ailleurs, dans mon exemple, au lieu de :

int h()
{
return f(),g();
}

int main()
{
cout << h() << endl;
}


int main()
{
int s= f(), g();
cout << s << endl;
}

J'ai mis un petit moment à comprendre pourquoi ça ne fonctionnait pas
;-)


--
schtroumpf schtroumpf


Avatar
kanze
Fabien LE LEZ wrote in message
news:...
On Thu, 24 Jun 2004 10:21:29 +0200, "PurL" :

"a, b" évalue a et b (dans ce sens, je crois), et renvoie b.


Je ne connaissais pas.


Rassure-toi, on peut très bien vivre sans connaître ce genre de
technique -- je ne sais même pas si on peut avoir l'occasion de
l'utiliser légitimement ;-)


On peut le surcharger pour permettre des choses du genre :

s = a, b, c ;

où s a un type qui représente un ensemble ou une liste, et l'opérateur
de ',' est quelque chose du genre :

TypeS&
operator,( TypeS& lhs, TypeS::value_type rhs )
{
lhs.add( rhs ) ;
return lhs ;
}

Note que je ne dis pas que ce soit une bonne idée. Seulement qu'on peut,
et certains l'ont fait.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Avatar
drkm
"Alexandre" writes:

oups, j'aurais du tout lire avant de poster. Ok, je comprends mieux. Donc
c'est possible.
On peut pas enlever un post ? Je sais, il vaut mieux lire avant d'écrire ;-)


Arrg. J'ai essayé de te répondre en privé, mais ton adresse est
invalide !

--drkm

1 2 3