C++(内联函数与宏定义)

1. 简述

内联函数是C++为提高程序运行速度所做的一项改进。应有选择地使用内联函数,如果代码执行时间很短,内联调用就可以节省非内联调用使用的大部分时间。使用内联函数特性,需要在函数前加上关键字inline。

2. 代码

#include <iostream>
#include "my_inline.h"

inline double square(double x) { return x * x; }
#define SQUARE(X) X*X

void my_inline(void)
{
    using namespace std;
    double a, b;
    double c = 13.0, d;

    cout << "***inline test***" << endl;
    a = square(5.0);
    b = square(4.5 + 7.5); //b = (4.5+7.5) * (4.5+7.5) = 144
    cout << "a = " << a << ", b = " << b << "\n";
    cout << "c = " << c;
    cout << ", c squared = " << square(c++) << "\n"; //c = 13 * 13 = 169
    cout << "now c = " << c << "\n";

    cout << "***define test***" << endl;
    c = 13.0;
    a = SQUARE(5.0);
    b = SQUARE(4.5 + 7.5); //b = 4.5 + 7.5 * 4.5 + 7.5 = 45.75
    cout << "a = " << a << ", b = " << b << "\n";
    cout << "c = " << c;
    cout << ", c SQUARE = " << SQUARE(c++) << "\n"; //c = 13 * 14 = 182
    cout << "now c = " << c << "\n";
}
输出:
***inline test***
a = 25, b = 144
c = 13, c squared = 169
now c = 14
***define test***
a = 25, b = 45.75
c = 13, c SQUARE = 182
now c = 15

3. 内联与宏

SQUARE(c++)等价c++*c++
用m代表第一个c++,n代表第二个c++
1. 执行第一个c++即m; m=13, n=13, c=13;
2. 执行第二个c++即n; m=14, n=13, c=14;
3. 执行c++*c++即m*n; m*n=183, c=15;

square(c++)
1. 执行c++; c=14
2. 执行c*c; 14 * 14 = 169; 

内联函数是通过传递参数实现的,宏定义通过文本替换实现。

注:参考C++ Primer Plus第六版P208

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lljwork2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值