Gibt es eine „richtige“ Art und Weise Funktionen höherer Ordnung in C zu implementierenFunktionen höherer Ordnung in C
Ich bin meistens neugierig über Dinge wie Portabilität und Syntax Korrektheit hier und wenn es mehr als eine Art und Weise, was die Verdienste und Fehler sind. Der Grund, warum ich wissen möchte, wie man Funktionen höherer Ordnung erstellt, ist, dass ich ein System geschrieben habe, um PyObject-Listen (die man beim Aufruf von Python-Skripten erhält) in eine Liste von C-Strukturen zu schreiben, die dieselben Daten enthalten in einer Weise organisiert, die nicht von den python.h-Bibliotheken abhängig ist. Mein Plan ist also, eine Funktion zu haben, die durch eine Pythonie-Liste iteriert und eine Funktion für jedes Element in der Liste aufruft und das Ergebnis in eine Liste stellt, die dann zurückgegeben wird.
Das ist also im Grunde mein Plan:
typedef gpointer (converter_func_type)(PyObject *)
gpointer converter_function(PyObject *obj)
{
// do som stuff and return a struct cast into a gpointer (which is a void *)
}
GList *pylist_to_clist(PyObject *obj, converter_func_type f)
{
GList *some_glist;
for each item in obj
{
some_glist = g_list_append(some_glist, f(item));
}
return some_glist;
}
void some_function_that_executes_a_python_script(void)
{
PyObject *result = python stuff that returns a list;
GList *clist = pylist_to_clist(result, converter_function);
}
Und die Frage clearify: Ich möchte wissen, wie das richtig C. in sicherer und mehr tun, würde ich wirklich die Funktion höherer Ordnung Stil halten möchte Aber wenn das verpönt ist, schätze ich sehr, wie ich das anders machen kann.
Gute Frage, aber vage. Es sieht so aus, als hättest du etwas darüber geforscht. Könntest du deine Frage aktualisieren, um anzuzeigen, was du bereits gefunden hast? Die gegebenen Antworten sind großartig, aber können nur so spezifisch sein wie die Frage. –