如何转发声明一个将指向函数的指针作为参数的函数?
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*));
如何在 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*));