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

C++ Discussion :

Nombre d'arguments infini


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut Nombre d'arguments infini
    bonjour à tous

    je voudrai centraliser mes messages d'erreur dans une fonction, par exemple show_error. mon problème est pour le printf, je vous montre un exemple vous comprendrez je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void show_error(bool exit, char error_msg, ...) {
        printf(error_msg, PROBLEME 1);
    
        if (exit) {
            system("PAUSE");
            PROBLEME 2
        } // if
    } // show_error
    voila, mon probleme 1 est que je ne sais pas comment faire pour récupérer les paramètres "infinis" de mon show_error (ceux après error_msg), pour les passer à printf

    ensuite, mon probleme 2, c'est quitter le programme

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par défaut
    Regarde comment est codé printf, l'astuce est de passer par une macro va_list.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    j'ai justement cherché comment était codé le printf, mais je n'ai trouvé que les déclarations, pas le vrai code

    j'ai dev cpp et code blocks sous la main, tu peux me dire ou trouver le code de printf ?

    merci

  4. #4
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Tout est bien expliqué dans la FAQ C. http://c.developpez.com/faq/c/?page=..._args_variable

    Mais en C++ il y a une manière plus élégante de le faire qui sont les appels chaînés : http://c.developpez.com/faq/cpp/?pag...hainage_appels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    merci pour les liens, c'est parfait

    maintenant, mon problème est de passer ces paramètres à printf ... quelqu'un a une idée ?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu ne les passes pas, printf, c'est pour du C. Utilise cout.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    ah, ok, merci. je vais voir avec cout alors

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La seule manière d'afficher un va_arg c'est avec vsprintf (ou un truc dans le genre).

    Pour sortir c'est la fonction exit, mais on essaye de l'éviter en C++. S'il s'agit d'une erreur tu peux lever une exception par exemple.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    je devrais peut-être lever une exception, alors. tu aurais un exemple de code pour faire ça, et que le programme s'arrête ensuite ?

    pourquoi je ne dois pas trop utiliser exit en c++ ?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    je devrais peut-être lever une exception, alors. tu aurais un exemple de code pour faire ça, et que le programme s'arrête ensuite ?
    Des exemples il y en a partout : dans les cours, tutoriels, la FAQ, ... Pour que ton programme s'arrête il suffit de n'attraper l'exception que dans le main et de retourner immédiatement.

    pourquoi je ne dois pas trop utiliser exit en c++ ?
    Parce que certaines variables n'auront pas leur destructeur appelé, principalement. Et puis c'est assez "bourrin", bien que pour gérer une erreur fatale comme ici ça n'ait pas beaucoup d'importance.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut
    ok je comprend pour le exit. désolé, je viens du Delphi (je sais pas si tu connais), et j'ai l'habitude de tout libérer dans l'évènement de la fin de l'appli. donc ça posait pas de soucis

    je vais chercher pour les exceptions

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

Discussions similaires

  1. Nombre d'arguments infini, comment faire.
    Par rami zouari dans le forum C++
    Réponses: 14
    Dernier message: 13/12/2013, 16h35
  2. Réponses: 4
    Dernier message: 31/10/2005, 17h48
  3. Macros et nombre d'arguments variable
    Par kaisse dans le forum C
    Réponses: 7
    Dernier message: 28/07/2005, 10h10
  4. Nombre d'arguments variable
    Par gege2061 dans le forum C
    Réponses: 7
    Dernier message: 05/08/2004, 15h43
  5. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32

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