欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数宏与内联函数

程序员文章站 2024-03-23 14:16:46
...

函数宏


函数宏可以接收参数和返回值。创建函数宏的过程比较简单,定义一个包含参数的宏,参数的名字任意。

#define ABS(my_val) ((my_val) <0) ? -(my_val) : (my_val)

宏定义中使用了?:运算符返回正数。宏将在代码中被完整替代,可能替代许多重复的代码。宏相比于函数的优势在于它的速度。在调用宏函数的过程中不存在控制权转移。函数调用不能作为宏的参数,例如以下语句不能正常工作:

ABS(cos(36))

内联函数


内联函数的函数体比较小,可以被替换。编译器性能优化器使用内联。如果编译器优化功能被禁止,内联函数无法发挥其作用。

为使GCC在不考虑优化等级的情况下内联定义函数,使用always_inline属性。

void func_test() __attribute__((always_inline))

内联函数的优势:

  • 因为它们本质上是函数,导致编译器进行参数检查
  • 多次调用无风险
  • 可以包含多行语句而不用纠缠于 \符号
  • 内联函数有它们自己的变量作用域,并且能够返回值
  • 调试相比于宏更简单
相关标签: C

上一篇: 反射学习笔记

下一篇: jdk8新特性