宏定义define,内联函数inline,typedef

1.#define 是文本替换。

#define 是一个预处理器指令,用来创建宏定义。它可以定义符号常量、简单的函数或执行其他形式的文本替换。一般用于定义宏(macro),主要有两种用途:

1.定义常量
2.创建宏函数

无论哪种都是用于在编译时替换文本,也就是 define 实际上只是做文本的替换。

2.#inline是一个函数定义关键字

内联函数(inline function)和普通函数(regular function)之间的主要区别在于它们的实现方式及其对性能的影响。下面是一些关键的不同点:

2.内联函数(Inline Function)

inline 是一个关键字,用于提示编译器尽可能地将函数体直接嵌入到调用点处,而不是执行常规的函数调用。

  1. 定义与声明

    • 内联函数通常在函数定义前加上inline关键字,表明该函数可以被内联展开。
    • 内联函数可以在头文件中定义,这样在多个编译单元中使用时不会产生重复定义的错误。
  2. 调用机制

    • 当编译器遇到内联函数调用时,它会尝试将函数体直接嵌入到调用点的位置,而不是执行传统的函数调用机制(跳转到函数地址、传递参数、返回等)。
    • 这种替换过程称为内联展开(inlining),可以减少函数调用的开销,提高程序的执行效率。
  3. 性能影响

    • 内联函数可以减少函数调用的开销,从而提高执行速度。
    • 但是,内联函数会增加生成的目标代码大小,因为每次调用的地方都会嵌入函数体,可能导致更大的二进制文件。
  4. 适用场景

    • 内联函数适用于那些频繁调用但执行速度快的小函数。
    • 对于大型函数,内联展开可能会导致代码膨胀,反而降低性能。
  5. 最终决定权

    • 虽然开发者建议使用inline关键字,但是否真的内联是由编译器决定的。编译器可能会基于函数的大小、调用频率等因素来决定是否内联。
  • 内联函数通常用于小型、频繁调用的函数,可以减少函数调用开销,但会增加代码大小。
  • 普通函数适用于大型函数或不频繁调用的情况,虽然有一定的调用开销,但不会显著增加代码大小。

在实践中,选择使用内联函数还是普通函数取决于具体的应用场景和性能需求。现代编译器通常具有优化功能,可以在适当的时候自动内联函数,即使没有显式地使用inline关键字。

3.typedef:已存在类型的别名

typedef 是一种类型定义关键字,用于为现有类型创建新的名称(别名)。与宏定义不同,typedef 是在编译阶段处理的,有更严格的类型检查。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科协软件2018

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

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

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

打赏作者

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

抵扣说明:

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

余额充值