Хитрый он. Махлюет. Рекуренция декларации разорвана потому что
возвращаемое значение не функция на саму себя а структура. Пример
не работет. Если поправить то появляется проблема с расходом стека. typedef struct FuncStruct FuncStruct;
typedef FuncStruct (*my_func_t)(int);
struct FuncStruct {
my_func_t func;
};
FuncStruct example_function(int x) {
printf("Called with %d\n", x);
return FuncStruct{example_function}; // Для примера возвращаем NULL
}
int main() {
FuncStruct f = { example_function };
f.func(10).func(11).func(12).func(13);
return 0;
}
или переделывать итерфейс и передавать через параметр.