2011-12-08 30 views

回答

5

這是一個函數指針。這種類型的點的簽名功能的變量是void (GpsLocation*)

void foo(GpsLocation *); 

gps_location_callback f = foo; 

// now use f(p) etc 

沒有的typedef你必須寫:

void (*f)(GpsLocation *) = foo; 
0

其功能的typdef *它做回調

這樣你就可以做

if(location_cb != NULL) 
{ 
    location_cb(my_gps_location); 
} 

回調有利於基於事件的東西,它可以讓你通過功能轉化爲可再當事件發生時被調用。例如,當您獲得GPS位置時,請使用您已獲得的GPS呼叫我的功能,以便我可以做我自己的事情,例如將其保存到數據庫中,或將其顯示在屏幕上

3

它讓gps_location_callbacktypedef對於返回void和功能以GpsLocation*作爲參數。

讓你用礦石任何時候聲明gps_location_callback類型的變量,你使用或聲明的函數指針指向返回void,並採取論證了typedef列表的功能。

0

gps_location_callback函數指針,其中函數返回任何內容(void)和採用指向一個GpsLocation作爲參數的定義。

例如。如果你有以下功能:

void location_func(GpsLocation* location) 

你可以一個指針分配給功能location_cb,即。

gps_location_callback location_cb = location_func; 
0

這是使gps_location_callback到函數指針的別名,內搭GpsLocation* location 作爲參數和返回什麼;

在這種typedef現在它很容易使一個變量函數指針爲u想和你使用它作爲

gps_location_callback x,y,z; 

現在你有三個函數指針,這需要參數作爲GpsLocation* location,並且沒有返回。

相關問題