明确函数调用约定和函数名称修饰规则探讨[文].pdfVIP

  • 2
  • 0
  • 约9.64千字
  • 约 10页
  • 2020-06-12 发布于福建
  • 举报

明确函数调用约定和函数名称修饰规则探讨[文].pdf

使用 C/C++ 语言开发软件的程序员经常碰到这样的问题:有时候是程序编 译没有问题,但是链接的时候总是报告函数不存在 (经典的 LNK 2001 错误), 有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆 栈异常。这些现象通常是出现在 C 和 C++ 的代码混合使用的情况下或在 C++ 程序中使用第三方的库的情况下(不是用 C++ 语言开发的) ,其实这都 是函数调用约定 (Calling Convention )和函数名修饰 (Decorated Name ) 规则惹的祸。函数调用方式决定了函数参数入栈的顺序,是由调用者函数还 是被调用函数负责清除栈中的参数等问题,而函数名修饰规则决定了编译器 使用何种名字修饰方式来区分不同的函数,如果函数之间的调用约定不匹配 或者名字修饰不匹配就会产生以上的问题。本文分别对 C 和 C++ 这两种编 程语言的函数调用约定和函数名修饰规则进行详细的解释,比较了它们的异 同之处,并举例说明了以上问题出现的原因。 函数

文档评论(0)

1亿VIP精品文档

相关文档