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

10 réponses

1 2 3
Avatar
Jacky Goyon
"Aurélien Regat-Barrel" a écrit dans le message news:
40d96621$0$2855$
Ca explique ce drôle de code ...


la virgule est surtout utilisée dans une boucle for, par ex :
...
for( i=0, j; i<6 ; i++, j--)
...
Jacky

Avatar
Fabien LE LEZ
On Wed, 23 Jun 2004 13:33:55 +0200, "Jacky Goyon"
:

la virgule est surtout utilisée dans une boucle for


Et dans la programmation d'un Mastermind ;-)


--
schtroumpf schtroumpf

Avatar
Alexandre
"PurL" a écrit dans le message de
news:cbb9kv$v3k$
return x, true;


Désolé de mon intervention sans rapport avec la question, mais je voulais
juste comprendre le sens de l'instruction ci-dessus car je ne l'ai jamais
rencontré.

je crois que ça n'existe pas. Je ne vois pas ce que ça voudrait dire,

d'ailleurs. l'opérateur , représente une séparation dans une liste. Comment
renvoyer une liste de valeurs ? Infaisable, non ? Enfin AMA.


Avatar
Alexandre
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 ;-)
Avatar
James Kanze
"PurL" writes:

|> > return x, true;

|> Désolé de mon intervention sans rapport avec la question, mais je
|> voulais juste comprendre le sens de l'instruction ci-dessus car je
|> ne l'ai jamais rencontré.

Le sens, c'est de renvoyer le résultat de l'expression « x, true ».
Dans cette expression, évidemment, le virgule est un opérateur, et non
une ponctuation habituelle. Le sens est donc, évaluer « x », jeter le
résultat de l'évaluation (mais non des effets de bord), puis évaluer
l'expression « true », qui est le résultat de l'expression complète.

--
James Kanze
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
Jean-Noël Mégoz
"Gabriel Dos Reis" a écrit dans le message de
news:
| 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;"...

Peut-être que l'optimiseur n'est pas encore assez avancé ? :-)



Ou au contraire, il l'est trop : il considère que passer x directmeent de
l'entrée à la sortie n'est pas une "utilisation" du paramètre... :)

Avatar
Fabien LE LEZ
On Wed, 23 Jun 2004 19:06:48 +0200, "Alexandre"
:

On peut pas enlever un post ?


Si, du moins l'annuler (cf fr.usenet.reponses). Mias ceux qui l'ont
déjà téléchargé le gardent ; il faut donc faire assez vite.


--
schtroumpf schtroumpf

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


Je ne connaissais pas.
Merci pour ces explications ;)

PurL

Avatar
Fabien LE LEZ
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 ;-)


--
schtroumpf schtroumpf


Avatar
Vincent Guichard

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


Mais si, mais si, comme l'a dit Jacky, dans les boucles for(), pour les

initialisations multiples et/ou les conditions multiples.

Vincent Guichard

1 2 3