欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++語(yǔ)言常見函數(shù)調(diào)用約定有哪些

這篇文章將為大家詳細(xì)講解有關(guān)C++語(yǔ)言常見函數(shù)調(diào)用約定有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有西固免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、C++語(yǔ)言函數(shù)調(diào)用約定簡(jiǎn)介

C /C++開發(fā)中,程序編譯沒有問(wèn)題,但鏈接的時(shí)候報(bào)告函數(shù)不存在,或程序編譯和鏈接都沒有錯(cuò)誤,但只要調(diào)用庫(kù)中的函數(shù)就會(huì)出現(xiàn)堆棧異常等現(xiàn)象。上述現(xiàn)象出現(xiàn)在C和C++的代碼混合使用的情況下或在C++程序中使用第三方庫(kù)(非C++語(yǔ)言開發(fā))的情況下,原因是函數(shù)調(diào)用約定(Calling Convention)和函數(shù)名修飾(Decorated Name)規(guī)則導(dǎo)致的。函數(shù)調(diào)用約定決定函數(shù)參數(shù)入棧的順序,以及由調(diào)用者函數(shù)還是被調(diào)用函數(shù)負(fù)責(zé)清除棧中的參數(shù)等問(wèn)題,而函數(shù)名修飾規(guī)則決定編譯器使用何種名字修飾方式來(lái)區(qū)分不同的函數(shù),如果函數(shù)之間的調(diào)用約定不匹配或者名字修飾不匹配就會(huì)產(chǎn)生以上的問(wèn)題。
C++語(yǔ)言中的函數(shù)調(diào)用約定主要針對(duì)三個(gè)問(wèn)題:
A、函數(shù)參數(shù)的入棧順序
B、清理?xiàng)5闹黧w(負(fù)責(zé)清理?xiàng)5闹黧w:函數(shù)自身還是調(diào)用函數(shù)者)
C、函數(shù)名稱重整
調(diào)用約定主要是指函數(shù)被調(diào)用的方式,C++語(yǔ)言的函數(shù)調(diào)用約定主要有stdcall,fastcall,pascal,cdecl,thiscall等約定。
在C++中,為了允許操作符重載和函數(shù)重載,C++編譯器通常按照某種規(guī)則改寫每一個(gè)入口點(diǎn)的符號(hào)名,以便允許同一個(gè)名字(具有不同的參數(shù)類型或者是不同的作用域)有多個(gè)用法,而不會(huì)打破現(xiàn)有的基于C的鏈接器。這項(xiàng)技術(shù)通常被稱為名稱改編(Name Mangling)或者名稱修飾(Name Decoration)。C++編譯器廠商通常選擇自己的名稱修飾方案。

二、C++語(yǔ)言常見函數(shù)調(diào)用約定

1、__stdcall

__stdcall是StandardCall的縮寫,是C++的標(biāo)準(zhǔn)調(diào)用方式。__stdcall調(diào)用約定的規(guī)則如下:
A、所有參數(shù)從右到左依次入棧,如果是調(diào)用類成員的話,最后一個(gè)入棧的是this指針。
B、被調(diào)用函數(shù)自動(dòng)清理堆棧,返回值在EAX。
C、函數(shù)修飾名約定:VC將函數(shù)編譯后會(huì)在函數(shù)名前面加上下劃線前綴,在函數(shù)名后加上"@"和參數(shù)的字節(jié)數(shù)。

2、__cdecl

__cdecl是C DECLaration的縮寫(declaration,聲明),表示C語(yǔ)言默認(rèn)的函數(shù)調(diào)用方法。__cdecl調(diào)用約定規(guī)則如下:
A、所有參數(shù)從右到左依次入棧
B、所有參數(shù)由調(diào)用者清除,稱為手動(dòng)清棧。返回值在EAX中
C、函數(shù)修飾名約定:VC將函數(shù)編譯后會(huì)在函數(shù)名前面加上下劃線前綴 
由于由調(diào)用者清理?xiàng)?,所以允許可變參數(shù)函數(shù)存在,如int sprintf(char buffer,const char format,...)。

