Я бы хотел, чтобы это работало, но это не так:
#include <stdio.h>
typedef struct closure_s {
void (*incrementer) ();
void (*emitter) ();
} closure;
closure emit(int in) {
void incrementer() {
in++;
}
void emitter() {
printf("%d\n", in);
}
return (closure) {
incrementer,
emitter
};
}
main() {
closure test[] = {
emit(10),
emit(20)
};
test[0] . incrementer();
test[1] . incrementer();
test[0] . emitter();
test[1] . emitter();
}
Он фактически компилируется и работает для 1 экземпляра... но второй не выполняется. Любая идея, как получить замыкания в C?
Это было бы действительно потрясающе!