Bonjour a tous,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Bonjour a tous,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Bonjour a tous,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Albert wrote:
Bonjour a tous,
Bonjour,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Albert wrote:
Bonjour a tous,
Bonjour,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Pierre Maurette wrote:
Bonjour,
Albert wrote:
Bonjour a tous,
Bonjour,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis viendront
les machines improbables, les exemples vécus, les fusées qui tombent, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capable
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
Pierre Maurette wrote:
Bonjour,
Albert wrote:
Bonjour a tous,
Bonjour,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis viendront
les machines improbables, les exemples vécus, les fusées qui tombent, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capable
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of return
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage que je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meilleure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis viendront
les machines improbables, les exemples vécus, les fusées qui tombent, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capable
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of retu rn
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage q ue je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meill eure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis vie ndront
les machines improbables, les exemples vécus, les fusées qui tomben t, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capa ble
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
d'autre part j'ai beau chercher ( ou je m'y prends mal ) j'aimerais
trouver de la doc ( en francais si possible ) sur la norme C99 afin
d'etre un peu plus d'actualite :-)
Pierre Maurette wrote:
Bonjour,
Albert wrote:
Bonjour a tous,
Bonjour,
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of retu rn
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage q ue je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meill eure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis vie ndront
les machines improbables, les exemples vécus, les fusées qui tomben t, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capa ble
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
d'autre part j'ai beau chercher ( ou je m'y prends mal ) j'aimerais
trouver de la doc ( en francais si possible ) sur la norme C99 afin
d'etre un peu plus d'actualite :-)
Pierre Maurette wrote:
Bonjour,Albert wrote:Bonjour a tous,
Bonjour,Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Oui oui c'est correct. Ceci dit, si il n'y a pas masse de code dans la
fonction après le bloc switch, ce n'est pas très joli.
Voir §6.8.6.4 de la norme (ou d'un brouillon) C99.
<§6.8.6.4.2>
Semantics
2 A return statement terminates execution of the current function and
returns control to its caller. A function may have any number of retu rn
statements.
</§6.8.6.4.2>
A moins d'avoir une raison particulière pour un seul return par
fonction (par exemple des outils de vérification ou de débogage q ue je
ne connais pas), et dans le cas classique d'un fonction réduite à
d'éventuels inits suivis d'un vaste switch, ça me semble la meill eure
solution même sur le plan du style.
Pour ce cas précis d'inits suivies d'un vaste switch et de petites
fonctions, peut-être, mais en général je ne suis pas d'accord. Il
suffit d'une allocation faite quelquepart, puis 500 lignes plus bas un
switch avec un return dans lequel on a oublié de désallouer ce qui
l'était avant de partir, et c'est la fête des fuites mémoires si la
fonction est appelée souvent.
Sur le plan du style, je trouve moche d'avoir 36 points de retour, et
je pense qu'un return dans un case peut faire cogiter le programmeur un
petit bout de temps si la fonction englobante est volumineuse.
Nous voilà partis dans l'interminable ;-)
Le contre-exemple de l'exemple, les trucs immondes où on alloue
n'importe où et où tout à coup on est devenu nullissime. Puis vie ndront
les machines improbables, les exemples vécus, les fusées qui tomben t, et
j'en passe.
Je me positionne dans le cas où les multiples return s'imposent
logiquement bien entendu, et je considère que le programmeur est capa ble
de structurer son code, y compris au niveau du style. Bien entendu, si
un seul case n'aboutit pas à return, c'est différent. Dans ces
conditions, je vois mal la supériorité de 36:
retour = qqchose;
break; /* un goto qui fait sa chochote */
qui tirent sur:
return retour;
par rapport à 36:
return qqchose;
bien alignés dans le switch.
Merci a vous tous de vos reponses super rapides.
d'autre part j'ai beau chercher ( ou je m'y prends mal ) j'aimerais
trouver de la doc ( en francais si possible ) sur la norme C99 afin
d'etre un peu plus d'actualite :-)
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
Mon probleme est dans le titre.
J'ai un switch case et a l'interieur est il "permis" de sortir d'un
case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
... ou pour oublier de libérer des ressources...
Ce n'est pas sur les pistes noires qu'on se casse le plus du matériel
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
... ou pour oublier de libérer des ressources...
Ce n'est pas sur les pistes noires qu'on se casse le plus du matériel
A moins d'avoir une raison particulière pour un seul return par fonction
(par exemple des outils de vérification ou de débogage que je ne connais
pas), et dans le cas classique d'un fonction réduite à d'éventuels inits
suivis d'un vaste switch, ça me semble la meilleure solution même sur le
plan du style.
... ou pour oublier de libérer des ressources...
Ce n'est pas sur les pistes noires qu'on se casse le plus du matériel
Mon probleme est dans le titre.
C'est quoi le titre ?
Si tu as un problème met le dans le corps du message, c'est plus sûr...
<<return dans un switch case>>J'ai un switch case et a l'interieur est il "permis" de sortir
d'un case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
C'est techniquement faisable. Savoir si c'est de la bonne progammation
ou non est un autre débat.
En tant qu'ardent défenseur des choses simples et de la programmation
structurée, je n'aime pas cette pratique...
Bonsoir et merci de votre reponse,
Mon probleme est dans le titre.
C'est quoi le titre ?
Si tu as un problème met le dans le corps du message, c'est plus sûr...
<<return dans un switch case>>
J'ai un switch case et a l'interieur est il "permis" de sortir
d'un case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
C'est techniquement faisable. Savoir si c'est de la bonne progammation
ou non est un autre débat.
En tant qu'ardent défenseur des choses simples et de la programmation
structurée, je n'aime pas cette pratique...
Bonsoir et merci de votre reponse,
Mon probleme est dans le titre.
C'est quoi le titre ?
Si tu as un problème met le dans le corps du message, c'est plus sûr...
<<return dans un switch case>>J'ai un switch case et a l'interieur est il "permis" de sortir
d'un case par un return ( le switch case est bien sur dans une fonction)
A la compile ( gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
je n'ai aucun message d'avertissement. Mais je voudrais etre sur que
c'est correcte. Rien vu a ce sujet.
C'est techniquement faisable. Savoir si c'est de la bonne progammation
ou non est un autre débat.
En tant qu'ardent défenseur des choses simples et de la programmation
structurée, je n'aime pas cette pratique...
Bonsoir et merci de votre reponse,