如何转发声明一个将指向函数的指针作为参数的函数?

How to forward declare a function that takes a pointer to a function as a parameter?

如何在 C 语言中转发声明一个函数作为参数?

函数如下:

void start_thread (void* function (void*)) {

    ...

}

我尝试将其向前声明为:

void start_thread (void*);

以及:

void start_thread (void* (void*));

和:

void start_thread (void*, void*);

None 个已被接受。为此功能转发声明的正确日期是哪一天?

编辑:

void start_thread (void (*) (void*));

产量:

Compilation error
prog.c: At top level:
prog.c:135:6: error: conflicting types for 'start_thread'
 void start_thread (void* function (void*)) {
      ^
prog.c:25:6: note: previous declaration of 'start_thread' was here
 void start_thread (void (*) (void *));
      ^

使用挡风玻璃刮水器技术(左-右-左...):

是一个指针,所以有一个*。在函数上,所以 (*).

它return void, 所以, void (*).

需要一个void*,所以void (*)(void*)

原型是void start_thread(void (*)(void*));

正确的前锋 declaration/prototype 应该是:

void start_thread(void*(void*);

对于您的函数定义:

void start_thread (void* function (void*)) {

参数是一个函数,它接受一个void *作为参数和returns一个void *。为了更清楚的定义,应该是:

void start_thread (void *(*function)(void*)) {

所以声明应该是:

void start_thread (void *(*)(void*));