Bonjour,
Je voulais savoir, si on ne fournit pas d'argument dans la liste variable d'une fonction (ce qui n'est en générale pas une obligation), s'il y'avait un moyen de savoir si des arguments on été passés ou non.
Merci
Version imprimable
Bonjour,
Je voulais savoir, si on ne fournit pas d'argument dans la liste variable d'une fonction (ce qui n'est en générale pas une obligation), s'il y'avait un moyen de savoir si des arguments on été passés ou non.
Merci
Aucun moyen automatique. Le rôle du dernier paramètre formel avant les paramètres variables est précisément de renseigner la fonction sur le nombre (et éventuellement, le type) de paramètres attendus. C'est à l'appelant de faire ce qu'il faut.Citation:
Envoyé par CSoldier
Cependant, la méthode de la sentinelle peut fonctionner si l'appelant ne fait pas n'importe quoi.
Par exemple (Le paramètre attendu est de type char * et la sentinelle est NULL) :
utilisé comme suit :Code:void print (int, ...);
Evidemment si on faitCode:
1
2
3
4 print (0, NULL); print (0, "Hello", NULL); print (0, "Hello", "World", NULL);
le comportement est indéfini...Code:print (0, "Hello", "World");