#include <stdio.h>
typedef void*(*PtrAllgemein)();
/* statt int bla(int) : */
void* bla
(int i
){printf("%d",i
);return (void*)i
;}
/* statt char *foo(char *) : */
void* foo
(char *s
){puts(s
);return 0;}
int main() {
int i;
enum {BLA,FOO};
PtrAllgemein p[] = {bla,foo};
p[BLA](2);
p[FOO]("hello");
/* für die Return-Typen der Funktionen sollte man dann aber nur Zeiger verwenden,
evtl. würden noch integer Typen gehen, die dann aber (sowohl in der Funktion als auch beim Aufruf) gecastet werden müssen: */
i = (int)p[BLA](1234);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHZvaWQqKCpQdHJBbGxnZW1laW4pKCk7CgovKiBzdGF0dCBpbnQgYmxhKGludCkgOiAqLwp2b2lkKiBibGEoaW50IGkpe3ByaW50ZigiJWQiLGkpO3JldHVybiAodm9pZCopaTt9CgovKiBzdGF0dCBjaGFyICpmb28oY2hhciAqKSA6ICovCnZvaWQqIGZvbyhjaGFyICpzKXtwdXRzKHMpO3JldHVybiAwO30KCmludCBtYWluKCkgewoJaW50IGk7CgllbnVtIHtCTEEsRk9PfTsKCVB0ckFsbGdlbWVpbiBwW10gPSB7YmxhLGZvb307CgkKCXBbQkxBXSgyKTsKCXBbRk9PXSgiaGVsbG8iKTsKCQoJLyogZsO8ciBkaWUgUmV0dXJuLVR5cGVuIGRlciBGdW5rdGlvbmVuIHNvbGx0ZSBtYW4gZGFubiBhYmVyIG51ciBaZWlnZXIgdmVyd2VuZGVuLAoJZXZ0bC4gd8O8cmRlbiBub2NoIGludGVnZXIgVHlwZW4gZ2VoZW4sIGRpZSBkYW5uIGFiZXIgKHNvd29obCBpbiBkZXIgRnVua3Rpb24gYWxzIGF1Y2ggYmVpbSBBdWZydWYpIGdlY2FzdGV0IHdlcmRlbiBtw7xzc2VuOiAqLwoJCglpID0gKGludClwW0JMQV0oMTIzNCk7CglwcmludGYoIiVkIixpKTsKCQoJcmV0dXJuIDA7Cn0K