一,内联函数
1.内联函数的概念
C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10。那么C++中是否有什么解决方案来替代宏代码片段呢?C++中推荐使用内联函数代替宏代码片段,C++中使用inline关键字声明内联函数。注意:内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。
2.内联函数示例
# include<iostream>using namespace std;/* 宏定义函数方式 */# define FUN1(a,b) ((a)<(b)?(a):(b))/* 内联定义函数方式 */inline int FUN2(int a,int b)
{ return a < b ? a : b;
}int main()
{ int a = 1; int b = 3; // 宏定义方式的时候是在预编译阶段直接替换,++a<b?++a:b,因此此时返回的c是3(执行了两次++) // int c = FUN1(++a, b); // 内联函数方式是在编译阶段将函数体直接插入到调用的地方,最终生成的代码是没有函数定义的
int c = FUN2(++a, b);
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c); return 0;
}


