青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

春暖花開
雪化了,花開了,春天來了
posts - 149,comments - 125,trackbacks - 0
 

最近在看代碼,寫代碼的人很喜歡用回調(diào)函數(shù)和函數(shù)指針。一直覺得回調(diào)函數(shù)和函數(shù)指針挺神秘的,所以查了一些資料,來與大家一起來分享。

什么是回調(diào)函數(shù)

簡而言之,回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用為調(diào)用它所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。

為什么要使用回調(diào)函數(shù)

   因為使用回調(diào)函數(shù)可以把調(diào)用者和被調(diào)用者分開,調(diào)用者不關(guān)心誰是被調(diào)用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件(如返回值為int)的被調(diào)用函數(shù)。回調(diào)函數(shù)就好像是一個中斷處理函數(shù),系統(tǒng)在符合你設(shè)定的條件時自動調(diào)用。

如何使用回調(diào)函數(shù)

 使用回調(diào)函數(shù),我們需要做三件事:

  • 聲明
  • 定義
  • 設(shè)置觸發(fā)條件:在你的函數(shù)種把你的回調(diào)函數(shù)名稱轉(zhuǎn)化為地址作為一個參數(shù),以便于系統(tǒng)調(diào)用。

聲明和定義時應(yīng)注意,回調(diào)函數(shù)由系統(tǒng)調(diào)用,所以可以認(rèn)為它屬于windows系統(tǒng),不要把它當(dāng)作你的某個類的成員函數(shù)。

回調(diào)函數(shù)是一個程序員不能顯示調(diào)用的函數(shù),通過將回調(diào)函數(shù)的地址傳給調(diào)用者從而實現(xiàn)調(diào)用。回調(diào)函數(shù)是十分必要的,在我們想通過一個統(tǒng)一接口實現(xiàn)不同的內(nèi)容,這時回調(diào)函數(shù)非常合適。

函數(shù)指針的聲明

對回調(diào)函數(shù)有了一個初步的了解,下面我們來說一下函數(shù)指針。因為要實現(xiàn)回調(diào),必須首先定義函數(shù)指針。

void (*) ()

左邊圓括弧中的星號是函數(shù)指針聲明的關(guān)鍵。另外兩個元素是函數(shù)的返回類型(void)和右邊圓括弧中的入口參數(shù)

為函數(shù)指針聲明類型定義:

Typedef void(* pfv)()

pfv 是一個函數(shù)指針,它指向的函數(shù)沒有輸入?yún)?shù),返回類型為voie。使用這個類型定義名稱可以隱藏負(fù)責(zé)的函數(shù)指針語法。

void (*p)();

void func()

{

……

}

p = func;

p的賦值可以不同,但一定要是函數(shù)的指針,并且參數(shù)和返回類型相同。

例如:

現(xiàn)學(xué)現(xiàn)賣的一個小例子

#include <iostream>
using namespace std;

typedef 
void (*PF)();
void func()
{
  cout 
<< "func" << endl;
}


void caller( PF pf)
{
  pf();
}


int main()
{
  PF p 
= func;
  caller(p);

  system(
"pause");

  
return 0;
}


調(diào)用約定

visual c++中,可以在函數(shù)類型前加_cdecl,_stdcall或者_pascal來表示調(diào)用規(guī)范(默認(rèn)為_cdecl)。調(diào)用規(guī)范影響編譯器產(chǎn)生的給定函數(shù)名,參數(shù)傳遞的順序,堆棧清理責(zé)任以及參數(shù)傳遞機制。

不過,在win32的程序中,我見得比較多的是CALLBACK,這個宏定義在windef.h中,

#define CALLBACK    __stdcall

它約定了函數(shù)在它們返回到調(diào)用者之前,都會從堆棧中移除掉參數(shù)。

 

摘自:

回調(diào)函數(shù)

http://hi.baidu.com/spidermanzy/blog/item/b25b00956469c6097bf48016.html

回調(diào)函數(shù)以及鉤子函數(shù)的概念

http://zq2007.blog.hexun.com/9068988_d.html

聲明函數(shù)指針并實現(xiàn)回調(diào)

http://www.vckbase.com/document/viewdoc/?id=195

posted on 2008-12-07 16:56 Sandy 閱讀(13236) 評論(7)  編輯 收藏 引用 所屬分類: windows學(xué)習(xí)

