Как правильно работать с указателями void
подскажите как правильно работать с указателями на функцию void при передаче этого указателя в качестве аргумента в другую функцию. Имеются около 10 функций вида:
void func_xx (void)
они используются для вывода текста LCD на дисплей, напрямую из main не вызываются.
Их я хочу ввести в качестве аргумента в более сложную функцию, вызываемую из main
void parametr_edit (int8 x, int16 y, <тут должен быть указатель на void func_xx (void)> )
с точки зрения ассемблера, в коде функции parametr_edit должен быть обычный вызов одной из функций func_xx. Попробовал поискать в интернете, но в основном попадается указатель на не void. За 3 года работы впервые сталкнулся с указателями на функции, да ито потому, что потребовалось освободить немного места в ПЗУ МК. Решаем ли такой вопрос, и с чего начинать?
Ответы (2 шт):
Просто
void (*)(void)
См., например, https://ideone.com/00Zskj
Только уверен — ничего вы в Интернете не искали...
Как только что выяснилось, на Гарвардской платформе устройства, не действуют обычные правила установленные для С работающего с платформой единого пространства адресации. Здесь приходится подшаманить при работе с указателями на функции размещенных в ПЗУ (для указателей на данные в ОЗУ все работает прекрасно) пример
typedef void (*PTR)();
void func()
{
printf("Hello World\n\r");
}
void call(PTR argument)
{
argument();
}
при вызовах в main
call(func);
без этого к сожаленью не заработало