Как объявить указатель на функцию в заголовке и c-файле?

Я немного запутался в том, как объявить указатель на функцию в файле заголовка. Я хочу использовать его в main и файле с именем menus.c и объявить его в menus.h, я полагаю. Мы хотим инициализировать, чтобы указать на определенную функцию.

это выглядит так:

void (*current_menu)(int);

Что мы пишем в menus.c, menus.h и main?

18
задан Rob W 27 December 2011 в 00:14
поделиться

1 ответ

Часто полезно использовать 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.

8
ответ дан 30 November 2019 в 08:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: