C++:内联函数与宏函数
程序员文章站
2024-03-21 12:40:40
...
- 为什么会有内联函数:
- ①宏函数必选在填括号才能提高正确性
- ②宏函数填了括号也不一定达到理想效果
例子:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#define compare(a,b) (((a)>(b))?(a):(b))
int main()
{
int a = 10;
int b = 5;
int ret=compare(++a, b);//本应该是11,但是结果是12 因为compare(++a,b), 先比较++a与b的值,然后再返回++a,一共执行++a2次,所以结果为12
cout << "a的值" << a << endl;
system("pause");
return EXIT_SUCCESS;
}
- 内联函数的好处:
- 弥补了宏函数的缺陷
- 以空间换时间,不会产生函数调用的时间浪费。
- 内联函数的创建:
- 在函数的声明和定义前面加上inline关键字
- 类成员函数默认都是内联函数
- 注意:
- 内联函数的声明和定义都必须加上inline关键字,否则,编译器把它当成普通函数
- 在编程中,不需要特意把每个函数都写成内联函数,因为好的编译器会自动把能作为内联函数的函数转换成内联函数
- 在编程中,把函数写成内联函数只是向编译器建议,编译器也有可能不会采用建议