内联函数的不足以及和宏的比较

内联函数的不足

  1. 设计编译器的程序设计者比大多数的程序设计者更清楚对于一个特定的函数是否合适进行内联扩展;一些情况下,对于程序员指定的某些内联函数,编译器可能更倾向于不使用内联甚至根本无法完成内联。
  2. 尽管内联函数或者非内联函数的转换易于宏的转换,但增加的维护开支还是使得它的优点显得更不突出了。
  3. 对于基于C的编译系统,内联函数的使用可能大大增加编译时间,因为每个调用该函数的地方都需要替换成函数体,代码量的增加也同时带来了潜在的编译时间的增加。

内联函数与宏的比较

  1. 宏调用并不执行类型检查,甚至连正常参数也不检查,但是函数调用却要检查。
  2. C语言的宏使用的是文本替换,可能导致无法预料的后果。
  3. 在宏中的编译错误很难发现,因为它们引用的是扩展的代码。
  4. 许多结构体使用宏或者使用不同的语法来表达很难理解。内联函数使用与普通函数相同的语言,可以随意的内联和不内联。
  5. 内联代码的调试信息通常比扩展的宏代码更有用。

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/113854738