我对如何在头文件中声明函数指针感到有点困惑。我想在main和一个名为menus.c的文件中使用它,并在menus.h中声明它。我们希望初始化指向某个函数。
它看起来是这样的:
void (*current_menu)(int);
在menus.c、menus.h和main中写什么?
发布于 2011-12-19 22:34:06
将typedef
与函数指针一起使用通常很有帮助,因此您可以将类型命名为描述性的名称:
typedef void (*MenuFunction)(int);
然后您将有一个这种类型的全局变量,可能在menus.c中,并在menus.h中声明(使用extern
):
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
当前指向的任何函数。
发布于 2011-12-19 22:24:56
指针函数本身没有函数定义。它只不过是指向一个类型的指针,该类型由函数的返回类型和参数列表指定。您需要做的是定义一个具有相同参数列表和返回类型的函数,然后使用您的指针函数保存该函数的地址。然后,您可以通过指针调用函数。
https://stackoverflow.com/questions/8562694
复制相似问题