我使用C作为Arduino控制器,我有一个包含
内部静态变量的函数int buttonReallyPressed(int i);
我想要该函数的多个实例,所以我已经这样做了:
typedef int (*ButtonDebounceFunction) ( int arg1);
ButtonDebounceFunction Button1Pressed = buttonReallyPressed;
ButtonDebounceFunction Button2Pressed = buttonReallyPressed;
我是否收到了函数int buttonReallyPressed(int i)的两个独立实例?
答案 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)
不,你有两个指向相同功能的指针。