Ich sah this, aber es hat nie spezifiziert, wie man einen Funktionszeiger erklärt, der einen Zeiger zu einer Funktion zurückgibt (er definierte einfach, wie man eine Funktion verursacht, die einen Funktionszeiger zurückbringt).Wie schreiben Sie einen Funktionszeiger, der einen Funktionszeiger ohne typedefs zurückgibt?
Während es wahrscheinlich klüger wäre, typedefs zu verwenden, interessiert mich die Syntax, um dies ohne typedefs zu erreichen.
Dies ist der nächstgelegene ich bekam:
struct function_hash_table {
unsigned int(*(*getFunction)(Type, Type, Type))(char *name);
}
(Welche ist eigentlich eher auf diese Frage irrelevant).
Aber, wenn ich versuche, es so zu nennen:
hash_table.getFunction("Test");
ich Fehler für zu wenige Parameter und falsche Parametertypen. Clarify
An:
unsigned int(*hash_get_function(Type, Type, Type))(char *name)
für aktuelle Funktionen gut funktioniert und in dem Link erklärt. Wie soll ich jedoch einen Funktionszeiger deklarieren, der auf eine solche Definition verweist?
„es nie festgelegt, wie ein Funktionszeiger zu deklarieren, die eine Funktion gibt (es einfach definiert, wie eine Funktion zu erstellen, einen Funktionszeiger zurückkehrt)“ - in C, Funktionsbezeichner sind nicht erstklassig. Sie können keine Funktion zurückgeben. Sie können nur einen Funktionszeiger zurückgeben. –
Mein Wortlaut ist offensichtlich irreführend. Ich verstehe, was du gerade gesagt hast, aber darum habe ich nicht gefragt. Wenn ich getFunction nicht in eine Struktur schreiben müsste, wäre ich in der Lage, sie richtig zu schreiben. Die Frage ist, wie man einen Funktionszeiger definiert, der einer Funktion entspricht, die nicht innerhalb der Struktur liegt. – Isaiah
ist es egal, ob Ihr Zeiger ein Mitglied einer Struktur oder eine "Stand-alone" -Variable ist. Die Erklärung ist dieselbe. –