Problème :
Vous avez deux fonctions, exemple ( ) et exampleB(), avec des listes d'arguments variables similaires :
void example(int a, int b, ...); void exampleB(int b, ...);
Vous devez appeler example() depuis l'intérieur exampleB() sans modifier la liste d'arguments variables de cette dernière, comme elle est utilisée ailleurs.
Solution :
Malheureusement, il n'existe pas de méthode directe pour passer des arguments variables en C . Pour y parvenir, vous devez définir une fonction d'assistance qui prend un paramètre va_list. Voici un exemple :
#include <stdarg.h> static void exampleV(int b, va_list args); void exampleA(int a, int b, ...) // Renamed for consistency { va_list args; do_something(a); // Use argument a somehow va_start(args, b); exampleV(b, args); va_end(args); } void exampleB(int b, ...) { va_list args; va_start(args, b); exampleV(b, args); va_end(args); } static void exampleV(int b, va_list args) { ...whatever you planned to have exampleB do... ...except it calls neither va_start nor va_end... }
Dans cette configuration :
Par en ajoutant exampleV() comme intermédiaire, vous pouvez transmettre les arguments variables à exampleB() sans modifier son implémentation d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!