Несколько экземпляров одной и той же функции в C

Я использую C для контроллера *******, и у меня есть функция, которая содержит статическую переменную внутри

int buttonReallyPressed(int i);

Я хочу несколько экземпляров этой функции, чтобы я сделал это:

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

Получил ли я два отдельных экземпляра функции int buttonReallyPressed (int i)?

2 ответа

Когда вы создаете указатель на функцию, вы не создаете в ней другого экземпляра статической переменной.

Обходной путь: создать структуру, в которой все, что вам нужно для обработки одной кнопки (переместить в нее статическую переменную). Создайте массив экземпляров структуры. Передайте структуру обработчику кнопок в качестве параметра.

struct button_state {
 int pressed; // or whatever
}

struct button_state button[3];

int buttonReallyPressed(struct button_state *state);

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


Нет, у вас есть два указателя на одну и ту же функцию.

licensed under cc by-sa 3.0 with attribution.