C++ PASCAL關鍵字

VC裏面:PASCAL==CALLBACK==WINAPI==__stdcall
        _stdcall是Pascal程序的缺省調用方式,通常用於Win32  Api中,函數採用從右到左的壓棧方式,自己在退出時清空堆棧。VC將函數編譯後會在函數名前面加上下劃線前綴,在函數名後加上"@"和參數的字節數。
    _cdecl是C和C++程序的缺省調用方式。每一個調用它的函數都包含清空堆棧的代碼,所以產生的可執行文件大小會比調用_stdcall函數的大。函數採用從右到左的壓棧方式。VC將函數編譯後會在函數名前面加上下劃線前綴。是MFC缺省調用約定。 

        關於PASCAL,其實你只要弄明白一點就行了:聲明爲這種調用約定的函數都是由它本身來清棧,而__cdecl的函數都是由調用者來清棧。 
   
  實際用的時候,個人覺得兩者最大的差別在於:__cdecl的函數參數個數可以聲明爲不確定,比如printf,scanf之類,而PASCAL的函數是不可以這樣做的,如果這樣的話它不知道實參有多少個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章