Ich weiß nicht, wie das geht!
Wie bekomme ich den Funktionszeiger in va_list Argumente?
vielen dank.Wie übergibt man einen Funktionszeiger an eine Funktion mit variablen Argumenten?
5
A
Antwort
4
Verwenden Sie einen Typdef für den Funktionszeigertyp.
3
Typedefs erleichtern oft das Arbeiten mit Funktionszeigern, sind aber nicht notwendig.
#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);
}
Verwandte Themen
- 1. Python: Wie übergibt man einen Kontext an eine Funktion
- 2. Wie übergibt man einen Operator an eine Python-Funktion?
- 3. Wie übergibt man eine dynamische Anzahl von Argumenten an eine Funktion?
- 4. Wie übergibt man eine Mehrfachausgabe an eine Funktion?
- 5. Angularjs: Wie übergibt man Scope-Variablen an eine Direktive?
- 6. Funktion in einer Variablen, übergibt einen Parameter
- 7. Fis einen Operator mit Argumenten an eine Funktion
- 8. Wie übergibt man eine Struktur an die Funktion?
- 9. Wie kann eine Funktion mit variablen Argumenten eine andere aufrufen?
- 10. Wie übergibt man eine Instanzvariable in Argumenten für Typoskript-Dekoratoren?
- 11. Wie man Django Template-Variablen an ein WebPack-Modul übergibt
- 12. Wie übergibt man Eigenschaften an eine variable Funktion in Javascript?
- 13. Wie übergibt man ein Array von Strings an eine Funktion?
- 14. Wie übergibt man eine Zeichenfolge an die CreateProcess-Funktion?
- 15. Wie man Parameter an eine Versprechen-Funktion übergibt
- 16. Wie übergibt man ein Array und ein einzelnes Element an eine Methode mit mehreren Argumenten?
- 17. Wie übergibt man einen Parameter an eine Unterklasse von BroadcastReceiver?
- 18. Wie übergibt man lokale int-Variablen als Parameter an eine Funktion?
- 19. Wie übergibt man eine ArrayList an einen varargs Methodenparameter?
- 20. Wie übergibt man eine Faser an einen Thread?
- 21. C++ Funktionszeiger mit unbekannter Anzahl von Argumenten
- 22. Wie übergibt man Variablen von einer statischen Funktion der Klasse1 an eine andere Klasse2?
- 23. Wie übergibt man in Dart Variablen an main?
- 24. Problem mit der C-Callback-Funktion in C# - Wie übergibt man einen Wert an einen Zeiger?
- 25. Wie übergibt man Variablen an FlowRouter 'benannte Routen'?
- 26. Chrome Extension - Wie übergibt man Variablen von JS an popup.html?
- 27. Selenium IDE: Wie man Variablen übergibt
- 28. Wie übergibt man eine zufällige Funktion als Argument?
- 29. Wie übergibt man Variablen von C# an Javascript?
- 30. In C, ist es jemals sicher, einen Variadic-Funktionszeiger auf einen Funktionszeiger mit endlichen Argumenten zu werfen?
Im Allgemeinen einen Typnamen (zur Verwendung mit 'va_arg',' sizeof', einer Typumwandlung oder ähnlichem), schreiben Sie eine Deklaration einer Variablen mit dieser Art zu erstellen, dann die Variablennamen entfernen. – caf
Eigentlich ist das (ironisch) nur die Zeit, die Typedefs benötigt werden. Was den Parameter * type * für va_arg in Abschnitt 7.15.1.1 des C-Standards betrifft: "Der Parametertyp muss ein Typenname sein, der so spezifiziert ist, dass der Typ eines Zeigers auf ein Objekt mit dem angegebenen Typ einfach durch Postfixing erhalten werden kann a * zu tippen. " Dies bedeutet, dass viele nicht-triviale Typen nicht garantiert funktionieren, einschließlich Ihres Beispiels ohne typedef. –
Kompiliert nicht auf meinem Toolset. – KeatsPeeks