va_start
|
Défini dans l'en-tête
<stdarg.h>
|
||
|
void
va_start
(
va_list ap, parmN
)
;
|
(jusqu'à C23) | |
|
void
va_start
(
va_list ap, ...
)
;
|
(depuis C23) | |
La macro
va_start
permet d'accéder aux arguments variables
suivant l'argument nommé
parmN
(jusqu'à C23)
.
va_start
doit être invoqué avec une instance d'un objet
va_list
valide
ap
avant tout appel à
va_arg
.
|
Si
|
(jusqu'en C23) |
|
Seul le premier argument passé à
|
(depuis C23) |
Table des matières |
Paramètres
| ap | - | une instance du type va_list |
| parmN | - | le paramètre nommé précédant le premier paramètre variable |
Valeur développée
(aucun)
Exemple
#include <stdio.h> #include <stdarg.h> int add_nums_C99(int count, ...) { int result = 0; va_list args; va_start(args, count); // count peut être omis depuis C23 for (int i = 0; i < count; ++i) { result += va_arg(args, int); } va_end(args); return result; } #if __STDC_VERSION__ > 201710L // Identique au-dessus, valide depuis C23 int add_nums_C23(...) { int result = 0; va_list args; va_start(args); int count = va_arg(args, int); for (int i = 0; i < count; ++i) { result += va_arg(args, int); } va_end(args); return result; } #endif int main(void) { printf("%d\n", add_nums_C99(4, 25, 25, 50, 50)); #if __STDC_VERSION__ > 201710L printf("%d\n", add_nums_C23(4, 25, 25, 50, 50)); #endif }
Sortie possible :
150 150
Références
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.16.1.4 La macro va_start (p: 198-199)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.16.1.4 La macro va_start (p: 271-272)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.15.1.4 La macro va_start (p : 251-252)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.8.1.1 La macro va_start
Voir aussi
|
accède à l'argument suivant de la fonction variadique
(macro de fonction) |
|
|
(C99)
|
effectue une copie des arguments de la fonction variadique
(macro de fonction) |
|
termine le parcours des arguments de la fonction variadique
(macro de fonction) |
|
|
contient les informations nécessaires pour
va_start
,
va_arg
,
va_end
, et
va_copy
(typedef) |
|
|
Documentation C++
pour
va_start
|
|