VC 6中使用不同调用规范的函数在符号文件里的表示方式
生活随笔
收集整理的這篇文章主要介紹了
VC 6中使用不同调用规范的函数在符号文件里的表示方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在以前老版本的C++編譯器里,編譯器會為使用不同調用約定(Calling Convention)的函數生成不同的名稱,不僅是連接程序會遵從這個命名規則,調試器也會遵守這個命名規則。因此在Visual Studio里調試使用老版本編譯器編譯出來的程序,在設置函數斷點的時候需要考慮到這個因素。
?
下面是VC里面不同調用約定的函數命名規則:
| 調用約定 | 參數壓棧順序 | 清理堆棧 | 函數命名規則 |
| stdcall | 從右向左 | 被調函數負責清理堆棧 | 函數名加前綴“_”,并且在函數名后面附加“@”和堆棧要求分配的字節數。 ? 示例:_TestMethod@4 |
| Cdecl | 從右向左 | 調用函數負責清理堆棧 | 函數名加前綴“_”。 ? 示例:_TestMethod |
| Fastcall | 前兩個參數由ECX和EDX傳遞,其他的從右向左壓棧 | 被調函數負責清理堆棧 | 函數名后附加“@”和堆棧要求分配的字節數。 ? 示例:TestMethod@4 |
| Thiscall | This指針由ECX寄存器傳遞,其他的從右向左壓棧 | 被調函數負責清理堆棧 | C++命令規則 |
?
轉載于:https://www.cnblogs.com/killmyday/archive/2011/10/19/2218136.html
總結
以上是生活随笔為你收集整理的VC 6中使用不同调用规范的函数在符号文件里的表示方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python开发的网络调试助手_Linu
- 下一篇: [转]在VC中彻底玩转Excel