如何在C中获取函数指针?

我在C中有一个函数:

void start_fun()
{
   // do something
}

我想使用pthread_create()创建一个线程,启动例程是start_fun(),没有修改void start_fun(),如何获取函数指针start_fun();

最佳答案
如果在代码中的任何地方编写函数名称start_fun而没有任何参数,您将获得一个指向该函数的函数指针.

但是pthread_create需要格式为void * func(void *)的函数.

如果重写函数不是一个选项,你将不得不写一个包装器:

void* call_start_fun (void* dummy)
{
  (void)dummy;

  start_fun();

  return 0;
}

然后将call_start_fun传递给pthread_create:

pthread_create(&thread, NULL, call_start_fun, NULL);

转载注明原文:如何在C中获取函数指针? - 代码日志