2014-04-15 73 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分鐘內接受答案。 –

相關問題