2016-09-26 19 views
4

如何創建一個函數指針指向一個函數,其中一些參數被設置爲在定義時被固定。設置了一些參數的函數指針

這裏有一個例子我的意思:

比方說,我有功能

int add (int n, int m) { 
    return n+m; 
} 

和函數指針類型

typedef int (*increaser)(int); 

我要的是一個函數指針add,它將第一個參數固定爲1,並保持第二個參數打開。東西沿線

increaser f = &add(1,x); 

我該如何做到這一點?

+3

寫的包裝。 。 –

+1

C沒有關閉。 – EOF

+0

我不會調用函數'increaser'。對我來說,它實際上是一個'int_unary_operator',因爲實現這個簽名的函數可以完全不同。 – glglgl

回答

3

我想要的是一個指向函數add的指針,它將第一個參數修復爲1,並將第二個參數保留爲打開狀態。

存在C.沒有這樣的事情,你能來最接近的是創建一個包裝的功能,使一個指針:

int add1(int x) { 
    return add(1, x); 
} 

increaser f = &add1; 

如果你不需要一個函數指針那麼您可以使用宏:

#define increaser(x) add(1, (x)) 
1

C不支持直接執行此操作。在C++中有std :: function和bind可以實現這一點。

儘管如此一個純C解決方案,你可以合理得到最接近的是定義調用追加新功能,如:

int increment(int input) { 
    return add(1, input); 
} 

然後,你可以這樣做:

increaser f = &increment;