Das erste Problem mit Ihrer Definition ist, dass es null Sinn macht, static static
zu schreiben. Dies liegt daran, dass static
ein Speicherqualifikationsmerkmal ist und es nicht Teil des Typs an sich ist. Das zweite Problem besteht darin, dass Sie für beide Funktionen eine Parameterliste benötigen.
Sie können schreiben:
int (*compare_function(void))(int a) {
...
}
Oder Sie können compare_function
statisch machen:
static int (*compare_function(void))(int a) {
...
}
Jede dieser ein Objekt vom Typ int (*)(int a)
kehrt das ist, was Sie wollen. Um zu klären, ohne typedef
zu verwenden, ist dies der einzige Weg, eine Funktion zu schreiben, die eine Funktion gibt (ohne Someo
Schreiben static static
keinen Sinn macht, Stellen Sie sich vor etwas wie das Schreiben.
// no
typedef static int SInt;
Das ist nur doesn‘ t macht keinen Sinn entweder, so, wenn Sie eine Variable.
static int (*compare_function)(int a);
der Typ ist int (*)(int)
und die Speicherdauer ist statisch, und die Verbindung ist die interne
Funktioniert das? Probieren Sie es aus und sagen Sie uns .. –
@EugeneSh. Entschuldigung :) was ich meinte war, ist das die richtige/idiomatische Art das zu tun? –
Warum nicht ein 'typedef' verwenden? Wenn es ein Teil einer Schnittstelle ist, wäre der richtige Weg, es zu verwenden. –