Non so come farlo!
come ottenere il puntatore alla funzione negli argomenti va_list?
grazie mille.Come passare un puntatore a una funzione con argomenti variabili?
5
A
risposta
4
Utilizzare un typedef per il tipo di puntatore della funzione.
3
I typedef spesso facilitano il lavoro con i puntatori di funzione, ma non sono necessari.
#include <stdarg.h>
void foo(int count, ...) {
va_list ap;
int i;
va_start(ap, count);
for (i = 0; i < count; i++) {
void (*bar)() = va_arg(ap, void (*)());
(*bar)();
}
va_end(ap);
}
Problemi correlati
- 1. Come passare un puntatore a una funzione c in Cython?
- 2. Passare argomenti a una funzione lua con luaj
- 3. In C, è mai sicuro lanciare un puntatore a funzione variadica su un puntatore a funzione con argomenti finiti?
- 4. Come scrivere un puntatore a una funzione che restituisce un puntatore a una funzione?
- 5. Come passare argomenti da: comando a funzione?
- 6. Come avere un puntatore a una funzione con argomenti arbitrari come parametro di modello?
- 7. Come passare un puntatore a funzione che punta al costruttore?
- 8. Come passare un puntatore raw a Boost.Python?
- 9. Come passare variabili vuote a una funzione in Lua
- 10. Passando argomenti variabili a un'altra funzione che accetta un elenco di argomenti variabili
- 11. Come "trasmettere" una funzione a due argomenti in una funzione a un argomento?
- 12. Passare argomenti della funzione a Object.assign
- 13. Template parametro - puntatore a funzione con argomenti variadic
- 14. come passare argomenti in funzione all'interno di una funzione in
- 15. Passare argomenti dalla funzione direttiva a controller
- 16. Passare argomenti multi-word a una funzione bash
- 17. Passare variabili a shell_exec()?
- 18. Come passare un puntatore a un'interfaccia?
- 19. Passaggio di elementi di un elenco come parametri a una funzione con argomenti variabili
- 20. Passare più argomenti a una funzione all'interno di select
- 21. Passare un puntatore a una funzione membro come argomento modello. Perché funziona?
- 22. Come passare argomenti a NSAction?
- 23. Sintassi per un puntatore a una funzione che restituisce un puntatore a funzione in C
- 24. F # passando un operatore con gli argomenti a una funzione
- 25. Passare argomenti con page.valutare
- 26. in linea Argomenti funzione Passare
- 27. Come passare argomenti a un Dockerfile?
- 28. Come passare l'argomento della funzione una funzione del puntatore usando la funzione wrapper?
- 29. Funzione con un argomento puntatore
- 30. Come posso passare un set di un numero sconosciuto di argomenti a una funzione in MATLAB?
In generale, per creare un nome di tipo (per uso con 'va_arg',' sizeof', un typecast o simile), scrivere un dichiarazione di una variabile con tale tipo, quindi rimuovere il nome della variabile. – caf
In realtà, questo è (per ironia della sorte) solo quando è necessario il typedef. Parlando del parametro * type * per va_arg nella sezione 7.15.1.1 dello standard C: "Il tipo di parametro deve essere un nome di tipo specificato in modo tale che il tipo di puntatore a un oggetto che ha il tipo specificato possa essere ottenuto semplicemente tramite postfixing un * per digitare. " Ciò significa che molti tipi non banali non sono garantiti per funzionare, incluso il tuo esempio, senza typedef. –
Non si compila sul mio set di strumenti. – KeatsPeeks