VA_ARG |
Argument |
---|---|
Langage C++ | cstdarg (stdarg.h) |
Syntaxe
type va_arg(va_list ptrargument,type) |
Paramètres
Nom | Description |
---|---|
ptrargument | Ce paramètre permet d'indiquer le pointeur d'argument |
type | Ce paramètre permet d'indiquer le type |
Description
Cette fonction donne l'argument (le paramètre) suivant de la fonction.
Remarques
- Les fonctions va_arg(), va_start() et va_end() fonctionnent ensemble pour permettre à un nombre variable d'arguments d'être transmis à une fonction. L'exemple le plus courant d'une fonction prenant un nombre variable de paramètres est printf(). Le type va_list est défini par «cstdarg».
- La procédure générale de création d'une fonction pouvant accepter un nombre variable d'arguments est la suivante. La fonction doit avoir au moins un paramètre connu, mais peut en avoir plus avant la liste des paramètres variables. Le paramètre connu le plus à droite est appelé last_parm. Le nom de last_parm est utilisé comme deuxième paramètre dans un appel à va_start(). Avant d'accéder à l'un des paramètres de longueur variable, le pointeur d'argument ptrargument doit être initialisé via un appel à la fonction va_start(). Après cela, les paramètres sont retournés via des appels à va_arg(), avec type étant le type du paramètre suivant. Enfin, une fois que tous les paramètres ont été lus et avant de revenir de la fonction, un appel à va_end() doit être effectué pour s'assurer que la pile est correctement restaurée. Si la fonction va_end() n'est pas appelé, un plantage du programme est très probable.
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - vprintf
Langage de programmation - C++ - Référence procédures et fonctions - vsprintf
Langage de programmation - C - Référence procédures et fonctions - va_arg
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 735.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 289.
Dernière mise à jour : Lundi, le 3 août 2015