Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1134 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  goto or not to go

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

goto or not to go

n°1772786
cppisevil
Posté le 13-08-2008 à 10:42:57  profilanswer
 

Bonjour,
 
Je travaille avec visual C++ 2005 professionel
 
j'ai du code du genre
 
if ()
{
  if ()
  {
    if ()
    {
    }
    else
    {
    }
  }
  else
  {
  }
}
else
{
}
 
// Donc en gros plusieurs if then else imbriques
 
Et a un moment j'ai juste
if
{
  message_d_erreur;
  goto _END;
}
 
_END:
 
 
J'utilise jamais le Goto en fait
Mais là y en avait dans le code que j'utilise
Du coup pour les ca de sortie plutot que d'avoir trop de if imbriques, je fais juste un if et un goto _END; pour sortir et eviter un else
 
Sauf que comme ca se passe bien je passe pas dans le goto
et donc je vais dans le else ( qui nexiste pas )
sauf que au lieu de continuer apres le code, le programme va a l'etiquette
Y a t-il un goto implicite lorsque l'on n'ecrit pas explicitement la partie else ?
 
Car si j'ecris
if ()
{
 // code sans goto
}
suite du code
...
 
Je vais dans la suite du code
 
 
si j'ecris
if ()
{
 // code  
goto _END;
}
suite du code
...
 
Je vais a l'etiquette ( sans passer par le code du if bien entendu )
 
 
 
J'espere avoir ete clair sur ma question :p
 
 
 
 
 

mood
Publicité
Posté le 13-08-2008 à 10:42:57  profilanswer
 

n°1772787
Elmoricq
Modérateur
Posté le 13-08-2008 à 10:43:39  profilanswer
 

try...catch ? [:petrus dei]

n°1772794
Joel F
Real men use unique_ptr
Posté le 13-08-2008 à 10:56:02  profilanswer
 

try catch oui sans hésier v_v

n°1772796
cppisevil
Posté le 13-08-2008 à 11:00:12  profilanswer
 

Et par rapport a la question ?
Mes tests ne generent pas d'exception pour le moment, enfin je pourrais en generer dans certains cas explicitement mais bon
C m'empechera pas d'avoir 10 000 inclusions, vu que dans le cas ou je veux sortir je suis oblige de faire un goto quand  

n°1772804
Taz
bisounours-codeur
Posté le 13-08-2008 à 11:05:44  profilanswer
 

cppisevil a écrit :

Et par rapport a la question ?
Mes tests ne generent pas d'exception pour le moment, enfin je pourrais en generer dans certains cas explicitement mais bon
C m'empechera pas d'avoir 10 000 inclusions, vu que dans le cas ou je veux sortir je suis oblige de faire un goto quand  


bah fais des exceptions. Le goto en C je ne dis pas non, mais en C++ avec les objets, c'est ingérable.

n°1772812
Elmoricq
Modérateur
Posté le 13-08-2008 à 11:29:04  profilanswer
 

cppisevil a écrit :

Et par rapport a la question ?


 
On est pile dans le sujet pourtant.
 

cppisevil a écrit :

Mes tests ne generent pas d'exception pour le moment


 
C'est le moment alors !  [:kurt haribo]  
 
Petit exemple juste pour illustrer :

Code :
  1. try {
  2.    // code
  3.    if ( erreur )
  4.       throw string("message d'erreur" );
  5.    // code
  6. } catch ( string & e ) {
  7.    std::cerr << e << std::endl;
  8. }
  9. // suite du code

n°1772820
Taz
bisounours-codeur
Posté le 13-08-2008 à 11:34:59  profilanswer
 

Ah non pitié de lance pas des string mais des vrais exceptions dérivant std::exception et en particulier de trucs genre std::runtime_error ou tout ce que contient <stdexcept> (google).

n°1772821
kadreg
profil: Utilisateur
Posté le 13-08-2008 à 11:36:44  profilanswer
 

Et on ne lance pas std::exception en mettant le type d'exception en message, merci :o
 

Spoiler :

