C中具有相同功能的多个实例

时间:2014-12-25 21:26:57

标签: c

我使用C作为Arduino控制器,我有一个包含

内部静态变量的函数
int buttonReallyPressed(int i);

我想要该函数的多个实例,所以我已经这样做了:

typedef int (*ButtonDebounceFunction) ( int arg1);
ButtonDebounceFunction Button1Pressed = buttonReallyPressed;
ButtonDebounceFunction Button2Pressed = buttonReallyPressed;

我是否收到了函数int buttonReallyPressed(int i)的两个独立实例?

2 个答案:

答案 0 :(得分:5)

当您创建指向函数的指针时,您不会在函数中创建另一个静态变量实例。

解决方法是:创建结构,保存处理单个按钮所需的一切(将静态变量移入其中)。创建结构的实例数组。将结构作为参数传递给按钮处理程序。

struct button_state {
    int pressed; // or whatever
}

struct button_state button[3];

int buttonReallyPressed(struct button_state *state);

void button_isr(...)
{
    ...
    buttonReallyPressed(&button[id]);
    ...
}

答案 1 :(得分:2)

不,你有两个指向相同功能的指针。