zl程序教程

您现在的位置是:首页 >  其它

当前栏目

宏(#define)和内联函数(inline)的理解以及区别

函数 区别 理解 以及 define 内联 inline
2023-09-14 09:07:02 时间

1.宏(#define)和内联函数(inline)的理解以及区别:

缺点:

1.宏没有类型检测,不安全

2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++))

3.使代码变长

4.宏不能进行调试

5.当预处理搜索#define定义的符号时,字符串常量并不被搜索

优点:

1.加快了代码的运行效率

2.让代码变得更加的通用

内联函数

类中的成员函数是默认的内联函数

内联函数内不准许有循环语句和开关语句

内联函数的定义必须出现在第一次调用内联函数之前

**缺点:**代码变长,占用更多内存

**优点:**1.有类型检测,更加的安全

2.内联函数是在程序运行时展开,而且是进行的是参数传递

3.编译器可以检测定义的内联函数是否满足要求,如果不满足就会当作普通函数调用(内联函数不能递归,内联函数不能太大)

对比

相同点:

两者都是可以加快程序运行效率,使代码变得更加通用

不同点:

1.内联函数的调用是传参,宏定义只是简单的文本替换

2.内联函数可以在程序运行时调用,宏定义是在程序编译进行

3.内联函数有类型检测更加的安全,宏定义没有类型检测

4.内联函数在运行时可调式,宏定义不可以

5.内联函数可以访问类的成员变量,宏不可以

6.类中的成员函数是默认的内联函数