内联函数
#include <iostream>
using namespace std;
// 宏 define 1、定义宏常量 2、定义宏函数
#define A 10
const int a = 10;
// 宏函数,没有函数的入栈和出栈的开销
#define MAX(a,b) (((a) > (b)) ? (a):(b))
#define ADD(a, b) ((a) + (b))
int max(int a, int b)
{
return ((a) > (b) ? (a):(b));
}
// C++建议用 内联函数来代替宏函数
// 内联函数 内联编译的函数 和 宏函数很像,都是做的代码替换,在调用的地方用函数体进行替换
// 所以也没有函数的入栈和出栈开销
// 内联函数的定义: 在函数定义前加 inline 关键字
// 宏函数在预处理阶段进行处理, 内联函数在编译进行处理
// 内联是一种请求,不一定成功
// 内联函数 函数体不要太大 不要超过 5行
// 不要有任何形式的 循环语句
// 不要有很复杂的判断语句
// 内联请求一旦成功,函数体在程序运行的时候是不存在的 不能作为回掉函数来使用
// 不能对内联函数取地址
inline int mul(int a, int b)
{
return a*b;
}
int main4_1()
{
int a = 10;
int b = 20;
printf ("max = %d\n", MAX(a, b)); // printf ("max = %d\n", a > b ? a:b)
printf ("a * b = %d\n", mul(10,20)); // printf ("a * b = %d\n", a*b);
return 0;
}
执行结果:
MAX = 20
a*b = 200
请按任意键继续. . .