何謂callback function统抬?

何謂callback function,在google找到一篇相關(guān)的解釋
簡單的說危队,如果你使用了某個function聪建,那麼你就是『call』了一個function。如果系統(tǒng)或是函式是要求你給一個function pointer交掏,這個function pointer指到一個實際的函式(多半這個函式是你自己寫的)妆偏。然後它會在適當(dāng)?shù)臅r間呼叫此function,則此function就是所謂的 callback function盅弛。因為這個function是被『callback』了钱骂。

舉一個C的例子來說:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#define DEFAULT_BLOCK_SIZE (4096)
 
// 定義callback function的prototype。
typedef void (* CALLBACK) (int);
 
// 定義了一個名為ShowPercentage的函式挪鹏。這就是我們的callback函式见秽。
// 他的prototype必須與前面的CALLBACK宣告一致。
void ShowPercentage(int percentage)
{
    fprintf(stderr, "%dn%nn", percentage);
}
 
// 定義了一個CopyFile的函式讨盒,這個函式會將參數(shù)source所指定檔案複製到
// target參數(shù)所指定的檔案去解取。而且每複製DEFAULT_BLOCK_SIZE數(shù)量的資料
// 就會呼叫一次callback參數(shù)所指到function一次。
void CopyFile(const char *source, const char *target, CALLBACK callback)
{
    char buf[DEFAULT_BLOCK_SIZE] ;
    struct stat fs ;
    int fdSrc, fdTrg ;
    int readBytes = 0, totalReadBytes = 0, percentage = 0;
    fdSrc = open(source, O_RDONLY);
    fstat(fdSrc, &fs);
    fdTrg = open(target,O_CREAT|O_TRUNC|O_RDWR);
    // 主要複製資料的迴圈
    while((readBytes=read(fdSrc, buf, DEFAULT_BLOCK_SIZE)) > 0)
    {
        write(fdTrg, buf, readBytes);
        totalReadBytes += readBytes ;
        //複製資料後就呼叫callback函式去做顯示百分比的動作返顺。
        callback( (totalReadBytes*100)/fs.st_size);
    }
    close(fdTrg);
    close(fdSrc);
}
 
int main(void)
{
    // 這個範(fàn)例中只是利用callback來顯示目前的進度禀苦。
    // 實際上我們可以利用callback來做更多的動作。
    CopyFile("A.TXT", "B.TXT", ShowPercentage);
    return 0 ;
}

http://ithelp.ithome.com.tw/articles/10006207

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遂鹊,一起剝皮案震驚了整個濱河市振乏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秉扑,老刑警劉巖慧邮,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舟陆,居然都是意外死亡误澳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門秦躯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忆谓,“玉大人,你說我怎么就攤上這事踱承∨阏保” “怎么了米母?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毡琉。 經(jīng)常有香客問我,道長妙色,這世上最難降的妖魔是什么桅滋? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮身辨,結(jié)果婚禮上丐谋,老公的妹妹穿的比我還像新娘。我一直安慰自己煌珊,他們只是感情好号俐,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著定庵,像睡著了一般吏饿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔬浙,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天猪落,我揣著相機與錄音,去河邊找鬼畴博。 笑死笨忌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俱病。 我是一名探鬼主播官疲,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亮隙!你這毒婦竟也來了途凫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咱揍,失蹤者是張志新(化名)和其女友劉穎颖榜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤裙,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡掩完,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了硼砰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片且蓬。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖题翰,靈堂內(nèi)的尸體忽然破棺而出恶阴,到底是詐尸還是另有隱情诈胜,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布冯事,位于F島的核電站焦匈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昵仅。R本人自食惡果不足惜缓熟,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摔笤。 院中可真熱鬧够滑,春花似錦、人聲如沸吕世。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命辖。三九已至况毅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吮龄,已是汗流浹背俭茧。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漓帚,地道東北人母债。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像尝抖,于是被迫代替她去往敵國和親毡们。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 為何叫做 shell 昧辽? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系衙熔?...
    Zero___閱讀 3,150評論 3 49
  • Socket error 0 - Directly send errorSocket error 10004 - ...
    Irlans閱讀 2,607評論 0 0
  • 詩歌,我還不會搅荞。但我知道了之前寫的頂多是口水文红氯。先睡了~ 至少,我也知道自己一直碼字咕痛,一直訴說心聲痢甘。或多茉贡,或少塞栅,卻...
    無用之書閱讀 268評論 0 0
  • A_master閱讀 383評論 0 1
  • 昨夜快十二點了才睡。一天的疲累再加上心情不愉快腔丧,竟然做了好長一個惡夢:夢到一個男人偷偷從晾臺溜了進來放椰,拿著一個注射...
    海闊林韻閱讀 111評論 0 0