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

Code Knight

Programming is so cool
隨筆 - 52, 文章 - 0, 評論 - 14, 引用 - 0
數(shù)據(jù)加載中……

[轉(zhuǎn)]__cdecl和__stdcall的區(qū)別

看到的不錯的學(xué)習(xí)文章,轉(zhuǎn)帖過來方便自己學(xué)習(xí),無意侵犯作者。只當(dāng)學(xué)習(xí)用

 

__cdecl

 

 

__stdcall

 

C C++ 程序的缺省調(diào)用規(guī)范

 

為了使用這種調(diào)用規(guī)范,需要你明確的加上 __stdcall (或 WINAPI )文字。即 return-type __stdcall function-name[(argument-list)]

 

 

調(diào)用函數(shù) (Callee) 返回,由調(diào)用方 (Caller) 調(diào)整堆棧。

 

1. 調(diào)用方的函數(shù)調(diào)用

                                         

2. 被調(diào)用函數(shù)的執(zhí)行

 

3. 被調(diào)用函數(shù)的結(jié)果返回

 

4. 調(diào)用方清除調(diào)整堆棧

                                                                

 

調(diào)用函數(shù) (Callee) 返回,由調(diào)用函數(shù) (Callee) 調(diào)整堆棧。圖示:

 

1. 調(diào)用方的函數(shù)調(diào)用

 

2. 被調(diào)用函數(shù)的執(zhí)行

 

3. 被調(diào)用函數(shù)清除調(diào)整堆棧

 

4. 被調(diào)用函數(shù)的結(jié)果返回                                                           

 

因為每個調(diào)用的地方都需要生成一段調(diào)整堆棧的代碼,所以最后生成的文件較大。

 

 

因為調(diào)整堆棧的代碼只存在在一個地方(被調(diào)用函數(shù)的代碼內(nèi)),所以最后生成的文件較小。

 

