如何在C?
中转发声明具有函数作为参数的函数这是功能:
void start_thread (void* function (void*)) {
...
}
我尝试将其声明为:
void start_thread (void*);
以及:
void start_thread (void* (void*));
和
void start_thread (void*, void*);
这些都没有被接受。为此功能转发申报的正确日期是什么时候?
编辑:
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 *));
^
答案 0 :(得分:0)
使用挡风玻璃刮水器技术(左 - 右......):
这是一个指针,所以有一个*
。在函数上,(*)
。
它返回void
,因此,void (*)
。
需要void*
,所以void (*)(void*)
原型是void start_thread(void (*)(void*));
答案 1 :(得分:0)
对于函数定义,您有:
func flipImage(image: UIImage) -> UIImage {
guard let cgImage = image.cgImage else {
// Could not form CGImage from UIImage for some reason.
// Return unflipped image
return image
}
let flippedImage = UIImage(cgImage: cgImage,
scale: image.scale,
orientation: .leftMirrored)
return flippedImage
}
参数是一个接受void start_thread (void* function (void*)) {
作为参数并返回void *
的函数。为了更清楚定义,它应该是:
void *
所以声明应该是:
void start_thread (void *(*function)(void*)) {
答案 2 :(得分:-2)
正确的前向声明/原型将是:
void start_thread(void*(void*);