FeedBack:
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-07 20:10 | 肥仔
good.
回調(diào)函數(shù)和函數(shù)指針是低階的技術(shù)特性。
一個建議是,可以在此基礎(chǔ)上,更進(jìn)一步,學(xué)習(xí)理解“委托”這種基于回調(diào)的高階編程思想,將得到更多。。。。。。
  回復(fù)  更多評論
  
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-07 20:13 | 肥仔
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-07 22:33 | 沈臻豪(foxtail)
肥仔好厲害哦  回復(fù)  更多評論
  
# re: 回調(diào)函數(shù)和函數(shù)指針[未登錄]
2008-12-08 08:47 | SpringSnow
@肥仔
謝謝 肥仔了!學(xué)習(xí)了
:)
  回復(fù)  更多評論
  
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-11 13:49 | jmchxy
你天天在使用回調(diào)函數(shù). 基本上GUI界面底層都是回調(diào)函數(shù)處理的. 典型的就是Windows系統(tǒng)的窗口處理還是 winproc  回復(fù)  更多評論
  
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-11 13:58 | jmchxy
事實上回掉函數(shù)和普通函數(shù)是沒區(qū)別的. 你同樣可以使用定義的回調(diào)函數(shù)做其它事情. 調(diào)用約定是有調(diào)用者規(guī)定的(函數(shù)參數(shù)中規(guī)定了回調(diào)函數(shù)的類型, 函數(shù)類型包括了函數(shù)的調(diào)用約定, 參數(shù), 返回值), CALLBACK 是 win16 一個遺留宏定義, 當(dāng)初是定義成的 pascal 約定, 現(xiàn)在都是定義成 WINAPI宏, 使用的是 __stdcall 約定.
類靜態(tài)成員函數(shù)可以作回調(diào)函數(shù), 不用成員函數(shù)做回調(diào)函數(shù)的原因是成員函數(shù)的參數(shù)比參數(shù)表中列出的多了一個this指針(其實也是可以用的, 那種技巧沒什么好處就是了,呵呵)  回復(fù)  更多評論
  
