h文件中有个普通函数(非类成员)有实现代码,被多个h使用,编译时提示error lnk2005,加入inline 解决。
声明为内嵌函数,编译时类似宏一样直接替换至调用代码段进行编译,不会产生全局连接符号,所以不会产生lnk2005。
类的成员函数在.h中短代码的实现,编译器经常自动加入inline进行编译。
例如:Get()这样短小的函数放在h文件中
class A
{
pubic:
int Get()
{
return m_nSize;
}
private:
int m_nSize;
}
详百度inline和宏的原理。
inline由空间换取时间的提高效率方法,造成目标文件过大,适合短小调用频繁的函数,不过对现在的硬盘来说,基本差不多。
解决C++编译错误lnk2005:通过内嵌函数优化代码
本文详细解释了如何在C++中通过将普通函数声明为内嵌函数来解决编译错误lnk2005。讨论了内嵌函数和宏的基本原理,特别关注了类成员函数和普通函数的实现方式。通过实例分析了如何在头文件中编写短小的函数,并解释了这些函数在实际应用中的效率和内存占用之间的权衡。
640

被折叠的 条评论
为什么被折叠?



