VC 6中使用不同调用规范的函数在符号文件里的表示方式

简介:

在以前老版本的C++编译器里,编译器会为使用不同调用约定(Calling Convention)的函数生成不同的名称,不仅是连接程序会遵从这个命名规则,调试器也会遵守这个命名规则。因此在Visual Studio里调试使用老版本编译器编译出来的程序,在设置函数断点的时候需要考虑到这个因素。

 

下面是VC里面不同调用约定的函数命名规则:

调用约定

参数压栈顺序

清理堆栈

函数命名规则

stdcall

从右向左

被调函数负责清理堆栈

函数名加前缀“_”,并且在函数名后面附加“@”和堆栈要求分配的字节数。

 

示例:_TestMethod@4

Cdecl

从右向左

调用函数负责清理堆栈

函数名加前缀“_”。

 

示例:_TestMethod

Fastcall

前两个参数由ECXEDX传递,其他的从右向左压栈

被调函数负责清理堆栈

函数名后附加“@”和堆栈要求分配的字节数。

 

示例:TestMethod@4

Thiscall

This指针由ECX寄存器传递,其他的从右向左压栈

被调函数负责清理堆栈

C++命令规则

 

标签:  调试Debug
本文转自 donjuan 博客园博客,原文链接:http://www.cnblogs.com/killmyday/archive/2011/10/19/2218136.html    ,如需转载请自行联系原作者
相关文章
|
6月前
|
存储 算法 程序员
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
315 3
无参函数和有参函数的定义使用方法及其调用
无参函数和有参函数的定义使用方法及其调用
422 0
|
5月前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
49 0
|
4月前
|
开发框架 前端开发 JavaScript
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
|
5月前
|
Windows
VBA的直接或间接调用的语法格式
VBA|过程或方法内部的直接或间接调用与相对怪异的语法格式
VC 不同版本代码注入的区别
VC 不同版本代码注入的区别
62 0
VC通过函数名调用DLL的标准范例
VC通过函数名调用DLL的标准范例
69 0
|
C++ 索引
VC通过函数索引调用DLL范例
VC通过函数索引调用DLL范例
62 0
|
C#
C#调用dll代码范例
C#调用dll代码范例
117 0