3、__fastcall

__fastcall是快速調(diào)用約定,通過(guò)寄存器來(lái)傳送參數(shù)。__fastcall調(diào)用約定的規(guī)則如下:
    A、用ECX和EDX傳送前兩個(gè)雙字(DWORD)或更小的參數(shù),剩下的參數(shù)仍舊自右向左壓棧傳送 
    B、被調(diào)用函數(shù)在返回前清理傳送參數(shù)的內(nèi)存棧 ,返回值在EAX中
    C、函數(shù)修飾名約定:VC將函數(shù)編譯后會(huì)在函數(shù)名前面加上"@"前綴,在函數(shù)名后加上"@"和參數(shù)的字節(jié)數(shù) 。

4、thiscall

thiscall是唯一一個(gè)不能明確指明的函數(shù)修飾符,thiscall只能用于C++類成員函數(shù)的調(diào)用,同時(shí)thiscall也是C++成員函數(shù)缺省的調(diào)用約定。由于成員函數(shù)調(diào)用還有一個(gè)this指針,因此必須特殊處理。
thiscall調(diào)用約定如下:
A、采用桟傳遞參數(shù),參數(shù)從右向左入棧。如果參數(shù)個(gè)數(shù)確定,this指針通過(guò)ECX傳遞給被調(diào)用者;如果參數(shù)個(gè)數(shù)不確定,this指針在所有參數(shù)壓棧后被壓入堆棧。
B、對(duì)參數(shù)個(gè)數(shù)不定的,調(diào)用者清理堆棧,否則由被調(diào)函數(shù)清理堆棧
thiscall 不是關(guān)鍵字,程序員不能使用。

5、__pascal

__pascal 語(yǔ)言的調(diào)用約定,跟 __stdcall 一樣,參數(shù)按照從右至左的方式入棧,函數(shù)自身清理堆棧,返回值在EAX中。VC 中已經(jīng)廢棄,建議使用 stdcall 代替。

關(guān)于“C++語(yǔ)言常見函數(shù)調(diào)用約定有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

本文名稱:C++語(yǔ)言常見函數(shù)調(diào)用約定有哪些
新聞來(lái)源:http://aaarwkj.com/article22/gdegcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站排名、小程序開發(fā)移動(dòng)網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
欧美午夜精品福利在线观看| 国产精品久久久久精品爆| 91欧美日韩国产在线观看| 国产精品亚洲欧美日韩在线播放 | 麻豆蜜桃精品视频在线观看| 国产精品国产三级国av麻豆| 精品视频日韩在线观看| 91精品国产综合久久香蕉麻豆| 亚洲成人精品免费观看| 国产精品国产亚洲精品看不| 91久久久久久人妻精品粉嫩| 亚洲午夜福利啪啪啪| 日本一区二区三区加勒比| 亚洲国内精品一区二区在线| 水蜜桃成人在线视频免费观看 | 欧美日韩亚洲精品瑜伽裤| 免费女性啪啪无遮挡网站| 久久精品一本久久99精品| 国产精品久久久久大屁股精品性色| 日韩成人中文字幕电影| 国产做a爰片久久91| 国产精品欧美一区二区视频| 国产精品传媒在线视频| 日韩欧美亚洲国产另类| 97在线视频观看视频在线| 999热这里只有精品视频| 亚洲天堂欧美日韩一区| 欧美艳星一区二区三区四区| av毛片天堂在线观看| 亚洲中文字幕精品一区二区三区| 久久香蕉精品国产亚洲av| 欧美国产日韩在线一区二区三区| 欧美三级在线完整版免费| 美女少妇性高潮的视频| 国产一区二区三区本色| 日韩欧美精品另类在线| 少妇高潮毛片免费看高潮| 欧美艳星一区二区三区四区| 国产在线精品91国自产拍| 福利午夜福利在线观看| 国产一区二区三区精品久|