C语言函数入栈顺序与可变参数函数
2010-06-24 21:17
183 查看
C/C++函数调用约定与函数名称修饰规则探讨 使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有 问题,但是链接的时候总是报告函数不存在(经典的LNK 2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或 在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函数调用约定(Calling Convention)和函数名修饰(Decorated Name)规则惹的祸。函数调用方式决定了函数参数入栈的顺序,是由调用者函数还是被调用函数负责清除栈中的参数等问题,而函数名修饰规则决定了编译器使 用何种名字修饰方式来区分不同的函数,如果函数之间的调用约定不匹配或者名字修饰不匹配就会产生以上的问题。本文分别对C和C++这两种编程语言的函数调 用约定和函数名修饰规则进行详细的解释,比较了它们的异同之处,并举例说明了以上问题出现的原因。函数调用约定(Calling Convention) 函数调用约定
相关文章推荐
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C语言函数入栈顺序与可变参数函数
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- [C/C++]函数参数的入栈顺序与可变参数的实现
- 函数参数的入栈顺序与可变参数的实现
- VC++函数参数的入栈顺序与可变参数的实现
- 4-8-实参与形参、函数声明与定义、函数读取顺序、可变参数的函数、函数生存周期
- linux系统下printf函数可变参数的计算顺序
- [C/C++]函数参数的入栈顺序与可变…
- [C/C++]函数参数的入栈顺序与可变参数的实现
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- [C/C++]函数参数的入栈顺序与可变参数的实现
- [C/C++]函数参数的入栈顺序与可变…
- [C/C++]函数参数的入栈顺序与可变参数的实现
- C语言函数调用时参数压栈的顺序以及函数指针的作用