函數(shù)的參數(shù)個數(shù)可變(就像 printf 函數(shù)一樣),因為只有調(diào)用者才知道它傳給被調(diào)用函數(shù)幾個參數(shù),才能在調(diào)用結(jié)束時適當(dāng)?shù)卣{(diào)整堆棧。

 

 

函數(shù)的參數(shù)個數(shù)不能是可變的。

 

對于定義在 C 程序文件中的輸出函數(shù),函數(shù)名會保持原樣,不會被修飾。

對于定義在 C++ 程序文件中的輸出函數(shù),函數(shù)名會被修飾, MSDN Underscore character (_) is prefixed to names . 我實際測試( VC4 VC6 )下來發(fā)現(xiàn)好像不是那么簡單。

可通過在前面加上 extern C 以去除函數(shù)名修飾。也可通過 .def 文件去除函數(shù)名修飾。

 

不論是 C 程序文件中的輸出函數(shù)還是 C++ 程序文件中的輸出函數(shù),函數(shù)名都會被修飾。

對于定義在 C 程序文件中的輸出函數(shù), An underscore (_) is prefixed to the name. The name is followed by the at sign (@) followed by the number of bytes (in decimal) in the argument list.

對于定義在 C++ 程序文件中的輸出函數(shù),好像更復(fù)雜,和 __cdecl 的情況類似。

好像只能通過 .def 文件去除函數(shù)名修飾。

 

 

_beginthread 需要 __cdecl 的線程函數(shù)地址

 

 

_beginthreadex CreateThread 需要 __stdcall 的線程函數(shù)地址

 

 

兩者的參數(shù)傳遞順序都是從右向左。

為了讓 VB 可以調(diào)用,需要用 __stdcall 調(diào)用規(guī)范來定義 C/C++ 函數(shù)。請參看Microsoft KB153586 文章:How To Call C Functions That Use the _cdecl Calling Convention

當(dāng)你 LoadLibrary 一個 DLL 文件后, 把 GetProcAddress 取得的函數(shù)地址傳給上面三個線程生成函數(shù)時,請務(wù)必確認(rèn)實際定義在 DLL 文件的輸出函數(shù)符合調(diào)用規(guī)范要求。否則,編譯成 Release 版后運(yùn)行,可能會破壞堆棧,程序行為不可預(yù)測。

VC 中的相關(guān)編譯開關(guān):/Gd /Gr /Gz。另外,VC6中新增加的 /GZ 編譯開關(guān)可以幫你檢查堆棧問題。

我也是初學(xué)者,若有不對的地方、可以補(bǔ)充的地方,請指教。謝謝。

posted on 2010-03-07 18:48 Code Knight 閱讀(1425) 評論(0)  編輯 收藏 引用 所屬分類: 跬步千里


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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在线| 久久精品视频播放| 免费在线日韩av| 久久躁日日躁aaaaxxxx| 久久久99爱| 久久婷婷蜜乳一本欲蜜臀| 亚洲综合社区| 欧美一级在线视频| 久久五月天婷婷| 久久综合免费视频影院| 欧美激情影院| 欧美无砖砖区免费| 国产精品一区二区久久久久| 国产日本欧洲亚洲| 国产一区二区三区的电影 | 一本色道久久综合亚洲91| 亚洲美女91| 午夜国产一区| 美女在线一区二区| 欧美电影免费观看网站 | 禁久久精品乱码| 亚洲乱码国产乱码精品精可以看 | 国产欧美韩国高清| 美女性感视频久久久| 国产精品亚洲综合色区韩国| 国产精品丝袜xxxxxxx| 一区二区三区欧美成人| 免费看精品久久片| 欧美一区二区三区喷汁尤物| 亚洲视频狠狠| 欧美一区二区三区另类| 欧美成人精品在线观看| 欧美性天天影院| 激情综合色综合久久综合| 国语对白精品一区二区| 亚洲国产精品专区久久| 亚洲日本欧美| 亚洲性图久久| 欧美大片18| 亚洲一区二区三区国产| 麻豆精品精品国产自在97香蕉| 国产精品久久久久毛片大屁完整版 | 激情综合激情| 午夜在线一区二区| 最新国产成人在线观看| 亚洲免费观看视频| 欧美不卡激情三级在线观看| 国产麻豆午夜三级精品| 在线视频精品一区| 亚洲国产精品成人精品| 久久亚洲高清| 国产美女精品视频免费观看| 欧美国产一区在线| 久久综合中文字幕| 亚洲永久免费观看| 欧美精品自拍| 亚洲精品视频二区| 欧美肥婆bbw| 久久影音先锋| 黄色资源网久久资源365| 性欧美办公室18xxxxhd| 一本大道久久a久久精二百| 欧美激情一区二区三区四区| 亚洲毛片一区二区| 欧美激情亚洲一区| 久热精品视频在线免费观看| 精品成人在线视频| 久久午夜羞羞影院免费观看| 欧美中文字幕不卡| 日韩一级精品| 欧美日韩一区二区三区四区在线观看| 亚洲高清免费视频| 亚洲成人在线网| 欧美在线观看视频在线| 亚洲一区免费观看| 国产精品中文字幕欧美| 欧美一二三视频| 欧美专区一区二区三区| 国模套图日韩精品一区二区| 老色批av在线精品| 蜜桃精品一区二区三区| 亚洲麻豆一区| 99精品视频免费观看视频| 国产精品久久久久9999| 久久久国产亚洲精品| 久久久久五月天| 亚洲乱码一区二区| 亚洲欧美综合v| 亚洲黄色成人网| 制服丝袜激情欧洲亚洲| 国内成+人亚洲| 亚洲黄色一区| 国产精品日韩在线观看| 久久午夜羞羞影院免费观看| 欧美国产一区二区在线观看| 午夜精品久久久久久99热软件| 欧美亚洲网站| 亚洲精品乱码久久久久久久久| 一本一本a久久| 狠狠色狠狠色综合日日tαg| 亚洲国产专区| 国模叶桐国产精品一区| 99ri日韩精品视频| 国产一区二区三区视频在线观看| 欧美h视频在线| 欧美亚州韩日在线看免费版国语版| 久久精品国产欧美亚洲人人爽| 欧美成年视频| 欧美一级专区| 欧美日本一区| 免费欧美高清视频| 欧美视频在线一区| 国产欧美日韩麻豆91| 美女国产精品| 国产精品婷婷| 亚洲精品1234| 亚洲动漫精品| 国产精品99久久不卡二区| 亚洲国产天堂久久综合网| 亚洲专区在线| 亚洲一级黄色av| 欧美成人一二三| 欧美成人午夜免费视在线看片| 国产欧美短视频| 在线性视频日韩欧美| 国产精品成人午夜| 亚洲国产精品t66y| 亚洲第一色在线| 久久国产精品高清| 午夜精品福利在线观看| 欧美体内she精视频| 亚洲国产美女| 亚洲国产精品99久久久久久久久| 午夜久久久久| 久久国产88| 亚洲校园激情| av成人免费在线观看| 欧美成人免费视频| 欧美高清在线一区| 亚洲国产第一| 久久久欧美一区二区| 久久精品夜色噜噜亚洲a∨| 国产精品日韩欧美一区二区| 一区二区免费看| 亚洲伊人一本大道中文字幕| 欧美视频在线免费| 亚洲一区二区av电影| 夜夜嗨av一区二区三区免费区| 免费成人黄色| 亚洲日本aⅴ片在线观看香蕉| 亚洲日本电影| 欧美精品日韩三级| 99在线精品观看| 亚洲欧美在线一区| 国产一区二区中文字幕免费看| 欧美一级片一区| 免费久久精品视频| 最近中文字幕mv在线一区二区三区四区 | 久久久久久夜| 欧美成人午夜激情视频| 日韩写真视频在线观看| 欧美三级电影网| 亚洲欧美综合网| 免费观看一区| 亚洲精品国精品久久99热| 欧美日韩一卡| 欧美中文字幕在线观看| 亚洲国产高清视频| 亚洲欧美春色| 亚洲第一中文字幕| 欧美香蕉大胸在线视频观看| 欧美一区二区在线免费观看| 亚洲国产精品毛片| 欧美一区二区三区在线| 免费观看欧美在线视频的网站| 亚洲福利视频免费观看| 亚洲主播在线| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品视频精品| 久久综合中文字幕| 中日韩高清电影网| 欧美sm重口味系列视频在线观看| 中文成人激情娱乐网| 狠狠干综合网| 国产精品久久久一区二区| 久久久一区二区| 亚洲午夜精品视频| 亚洲高清视频中文字幕| 性久久久久久久久| 亚洲精品视频一区| 国内久久婷婷综合| 欧美午夜视频一区二区| 免费观看久久久4p| 亚洲在线观看免费| 亚洲精品一区在线观看| 欧美伦理91| 久久成人羞羞网站| 亚洲视频一二区| 欧美激情影音先锋| 久久一区二区三区av|