[英]What does “typedef void *(*Something)(unsigned int)” mean
[英]typedef void(* something)(someclass* something) - what does that mean? Never seen typedef usage like this
我正在閱讀linux內核代碼,遇到類似以下內容:
typedef void (* gps_location_callback)(GpsLocation* location)
然后可以像下面這樣使用:
gps_location_callback location_cb;
有人可以告訴我typedef是什么意思嗎? 我以前從未見過這樣的東西..謝謝!
這是一個函數指針 。 此類型的變量指向簽名為void (GpsLocation*)
的函數:
void foo(GpsLocation *);
gps_location_callback f = foo;
// now use f(p) etc
沒有typedef,您將必須編寫:
void (*f)(GpsLocation *) = foo;
它gps_location_callback
用作函數的typedef
,該函數返回void
並以GpsLocation*
作為參數。
因此,每當您使用ore聲明類型為gps_location_callback
的變量時,都在使用或聲明一個函數指針,該指針指向返回void
並接受typedef
列出的參數的函數。
這使gps_location_callback
成為函數指針的別名,該別名以GpsLocation* location
作為參數,不返回任何內容。
在這種typedef
現在很容易根據需要創建變量函數指針,並且可以將其用作
gps_location_callback x,y,z;
現在,您具有三個函數指針,這些指針將參數作為GpsLocation* location
並且不返回任何內容。
它是函數的typdef *用於回調
所以你可以做
if(location_cb != NULL)
{
location_cb(my_gps_location);
}
回調對於基於事件的事情很有用,它允許您將函數傳遞給事件發生時可以調用的函數。 例如,當您獲取GPS位置時,請使用已獲取的GPS調用我的功能,這樣我就可以做自己的事情,例如將其保存到數據庫或在屏幕上顯示
gps_location_callback
是函數指針的定義,其中函數不返回任何內容( void
),並將指向GpsLocation
的指針作為參數。
例如。 如果您具有以下功能:
void location_func(GpsLocation* location)
您可以將指向函數的指針分配給location_cb
,即。
gps_location_callback location_cb = location_func;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.