Oui, il y en a qui m'enervent ....


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1772822
Elmoricq
Modérateur
Posté le 13-08-2008 à 11:37:20  profilanswer
 

Yup j'ai eu un coup de flemme, c'était plus pour illustrer qu'utiliser goto dans son cas était inutile et pourri qu'autre chose.

 

edit : cppisevil, tu trouveras plus d'infos ici : http://www.cplusplus.com/doc/tutorial/exceptions.html


Message édité par Elmoricq le 13-08-2008 à 11:40:29
n°1772832
cppisevil
Posté le 13-08-2008 à 11:51:01  profilanswer
 

Le truc c'est qu'avec ça
en gros toute ma méthode et contenu dans un try catch
et ce qu'il y a dans le catch c'est ce que j'etais cense faire en allant au goto
 
c'est pas terrible de mettre une methode entiere dans un try catch
 
le but des goto
c'etait d'eviter d'avoir des if then else imbriquee pour la lisibilite du code
 
si je met un try catch a chaque test, ben ca m'avancera rien et n'aura pas plus dutilite que le if then else :)
 
Merci pour le lien (elmoricq)
 

mood
Publicité
Posté le 13-08-2008 à 11:51:01  profilanswer
 

n°1772906
Joel F
Real men use unique_ptr
Posté le 13-08-2008 à 15:20:58  profilanswer
 

sauf que goto dans un environnement objet, c'est la porte ouverte à l'arrachage de pied avec une kalashnikov.
 
Taz : mattes boost::exception dans la 1.36 ;)

n°1773194
Taz
bisounours-codeur
Posté le 14-08-2008 à 11:18:13  profilanswer
 

C'est très très chiant que ça dérive pas de boost::exception.
 
Dans le fond c'est bien boost, mais les packageurs des différents OS font chier:
- sous linux c'est globalement dispo, mais y en a beaucoup qui package boost en 36 modules, certains avec runtime d'autres pas
- sous windows on peut rêver
- sous les autres OS, y en a qui s'aggripe à leur gcc 2.95 et ça foire, du coup, écrire un programme de 1000 lignes qui nécessitent de compiler boost, ils aiment pas ...
 
D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là).

n°1773250
Joel F
Real men use unique_ptr
Posté le 14-08-2008 à 12:13:32  profilanswer
 

libre je sais pas, mais bon toute la code base de Adobe est basé dessus. Moi perso, c'est boost dés que je peut.

n°1773251
Un Program​meur
Posté le 14-08-2008 à 12:16:16  profilanswer
 

Taz a écrit :

D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là).


 
LyX est le plus gros projet libre que je connais qui utilise boost.

n°1773370
Taz
bisounours-codeur
Posté le 14-08-2008 à 16:00:29  profilanswer
 

Bah lyx ils doivent embarquer boost aussi


Message édité par Taz le 14-08-2008 à 16:01:06
n°1773844
Gf4x3443
Killing perfection
Posté le 17-08-2008 à 00:02:25  profilanswer
 

Taz a écrit :

- sous les autres OS, y en a qui s'aggripe à leur gcc 2.95 et ça foire, du coup, écrire un programme de 1000 lignes qui nécessitent de compiler boost, ils aiment pas ...


 
Tellement vrai. C'est particulièrement chiant sur des systèmes frustres genre des vieilles solaris :/
 

Citation :

D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là).


 
D'une certaine manière, qt4/kde s'en sert, vu que tout le système de build passe par cmake (qui nécessite quelques libs boost). A partir de là, builder qt sur de vieilles stations, c'est pas commode :/


---------------
Petit guide Kerberos pour l'administrateur pressé

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  goto or not to go

 

Sujets relatifs
Un goto ou bien une boucle ! Comment fairegoto
On error goto, toujours executéSyntaxe du GOTO en Ada
Probleme de _root ou goto je sais pas trop :(Probleme On error goto
Aide svp => on error goto ...VBS :: goto ?
Gototest if et goto
Plus de sujets relatifs à : goto or not to go


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR