你能得到的最接近的东西是这样的:
#include <stdio.h>
#include <stdlib.h>
typedef void (*function)(void*);
typedef struct {
void *arg;
function fn;
} binder;
binder *binder_create(function fn, void *arg)
{
binder *b = malloc(sizeof(binder));
if (b) {
b->fn = fn;
b->arg = arg;
}
return b;
}
void binder_delete(binder *b)
{
free(b);
}
void binder_exec(binder *b)
{
b->fn(b->arg);
}
int main(void)
{
binder *myfunc = binder_create((function)puts, "Hello, World!\n");
binder_exec(myfunc);
binder_delete(myfunc);
return 0;
}
它没有提供函数调用那样的语法(您需要调用
binder_exec