Существует ли "правильный" способ реализации функций более высокого порядка в C.
Мне в основном интересуются такие вещи, как переносимость и правильность синтаксиса здесь, и если есть несколько способов, каковы достоинства и недостатки.
Изменить: Причина, по которой я хочу знать, как создавать функции более высокого порядка, - это то, что я написал систему для преобразования списков PyObject (которые вы получаете при вызове скриптов python) в список структур C, содержащих одни и те же данные, но организованные таким образом, чтобы они не зависели от библиотеки python.h. Поэтому мой план состоит в том, чтобы иметь функцию, которая выполняет итерацию через список pythonic и вызывает функцию для каждого элемента в списке и помещает результат в список, который он затем возвращает.
Итак, это в основном мой план:
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);
}
И чтобы уяснить вопрос: я хочу знать, как сделать это в более безопасном и правильном C. Мне бы очень хотелось сохранить стиль функции более высокого порядка, но если это неодобрительно, я очень ценю, как это сделать путь.