如何在头文件和c文件中声明函数指针?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (52)

我对如何在头文件中声明函数指针有点困惑。我想在main和一个名为menus.c的文件中使用它,并在menus.h中声明它。我们想要初始化指向某个函数。

它看起来像这样:

void (*current_menu)(int);

我们在menus.c,menus.h和main中写什么?

提问于
用户回答回答于

typedef与函数指针一起使用通常很有用,因此你可以将类型命名为描述性的:

typedef void (*MenuFunction)(int);

然后你会得到这个类型的全局变量,可能在menus.c中,并在menus.h中声明(with 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

用户回答回答于

函数指针仍然是一个指针,意味着它仍然是一个变量。

如果你想让一个变量在多个源文件中可见,最简单的解决方案就是将其声明extern在头文件中,并在其他地方定义。

在header中:

extern void (*current_menu)(int);

在一个源文件中:

void (*current_menu)(int) = &the_func_i_want;

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问36 回答
  • 富有想象力的人

    3 粉丝0 提问30 回答
  • 学生

    3 粉丝476 提问28 回答
  • o o

    4 粉丝494 提问27 回答

扫码关注云+社区

领取腾讯云代金券