IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

goto etiquette en c++


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut goto etiquette en c++
    Bonjour, je veux savoir comment arrêter l'exécution d'un code dans un endroit et l'empêcher de continuer, j’ai essayé avec ceci mais il m'envoie erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if ( dr != DT_OK )	      
    		LogF("  <nombre>1</nombre>");
    		LogF(L"</film>");
    		break;
                    //LogF est une fonction pour afficher,comme printf
    si quelqu'un connait comment ça marche ou s'il y a une autre méthode pour le faire merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    break pour quitter la boucle ou le switch en cours,
    return pour quitter la fonction en cours,
    exit() pour quitter le programme,
    goto pour quitter toute dignité. ()

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Des accolades peuvent également aider.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par mawkli Voir le message
    Bonjour, je veux savoir comment arrêter l'exécution d'un code dans un endroit et l'empêcher de continuer, j’ai essayé avec ceci mais il m'envoie erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if ( dr != DT_OK )	      
    		LogF("  <nombre>1</nombre>");
    		LogF(L"</film>");
    		break;
                    //LogF est une fonction pour afficher,comme printf
    si quelqu'un connait comment ça marche ou s'il y a une autre méthode pour le faire merci d'avance
    Tu réalises que ton code est équivalent à ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ( dr != DT_OK )	  
    {    
        LogF("  <nombre>1</nombre>"); // cette ligne est exécutée uniquement si le test est vrai
    }
    LogF(L"</film>");// cette ligne est toujours exécutée
    break;
    Si ton souhaites est d'exécuter les LogF si le test est vrai puis d'arrêter la fonction ou, si le test est faux, de faire ce qu'il y a après le break, tu dois écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ( dr != DT_OK )	  
    {    
        LogF("  <nombre>1</nombre>"); // cette ligne est exécutée uniquement si le test est vrai
        LogF(L"</film>"); // cette ligne est exécutée uniquement si le test est vrai
    } else {
        // le reste du code
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Merci à tous,
    j'ai essayé avec exit() comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if ( dr != DTAPI_OK )	
    	 {
            //throw Exc(c_ErrFailToAttachToChan, ::DtapiResult2Str(dr));
    		//goto end;		
    		LogF("  <Api_in_use>1</Api_in_use>");
    		LogF(L"</Carte>");
    		exit;
    	 }
    Mais il ne quitte pas le programme, il continue à exécuter les fonctions qui viennent après !

  6. #6
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Citation Envoyé par mawkli Voir le message
    Merci à tous,
    j'ai essayé avec exit() comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if ( dr != DTAPI_OK )	
    	 {
            //throw Exc(c_ErrFailToAttachToChan, ::DtapiResult2Str(dr));
    		//goto end;		
    		LogF("  <Api_in_use>1</Api_in_use>");
    		LogF(L"</Carte>");
    		exit;
    	 }
    Mais il ne quitte pas le programme, il continue à exécuter les fonctions qui viennent après !
    exit; et exit(0); ce n'est pas la même chose. essaie avec exit (/*la valeur du retour pour le main*/)

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    merci Kaamui,j'ai modifé par exit(1); et ça marche! merci à tous

  8. #8
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Citation Envoyé par mawkli Voir le message
    merci Kaamui,j'ai modifé par exit(1); et ça marche! merci à tous
    Pour étayer un peu mon propos, j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <iostream>
    #include <cstdlib>
     
    int main()
    {
        int i = 0;
        if (i == 0)
        {
            std::cout << "bonjour" << std::endl;
            exit;//si exit a un effet, on peut penser qu'il nous fera sortir du scope courant, comme un break.
            i = -2;
        }
     
        if (i == -2)
            std::cout << "comment allez vous ?" << std::endl;//logiquement on passera jamais par ici
     
        if (i == 0)
        {
            std::cout << "au revoir" << std::endl;
            exit(0);// on utilise cette fonction (std::exit) héritée du C (d'où le cstdlib dans les #include)
        }
     
        return 1;//si tout se passe bien, on n'aura jamais un retour d'une valeur de 1
    }
     
    //voici l'output
    /*
    bonjour
    comment allez vous ?
     
    Process returned 1 (0x1)   execution time : 0.062 s
    Press any key to continue.
    */
    on peut donc conclure que exit; n'a aucun effet. Par contre, ce qu'il serait intéressant de découvrir, c'est pourquoi cette instruction est reconnue à la compilation, mais pour ça je penses qu'il faut fouiller dans cstdlib, où attendre qu'un membre plus expérimenté nous éclaircisse

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi "goto" est déconseillé ?
    Par Melchisedec dans le forum Débuter
    Réponses: 20
    Dernier message: 30/05/2020, 16h24
  2. GOTO Etiquettes Multiples / Fortran66
    Par bmoumen27 dans le forum Fortran
    Réponses: 4
    Dernier message: 03/12/2009, 14h59
  3. on error goto <etiquette>
    Par fx007 dans le forum VBA Word
    Réponses: 1
    Dernier message: 16/05/2008, 20h15
  4. GOTO etiquette; en MySQL 5
    Par Soutou dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/11/2005, 16h56
  5. [] Impression des donnees sur etiquettes
    Par der dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/12/2002, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo