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

mEjY的自由世界

眼界決定世界

WINAPI和CALLBACK這兩個(gè)宏【zt】

WINAPI和CALLBACK這兩個(gè)宏

WINAPI和CALLBACK這兩個(gè)宏有什么區(qū)別呢?

_stdcall _cdecl _pascal _fastcall這些關(guān)鍵字是什么意思,有什么區(qū)別呢?

首先看MSDN里給出的解釋,不過(guò)有些語(yǔ)焉不詳哦

WINAPI 
·Use in place of FAR PASCAL in API declarations. If you are writing a DLL with exported API entry points, you can use this for your own APIs. 

CALLBACK
·Use in place of FAR PASCAL in application callback routines such as window procedures and dialog procedures. 

再看看到底這兩個(gè)宏的內(nèi)容是什么吧

VC:WINDEF.h
#define CALLBACK    PASCAL //=_pascal,VC已經(jīng)不支持直接使用_pascal了
#define WINAPI      CDECL //=_cdecl

BCB:windef.h
#define CALLBACK    __stdcall
#define WINAPI      __stdcall

引出了cdecl stdcall等一些可能很少見(jiàn)的關(guān)鍵字

那么cdecl、pascal、stdcall、fastcall等修飾符號(hào)到底什么意思呢?
非常簡(jiǎn)單,就是關(guān)于堆棧的一些說(shuō)明,首先是函數(shù)參數(shù)壓棧順序,其次是
壓入堆棧的內(nèi)容由誰(shuí)來(lái)清除,調(diào)用者還是函數(shù)自己?
這些開(kāi)關(guān)用來(lái)告訴編譯器產(chǎn)生什么樣的匯編代碼。

下面把區(qū)別列表如下:

Directive Parameter order  Clean-up Passes parameters in registers?
 register  Left-to-right   Routine   Yes
 pascal   Left-to-right   Routine   No
 cdecl   Right-to-left   Caller    No
 stdcall   Right-to-left   Routine   No
 safecall  Right-to-left   Routine   No

簡(jiǎn)單說(shuō)明:

__cdecl是C/C++和MFC程序默認(rèn)使用的調(diào)用約定,也可以在函數(shù)聲明時(shí)加上__cdecl關(guān)鍵字來(lái)手工指定。采用__cdecl約定時(shí),函數(shù)參 數(shù)按照從右到左的順序入棧,并且由調(diào)用函數(shù)者把參數(shù)彈出棧以清理堆棧。因此,實(shí)現(xiàn)可變參數(shù)的函數(shù)只能使用該調(diào)用約定。由于每一個(gè)使用__cdecl約定的 函數(shù)都要包含清理堆棧的代碼,所以產(chǎn)生的可執(zhí)行文件大小會(huì)比較大。__cdecl可以寫(xiě)成_cdecl。
        __stdcall調(diào)用約定用于調(diào)用Win32 API函數(shù)。采用__stdcal約定時(shí),函數(shù)參數(shù)按照從右到左的順序入棧,被調(diào)用的函 數(shù)在返回前清理傳送參數(shù)的棧,函數(shù)參數(shù)個(gè)數(shù)固定。由于函數(shù)體本身知道傳進(jìn)來(lái)的參數(shù)個(gè)數(shù),因此被調(diào)用的函數(shù)可以在返回前用一條ret n指令直接清理傳遞參 數(shù)的堆棧。__stdcall可以寫(xiě)成_stdcall。
        __fastcall約定用于對(duì)性能要求非常高的場(chǎng)合。__fastcall約定將函數(shù)的從左邊開(kāi)始的兩個(gè)大小不大于4個(gè)字節(jié) (DWORD)的參數(shù)分別放在ECX和EDX寄存器,其余的參數(shù)仍舊自右向左壓棧傳送,被調(diào)用的函數(shù)在返回前清理傳送參數(shù)的堆棧。__fastcall可 以寫(xiě)成_fastcall。 


·特別說(shuō)明
1. 在默認(rèn)情況下,采用__cdecl方式,因此可以省略.
2. WINAPI一般用于修飾動(dòng)態(tài)鏈接庫(kù)中導(dǎo)出函數(shù)
3. CALLBACK僅用于修飾回調(diào)函數(shù)
4. 你可能已經(jīng)發(fā)現(xiàn),VC下和BCB下對(duì)WINAPI的定義不同,那么你至少理解了
   為什么不能直接從BCB下調(diào)用VC的dll的一個(gè)原因了。

posted on 2008-02-20 10:51 mEjY 閱讀(588) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆檔案

文章分類

