方法名重整
1、为什么要进行方法名重整?
C++支持过载,允许方法名相同,形参表不同。对于同名的方法,编译器根据形参表的不同,对方法名重整为另一个方法名,也就是建立一种映射。这就是为什么要进行方法名重整。同时编译器,进行了扩展,也就是说,没有过载的方法也进行了方法名重整。
2、方法名重整带来的问题
C中没有过载的概念,也就是不允许出现同名的方法。因此,也就没有方法名重整。考虑下面的情况:在C++使用C语言库中的方法,int add(int a);C中提供了add方法的实现,C++中包含头文件,声明方法,然后使用。C代码生成的目标文件中,方法名没有重整,还是add,而C++代码方法名进行了重整,假设重整为addint,当连接时,C++试图寻找方法addint,但是却找不到,连接错误。
3、如何解决上面的问题?
问题的关键是C++对方法名进行了重整,因此就不要让C++对方法名重整。想调用C中的方法,在声明方法的时候,加上extern "C",告诉编译器不要对方法名重整。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理