2014-04-15 50 views
0

我浏览尽管XCB来源,我发现这个怪异的结构成员:'void(* return_socket)(void * closure);'意思?

void (*return_socket)(void *closure); 

这是什么意思?什么是写这个的另一种方式?

+0

这是一个'指针function',要求需要一个指向某个数据(尽管该文件或代码,会告诉你什么)的功能一个参数,并且什么都不返回。 – AntonH

回答

5

这是一个函数指针。 它指向返回void并接收void *作为参数的函数。

例如,你可以使用它作为:

void myFunction(void *closure) 
{ 
    printf("myFunction called with closure=%p", closure); 
} 

void (*return_socket)(void *closure) = myFunction; 
+0

我还是不太明白这个表示法。如果'void'是返回值,并且'void * closure'是参数,那么中间的位是什么? '(* return_socket)'。 –

+1

'return_socket'是变量名。代替**标识符**作为函数名称,您使用**星号**和**标识符**来表示它是函数指针。 您可以稍后使用'return_socket = myFunction2;' – Spidey

+0

分配给它哦,我看到,'*'表示它是一个指针。如果语法是'void(void * closure)* return_socket',但是很好,会更有意义。我会在6分钟内接受答案。 –

相关问题