文章檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品永久免费| 欧美一区二区免费视频| 亚洲在线观看视频网站| 一区二区激情| 亚洲在线黄色| 久久久国产成人精品| 麻豆精品一区二区av白丝在线| 久久成人精品| 欧美国产成人在线| 99伊人成综合| 美女久久一区| 欧美精品在线播放| 欧美日韩视频一区二区| 国产精自产拍久久久久久蜜| 一色屋精品亚洲香蕉网站| 亚洲人被黑人高潮完整版| 亚洲视频在线观看视频| 久久成人羞羞网站| 欧美黄色网络| 亚洲女优在线| 麻豆国产精品一区二区三区| 欧美激情成人在线视频| 国产精品欧美日韩一区二区| 黄色成人精品网站| 中文久久精品| 麻豆亚洲精品| 亚洲午夜电影网| 美女久久网站| 国产免费亚洲高清| 亚洲日本无吗高清不卡| 久久精品国产69国产精品亚洲| 欧美激情亚洲另类| 欧美在线播放| 欧美视频一区在线观看| 在线免费观看日韩欧美| 香蕉国产精品偷在线观看不卡 | 亚洲无线一线二线三线区别av| 欧美一区二区久久久| 亚洲欧洲日韩综合二区| 欧美在线观看www| 欧美日韩国产在线看| 在线免费一区三区| 久久精品麻豆| 亚洲一区免费在线观看| 欧美连裤袜在线视频| 亚洲福利视频一区二区| 久久久免费av| 久久福利影视| 国产亚洲精品福利| 欧美一区二区三区精品| 亚洲视频播放| 欧美私人网站| 亚洲一区二区3| 在线视频中文亚洲| 欧美性大战久久久久| 一区二区三区鲁丝不卡| 日韩视频一区二区| 欧美日精品一区视频| 亚洲香蕉网站| 一区二区三区日韩在线观看| 欧美日韩亚洲一区在线观看| av72成人在线| 99成人精品| 国产精品你懂的在线欣赏| 亚洲伊人网站| 亚洲小说欧美另类社区| 国产精品视频999| 久久国产综合精品| 欧美一级理论片| 亚洲免费影视| 久久九九精品99国产精品| 亚洲激情图片小说视频| 欧美**人妖| 亚洲人成在线播放网站岛国| 亚洲电影免费观看高清| 欧美激情第1页| 亚洲无线视频| 一区二区三区久久久| 国产精品视频午夜| 久久久久国内| 美国成人毛片| 国产精品99久久久久久久久久久久| 亚洲人成小说网站色在线| 欧美三级电影网| 欧美影院在线| 久久在线播放| 一区二区三区视频在线 | 久热精品在线| 一本一道久久综合狠狠老精东影业| 日韩午夜一区| 国产欧美亚洲精品| 欧美成人四级电影| 欧美亚一区二区| 老司机久久99久久精品播放免费| 欧美成人精品在线| 欧美在线观看日本一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频网在线直播| 久久精品免费电影| 亚洲午夜三级在线| 久久久久久久久久久一区| 亚洲最新在线| 久久久久国产成人精品亚洲午夜| 亚洲精一区二区三区| 午夜欧美精品| 亚洲视频成人| 久久一区精品| 久久精品国产99国产精品澳门| 欧美a级片一区| 久久高清免费观看| 欧美日韩日日夜夜| 欧美成人网在线| 国产在线日韩| 亚洲午夜精品久久久久久app| 亚洲电影天堂av| 新狼窝色av性久久久久久| 亚洲婷婷在线| 欧美经典一区二区三区| 免费不卡亚洲欧美| 国产婷婷精品| 亚洲摸下面视频| 亚洲欧美国产高清| 欧美日韩国产影片| 亚洲激情第一页| 亚洲精品欧美专区| 欧美成人国产| 亚洲大片精品永久免费| 激情文学综合丁香| 亚洲欧美视频在线观看视频| 欧美韩日一区二区三区| 欧美成人精品三级在线观看| 国产一区二区三区成人欧美日韩在线观看| 亚洲日本视频| 亚洲最新视频在线| 欧美区亚洲区| 亚洲人成在线播放| 亚洲美女毛片| 欧美日韩99| 一区二区三区日韩| 午夜国产精品视频免费体验区| 欧美日韩亚洲激情| 一本久道久久综合中文字幕| 亚洲私人影院| 国产精品久久久久久久久| 亚洲天堂成人| 久久久久网址| 亚洲成人在线免费| 欧美福利网址| 99这里有精品| 性久久久久久久久久久久| 国产午夜精品福利| 久久久久久久综合日本| 欧美成人午夜77777| 亚洲精品综合精品自拍| 欧美日韩三区四区| 亚洲一区二区三区乱码aⅴ蜜桃女| 香蕉久久一区二区不卡无毒影院 | 亚洲国产中文字幕在线观看| 欧美成人精品h版在线观看| 亚洲精品国产视频| 亚洲一区二区三区四区中文| 国产精品日韩一区二区| 久久精品伊人| 最近中文字幕日韩精品| 亚洲在线成人| 影音先锋亚洲精品| 欧美调教vk| 久久久中精品2020中文| 亚洲精品一区久久久久久| 欧美一区二区视频观看视频| ●精品国产综合乱码久久久久| 欧美日韩成人一区二区| 欧美在线播放高清精品| 最新国产成人在线观看| 欧美一级二区| 亚洲精品在线一区二区| 国产欧美一区二区三区视频| 久久综合中文色婷婷| 亚洲网站啪啪| 亚洲国产高潮在线观看| 久久国产精品99国产| 夜夜狂射影院欧美极品| 黄色欧美成人| 国产精品区一区二区三| 欧美成人精品在线播放| 午夜影院日韩| 亚洲视频精选在线| 亚洲国产一区二区视频 | 一区二区三区国产精华| 麻豆精品视频在线观看| 欧美亚洲日本网站| 一本色道**综合亚洲精品蜜桃冫| 黄色一区二区在线| 国产欧美在线| 国产精品久久久久国产a级| 欧美电影在线播放| 亚洲精品美女在线| 免费观看日韩| 久久精品一区蜜桃臀影院| 亚洲一区二区视频在线|