gpt4 book ai didi

c - C中相同函数的多个实例

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:07 25 4
gpt4 key购买 nike

我在 Arduino Controller 上使用 C,我有一个函数,里面包含一个静态变量

int buttonReallyPressed(int i);

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

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

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

最佳答案

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

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

struct button_state {
int pressed; // or whatever
}

struct button_state button[3];

int buttonReallyPressed(struct button_state *state);

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

关于c - C中相同函数的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com