程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++ 函數調用規范

C/C++ 函數調用規范

編輯:C++入門知識

以後技術方面的筆記也都記錄在這個博客了.
今天做編譯原理作業時遇到這個問題,就整理了下。

參數的壓棧、退棧方式是由函數調用規范決定的
大部分的函數調用參數都從右向左壓入棧的,因為我們讀參時是從左向右的。
Windows常用的調用規范:
調用規范
描述
_cdecl
C/C++程序的默認調用規范。參數從右到左傳遞,由調用函數負責將參數從堆棧中移走,這利於傳遞個數可變的參數
_stdcall
這個WindowAPI函數使用的調用規范。參數從右到左傳遞,由被調用函數負責將參數從堆棧中移走。由該規范產生的代碼比_cdecl更小,但當函數有可變參數個數時,仍會使用__cdecl規范。WINAPI、CALLBACK以及APIENTRY宏都被定義為__stdcall規范
thiscall
(非關鍵字)
C++成員函數的默認調用規范,不使用個數可變的參數。除了this指針是保存在ECX寄存器裡,而不是保存在堆棧裡外,其他的都和__stdcall相同。注意:COM成員函數使用__stdcall規范

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved