1. 程式人生 > >typedef在函式回撥上面的應用

typedef在函式回撥上面的應用

最近在學習C++,開發windows程式,用c++程式設計真是一件爽歪歪的事情!最近讓我印象深刻,有種莫名其妙的衝動的感覺,對函式回撥產生了濃厚興趣,分分鐘想解剖他大笑

回撥機制的本質是函式指標在作祟。最近在程式設計的時候,看到前輩們用的這樣的程式碼,瞬間秒掉了我,頓時毀了我的世界觀!世間竟有如此美的程式碼!

typedef int (*func)(void);剛開始看到這樣的一條語句真心不解,充滿著神奇和好奇!起初看到前輩們是用在函式的回撥上面,花了點時間研究了下,最後查完資料才頓時覺悟

上面這條語句是表示函式指標型別func,例如func  fn;則表示的是fn函式指標是指向返回值為int,沒有帶形參的函式!

而這樣的函式指標可以指向回撥函式的入口地址,因而即可實現回撥機制。因此可以這樣說回撥函式的本質是入口地址可以發生變化的一種函式,可以在使用者需要一些操作觸發一些函式的執行,典型的例子是我們介面的按鍵等控制元件當用戶操作的時候,要對應的執行一些函式。

同理有typedef bool (*func)(void);

typedef void (*func)(void);等等

另外一個好處就是利用typedef int (*func)(void);可以減少函式指標定義的繁瑣,如果沒有加上面的定義的話,當你函式要定義的時候需要的就是 bool (*fn)(void);這樣才是表示一個函式指標,而如果有了typedef int (*func)(void);則不用那麼麻煩,直接就可以用func fn;就表示是函式指標。