欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

關(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

關(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解

__stdcall

__cdecl

兩者的相同點(diǎn)與不同點(diǎn)

實(shí)例

__stdcall

__stdcall的全稱(chēng)是standard call。是C++的標(biāo)準(zhǔn)調(diào)用方式。

函數(shù)參數(shù)的入棧順序?yàn)閺挠业阶笕霔?。函?shù)返回時(shí)使用retn x指令,其中x為調(diào)整堆棧的字節(jié)數(shù)。這種方式叫做自動(dòng)清棧。即被調(diào)用的函數(shù)的參數(shù)個(gè)數(shù)是固定的,調(diào)用者必須嚴(yán)格按照定義傳遞參數(shù),一個(gè)不多,一個(gè)不少。

__cdecl

__cdecl的全稱(chēng)是C Declaration,即C語(yǔ)言默認(rèn)的函數(shù)調(diào)用方式。

函數(shù)參數(shù)的入棧順序?yàn)閺挠业阶笕霔?。函?shù)返回時(shí)作用ret指令。由調(diào)用者手動(dòng)清棧。被調(diào)用的函數(shù)支持可變參數(shù)。調(diào)用者根據(jù)調(diào)用時(shí)傳入?yún)?shù)的個(gè)數(shù),手動(dòng)平衡堆棧。

兩者的相同點(diǎn)與不同點(diǎn)

相同點(diǎn)

參數(shù)入棧順序相同:從右到左

不同點(diǎn)

堆棧平衡方式不同:__stdcall自動(dòng)清棧,__cdecl手動(dòng)清棧。

返回指令不同:_stdcall使用retn x, __cdecl使用ret

編譯后函數(shù)的修飾名不同: 假設(shè)有函數(shù)int foo(int a, int b), 采用__stdcall編譯后的函數(shù)名為_(kāi)foo@8,而采用__cdecl編譯后的函數(shù)名為_(kāi)foo。

實(shí)例

支持可變參數(shù)的函數(shù)必須定義為_(kāi)_cdecl,如:

int printf(char *fmt, ...);

在windef.h中對(duì)__stdcall和__cdecl的定義

 #define CALLBACK   __stdcall
 #define WINAPI    __stdcall
 #define WINAPIV   __cdecl
 #define APIENTRY   WINAPI
 #define APIPRIVATE  __stdcall
 #define PASCAL    __stdcall
 #define cdecl _cdecl
 #ifndef CDECL
 #define CDECL _cdecl
 #endif

以上就是小編為大家?guī)?lái)的關(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解的全部?jī)?nèi)容了,希望對(duì)大家有所幫助,多多支持我們~

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有