C++ 内联函数 详解分析 (含代码分析)
宏
介绍内联函数之前,我们先来回忆一下宏
宏的缺点是什么?
1.
通过第一个例子可以看出宏的可读性差,在用宏定义函数时很容易误用导致得不到想要的结果,实际第二个想要的结果是18,但由于宏在预处理时完全替换,在定义宏函数时出现错误导致最后误用
2.
另一种宏定义函数解决了第一个例子的问题,但是他安全吗?同样是不正确的,当如图中调用函数时,运算符的优先级不一样,得到的结果是意料之外的。在定义宏函数时即便优化了也可能造成误用。
3.
再更改一次宏函数的定义
此时宏函数的定义才正确,但是经历这几个例子,宏定义在使用时会很容易被误用,那么宏定义最大的缺点是什么?
优点
C++有哪些技术替代宏?
内联函数
1.未使用内联函数,函数调用
2.函数体替换,未调用函数
特性
//F.h
inline void f(int i);
inline void f(int i)
{
cout << "f(int i)" << i << endl;
}
// F.h
#include <iostream>
using namespace std;
inline void f(int i);
// F.cpp
#include "F.h"
void f(int i)
{
cout << i << endl;
}
// main.cpp
#include "F.h"
int main()
{
f(10);
return 0;
}
// 链接错误:main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl
//f(int)" (?f@@YAXH@Z),该符号在函数 _main 中被引用
原文地址:https://blog.csdn.net/2301_76838975/article/details/143678543
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!