最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年09月25日 19:54:27   投稿:jingxian  
下面小編就為大家?guī)硪黄P(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

__stdcall

__cdecl

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

實(shí)例

__stdcall

__stdcall的全稱是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的全稱是C Declaration,即C語言默認(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ù)名為_foo@8,而采用__cdecl編譯后的函數(shù)名為_foo。

實(shí)例

支持可變參數(shù)的函數(shù)必須定義為__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ī)淼年P(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解的全部內(nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~

相關(guān)文章

  • C++之vector容器的的聲明初始化和增刪改查

    C++之vector容器的的聲明初始化和增刪改查

    這篇文章主要給大家介紹了關(guān)于C++vector容器的的聲明初始化和增刪改查的相關(guān)資料,向量(Vector)是一個(gè)封裝了動(dòng)態(tài)大小數(shù)組的順序容器(Sequence Container),跟任意其它類型容器一樣,它能夠存放各種類型的對(duì)象,需要的朋友可以參考下
    2021-07-07
  • C++全面精通類與對(duì)象

    C++全面精通類與對(duì)象

    類和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語言的合稱。對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-05-05
  • c++ 移動(dòng)構(gòu)造相關(guān)總結(jié)

    c++ 移動(dòng)構(gòu)造相關(guān)總結(jié)

    這篇文章主要介紹了c++ 移動(dòng)構(gòu)造的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • C++實(shí)現(xiàn)ini文件讀寫的示例代碼

    C++實(shí)現(xiàn)ini文件讀寫的示例代碼

    這篇文章主要介紹了C++如何實(shí)現(xiàn)讀寫ini配置文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解

    C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解

    這篇文章主要介紹了C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Unix下C程序內(nèi)存泄漏檢測工具Valgrind的安裝與使用詳解

    Unix下C程序內(nèi)存泄漏檢測工具Valgrind的安裝與使用詳解

    以下是對(duì)Unix下C程序內(nèi)存泄漏檢測工具Valgrind的安裝與使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • Linux下C語言修改進(jìn)程名稱的方法

    Linux下C語言修改進(jìn)程名稱的方法

    這篇文章主要介紹了Linux下C語言修改進(jìn)程名稱的方法,涉及Linux下使用C語言操作進(jìn)程的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C++實(shí)現(xiàn)一個(gè)掃雷小游戲

    C++實(shí)現(xiàn)一個(gè)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)一個(gè)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++調(diào)用C接口的實(shí)現(xiàn)示例

    C++調(diào)用C接口的實(shí)現(xiàn)示例

    這篇文章主要介紹了C++調(diào)用C接口的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解C語言中的指針與數(shù)組的定義與使用

    詳解C語言中的指針與數(shù)組的定義與使用

    這篇文章主要介紹了C語言中的指針與數(shù)組的定義與使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

龙南县| 涿州市| 宣恩县| 寿宁县| 萝北县| 萝北县| 宁夏| 卫辉市| 河津市| 石屏县| 瑞昌市| 福贡县| 喀喇沁旗| 阿拉善右旗| 山丹县| 德江县| 调兵山市| 洱源县| 西贡区| 岳普湖县| 平陆县| 五常市| 阿荣旗| 绥滨县| 杭锦旗| 平定县| 大连市| 元谋县| 察隅县| 礼泉县| 云梦县| 鹤岗市| 万山特区| 沙洋县| 诸暨市| 宝清县| 宾川县| 电白县| 曲麻莱县| 达孜县| 东海县|