C 设置了一些参数的函数指针
如何创建指向函数的函数指针,其中一些参数设置为固定在定义上 下面是一个例子,我的意思是: 假设我有这个函数C 设置了一些参数的函数指针,c,pointers,function-pointers,C,Pointers,Function Pointers,如何创建指向函数的函数指针,其中一些参数设置为固定在定义上 下面是一个例子,我的意思是: 假设我有这个函数 int add (int n, int m) { return n+m; } 和函数指针类型 typedef int (*increaser)(int); 我想要的是一个指向函数add的指针,该函数将第一个参数固定为1,并使第二个参数保持打开状态。类似于 increaser f = &add(1,x); 我怎样才能做到这一点 我想要的是一个指向add函数的指针,它将
int add (int n, int m) {
return n+m;
}
和函数指针类型
typedef int (*increaser)(int);
我想要的是一个指向函数add
的指针,该函数将第一个参数固定为1,并使第二个参数保持打开状态。类似于
increaser f = &add(1,x);
我怎样才能做到这一点
我想要的是一个指向add函数的指针,它将第一个参数固定为1,并使第二个参数保持打开状态
C中没有这样的东西。最接近的方法是创建一个包装器函数并创建指向该函数的指针:
int add1(int x) {
return add(1, x);
}
increaser f = &add1;
如果不需要指向函数的指针,则可以使用宏:
#define increaser(x) add(1, (x))
C不支持直接这样做。在C++中,有STD::Fuffic和Band,可以实现这一点。 尽管如此,对于纯C解决方案,您可以合理地得到的最接近的方法是定义一个调用add的新函数,如:
int increment(int input) {
return add(1, input);
}
然后你可以做:
increaser f = &increment;
编写包装器..C没有闭包。我不会调用函数类型
increaser
。对我来说,它相当于一个一元运算符
,因为实现此签名的函数可以做完全不同的事情。