如何创建一个指向函数的函数指针,其中某些参数设置为在定义上修复。
以下是我的意思:
我们说我有这个功能
int add (int n, int m) {
return n+m;
}
和函数指针类型
typedef int (*increaser)(int);
我想要的是一个指向函数add
的指针,该函数将第一个参数修复为1并使第二个参数保持打开状态。
increaser f = &add(1,x);
我该如何做到这一点?
答案 0 :(得分:3)
我想要的是一个指向函数add的指针,它将第一个参数修复为1并使第二个参数打开。
在C中没有这样的东西。你最接近的是创建一个包装器函数并指向它:
int add1(int x) {
return add(1, x);
}
increaser f = &add1;
如果您不需要指向该函数的指针,那么您可以使用宏:
#define increaser(x) add(1, (x))
答案 1 :(得分:1)
C不支持直接执行此操作。在C ++中有std :: function和bind可以实现这一点。
对于纯C解决方案而言,你可以合理地得到的最接近的是定义一个调用add的新函数:
int increment(int input) {
return add(1, input);
}
然后你可以这样做:
increaser f = &increment;