Я немного запутался в том, как объявить указатель на функцию в файле заголовка. Я хочу использовать его в main и файле с именем menus.c и объявить его в menus.h, я полагаю. Мы хотим инициализировать, чтобы указать на определенную функцию.
это выглядит так:
void (*current_menu)(int);
Что мы пишем в menus.c, menus.h и main?
Часто полезно использовать typedef
с указателями на функции, поэтому вы можете присвоить типу что-то описательное:
typedef void (*MenuFunction)(int);
Тогда у вас будет глобальная переменная этого типа, вероятно, в menus.c и объявлено (с extern
) в menus.h:
static void my_first_menu_function(int x)
{
printf("the menu function got %d\n", x);
}
MenuFunction current_menu = my_first_menu_function;
Из main.c вы можете затем:
#include "menu.h"
current_menu(4711);
вызвать любую функцию, на которую в данный момент указывает по current_menu
.