欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于函數(shù)調用方式__stdcall和__cdecl詳解

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

關于函數(shù)調用方式__stdcall和__cdecl詳解

__stdcall

__cdecl

兩者的相同點與不同點

實例

__stdcall

__stdcall的全稱是standard call。是C++的標準調用方式。

函數(shù)參數(shù)的入棧順序為從右到左入棧。函數(shù)返回時使用retn x指令,其中x為調整堆棧的字節(jié)數(shù)。這種方式叫做自動清棧。即被調用的函數(shù)的參數(shù)個數(shù)是固定的,調用者必須嚴格按照定義傳遞參數(shù),一個不多,一個不少。

__cdecl

__cdecl的全稱是C Declaration,即C語言默認的函數(shù)調用方式。

函數(shù)參數(shù)的入棧順序為從右到左入棧。函數(shù)返回時作用ret指令。由調用者手動清棧。被調用的函數(shù)支持可變參數(shù)。調用者根據(jù)調用時傳入?yún)?shù)的個數(shù),手動平衡堆棧。

兩者的相同點與不同點

相同點

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

不同點

堆棧平衡方式不同:__stdcall自動清棧,__cdecl手動清棧。

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

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

實例

支持可變參數(shù)的函數(shù)必須定義為__cdecl,如:

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

在windef.h中對__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于函數(shù)調用方式__stdcall和__cdecl詳解的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~

相關文章

  • error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法,需要的朋友可以參考一下
    2013-05-05
  • C++11學習之右值引用和移動語義詳解

    C++11學習之右值引用和移動語義詳解

    c++11中引用了右值引用和移動語義,可以避免無謂的復制,提高了程序性能。這篇文章將通過一些示例和大家聊聊右值引用和移動語義的使用,感興趣的可以了解一下
    2023-02-02
  • C語言實現(xiàn)停車場管理系統(tǒng)

    C語言實現(xiàn)停車場管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)停車場管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++使用TinyXML解析XML

    C++使用TinyXML解析XML

    本文詳細講解了C++使用TinyXML解析XML的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C++有符號和無符號之間的轉換問題

    C++有符號和無符號之間的轉換問題

    在開發(fā)中經(jīng)常會遇到有符號和無符號之間的轉換問題,如果不清楚問題根源,很難解決bug,今天小編通過本文給大家分享c++有符號無符號轉換問題,需要的朋友參考下
    2021-07-07
  • 使用鉤子如何鎖定鍵盤的方法分享

    使用鉤子如何鎖定鍵盤的方法分享

    鎖鍵盤一般用鉤子實現(xiàn),所以難度稍大,不過下面這個程序當簡單,而且連鉤子所需要DLL也省了
    2014-01-01
  • opengl實現(xiàn)直線掃描算法和區(qū)域填充算法

    opengl實現(xiàn)直線掃描算法和區(qū)域填充算法

    這篇文章主要為大家詳細介紹了opengl實現(xiàn)直線掃描算法和區(qū)域填充算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++字符串拼接效率對比(+=、append、stringstream、sprintf)

    C++字符串拼接效率對比(+=、append、stringstream、sprintf)

    這篇文章主要介紹了C++字符串拼接效率對比(+=、append、stringstream、sprintf),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 一文學會c語言結構體的定義和使用方法

    一文學會c語言結構體的定義和使用方法

    數(shù)組是一種數(shù)據(jù)形式,其特點是多個相同類型的元素集合起來,結構體是另一種重要的數(shù)據(jù)形式,特點是將不同類型的成員組合起來,下面這篇文章主要給大家介紹了關于c語言結構體的定義和使用方法的相關資料,需要的朋友可以參考下
    2022-11-11
  • Qt5.9實現(xiàn)簡單的多線程實例(類QThread)

    Qt5.9實現(xiàn)簡單的多線程實例(類QThread)

    Qt開啟多線程,主要用到類QThread。用一個類繼承QThread,然后重新改寫虛函數(shù)run()。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09

最新評論