# re: 回調(diào)函數(shù)和函數(shù)指針
2008-12-14 16:55 | Sandy
@jmchxy
說的很對。在windows系統(tǒng)的窗口處理本身就是回調(diào)函數(shù),雖然天天在用,對其機制不是很了解。所以jmchxy的補充讓我很受益。
謝謝!  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大片一区二区三区| 亚洲精品一区二区三区樱花| 性亚洲最疯狂xxxx高清| 亚洲理论在线| 亚洲最新色图| 亚洲免费在线视频一区 二区| 亚洲一区二区三区777| 亚洲免费视频在线观看| 欧美制服第一页| 久久精品五月婷婷| 欧美电影在线播放| 国产精品美女久久久久久2018| 狠狠干狠狠久久| 亚洲精品女人| 欧美一区二区在线看| 欧美xx视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲国产精品va在线观看黑人| 夜夜嗨av一区二区三区| 久久国产加勒比精品无码| 免费在线欧美黄色| 国产精品久久国产愉拍 | 欧美午夜欧美| 狠狠色狠色综合曰曰| 日韩视频不卡中文| 亚洲女女做受ⅹxx高潮| 欧美va天堂| 亚洲免费在线精品一区| 久久伊人一区二区| 欧美视频网址| 在线观看91精品国产入口| 一区二区三区蜜桃网| 乱人伦精品视频在线观看| 一区二区久久久久| 欧美sm重口味系列视频在线观看| 国产欧美一区二区精品性色| 91久久午夜| 久久婷婷影院| 亚洲一区二区在线观看视频| 欧美福利电影在线观看| 国产日韩一区二区| 亚洲视频在线观看视频| 欧美成人自拍| 久久国产免费| 国产日韩一级二级三级| 亚洲影院色在线观看免费| 亚洲激情不卡| 男女精品视频| 亚洲国产日韩一级| 欧美不卡在线视频| 久久精品盗摄| 含羞草久久爱69一区| 欧美在线不卡| 亚洲午夜电影| 国产精品视频1区| 亚洲欧美日韩精品一区二区| 一区二区高清| 国产精品久久久久影院亚瑟| 国产精品99久久久久久www| 亚洲黄色视屏| 欧美日韩国产色综合一二三四 | 久久嫩草精品久久久久| 国产一区亚洲一区| 另类成人小视频在线| 久久免费精品视频| 亚洲经典在线| 亚洲人成久久| 久久亚洲综合色| 999在线观看精品免费不卡网站| 亚洲在线日韩| 激情综合电影网| 欧美激情在线免费观看| 久久久欧美精品| 亚洲一卡久久| 亚洲永久视频| 亚洲精美视频| 亚洲在线国产日韩欧美| 亚洲第一精品久久忘忧草社区| 亚洲精选中文字幕| 国内精品久久久久国产盗摄免费观看完整版| 久久久精品网| 国产精品久久精品日日| 亚洲免费久久| 日韩午夜电影| 欧美日本国产| 麻豆国产精品777777在线| 国产日韩精品在线播放| 亚洲精品影院在线观看| 亚洲日本欧美| 欧美91大片| 你懂的成人av| 亚洲毛片在线免费观看| 欧美成人黄色小视频| 另类专区欧美制服同性| 国产女人精品视频| 久久婷婷色综合| 欧美激情亚洲一区| 亚洲精品视频在线播放| 久久夜色精品国产欧美乱极品| 久久永久免费| 一区二区高清在线| 亚洲乱码日产精品bd| 欧美激情亚洲| 亚洲综合色丁香婷婷六月图片| 亚洲欧美一级二级三级| 国产精品高清一区二区三区| 亚洲一区二区四区| 欧美高清视频一区二区| 亚洲精品孕妇| 国产精品五区| 欧美激情视频在线免费观看 欧美视频免费一 | 一本色道**综合亚洲精品蜜桃冫 | 狠狠色狠狠色综合日日tαg| 久久精品一区二区三区不卡牛牛| 久久成人免费电影| 亚洲一级免费视频| 国产在线拍揄自揄视频不卡99 | 亚洲欧美中文日韩在线| 亚洲欧洲一区二区三区| 国产日韩av在线播放| 欧美精品一区二区三区在线看午夜| 欧美一区观看| 香蕉成人久久| 亚洲一卡久久| 一区二区久久| 一区二区三区三区在线| 久久免费精品日本久久中文字幕| 99视频超级精品| 欧美亚洲免费电影| 亚洲精品国产系列| 夜夜爽99久久国产综合精品女不卡| 加勒比av一区二区| 黄色成人精品网站| 亚洲国产成人av在线| 一区二区三区欧美在线| 亚洲天堂网在线观看| 亚洲一区二区在线看| 亚洲精品欧洲| 亚洲综合色自拍一区| 久久黄色网页| 久久久亚洲国产天美传媒修理工 | 亚洲激情国产| 亚洲精品久久| 亚洲欧美韩国| 欧美激情视频给我| 国产精品成人一区二区| 韩国视频理论视频久久| 黄色日韩在线| 中文欧美日韩| 久久精品盗摄| 亚洲国产美女久久久久| 一本不卡影院| 在线视频你懂得一区二区三区| 午夜精品久久| 欧美国产视频一区二区| 亚洲欧美日韩区| 欧美日韩综合在线| 亚洲国产高清在线| 欧美在线视频a| 欧美日韩午夜在线| 亚洲人体偷拍| 91久久午夜| 久久久久久一区二区| 99精品久久久| 欧美视频官网| aa亚洲婷婷| 亚洲欧洲精品一区二区三区波多野1战4 | 日韩小视频在线观看| 欧美**人妖| 欧美成人一区在线| 亚洲午夜电影| 亚洲一区综合| 国产三级欧美三级| 久久久夜夜夜| 欧美精品97| 亚洲欧美在线高清| 午夜精品区一区二区三| 国产一区二区三区久久 | 最新国产乱人伦偷精品免费网站| 欧美电影免费观看高清| 一本色道久久综合狠狠躁篇的优点| 亚洲日韩成人| 国产亚洲福利社区一区| 欧美黄在线观看| 国产九九精品视频| 久久久久五月天| 亚洲国产精品一区二区第一页| 亚洲精品1234| 国产精品男gay被猛男狂揉视频| 亚洲综合久久久久| 六十路精品视频| 美女诱惑一区| 久久免费黄色| 久久久精品2019中文字幕神马| 欧美成人嫩草网站| 亚洲国产免费| 国模一区二区三区| 午夜久久福利| 农村妇女精品| 亚洲国产日韩欧美|