Les partenaires publicitaires:

Comment faire pour utiliser les fonctions de paramètres variables dans c ++

La plupart des fonctions acceptent un nombre fixe d'arguments. Certaines applications, cependant, nécessitent des fonctions pour accepter des paramètres variables. Un exemple bien connu est la fonction d'impression de C. Pour de tels cas, C ++ offre une solution puissante qui permet au compilateur de déchiffrer les arguments au moment de l'exécution. Lisez la suite pour un tutoriel qui montre comment implémenter ces fonctions.

Choses que vous devez

  • Intermédiaire C ++
  • Compilateur C ++ avec l'IDE, tels que Microsoft Visual C ++

Instructions

  1. Ajouter le fichier de bibliothèque stdarg.h dans votre programme. Voilà où vous définissez les macros. Sur la première ligne du fichier, insérez #include lt; stdarg.h gt ;.

  2. Utilisez le macros va_arg, va_start et v_end qui collaborent avec l'va_type dans stdarg.h.

  3. Établir une variable de type va_list à fonctionner comme un marqueur de liste.

  4. Accédez aux paramètres individuels en utilisant la macro va_arg. Trouver un moyen de dire la macro va_arg ce type d'argument que vous voulez récupérer de fournir le nombre exact d'octets de la pile.



  5. Jetez le résultat de l'étape 4 du type que vous voulez qu'il soit.

  6. Appelez la macro va_end à la fin du traitement des paramètres variables.




  7. Regardez l'exemple ci-dessous qui montre les étapes 2 à 6. Fonction myprintf accepte une chaîne de format qui spécifie le type et la position de chaque argument. Suite à la chaîne de format est la liste des arguments. La fonction imprime les arguments. Pour plus de simplicité, il peut seul processus int, float et l'omble:

    // Déclaration

    myprintf vide (char le format, ...) -

    // Defintion

    myprintf vide (char
    le format, ...) {

    va_list VL-

    int i-

    va_start (vl, args) -

    for (i = 0- args [i]! = ' 0'- ++ i) {

    union any_t {

    int i-

    flotter f-

    omble c-

    } Anywhere

    if (args [i] == 'i') {

    any.i = va_arg (vl, int) -

    printf ( "% I n", Any.i) -

    } Else

    if (args [i] == 'f') {

    any.f = va_arg (vl, float) -

    printf ( "% F n", Any.f) -

    } Else

    if (args [i] == 'c') {

    any.c = va_arg (vl, char) -

    printf ( "% C n", Any.c) -

    }

    else {

    jeter SomeException-

    }

    va_end (vl) -

    }

» » » » Comment faire pour utiliser les fonctions de paramètres variables dans c ++