对于一个频繁使用的短小函数,应该使用什么来实现?有什么优缺点?

应该使用inline内联函数,即编译器将inline内联函数内的代码替换到函数被调用的地方。

优点:

  • 在内联函数被调用的地方进行代码展开,省去函数调用的时间,从而提高程序运行效率;
  • 相比于宏函数,内联函数在代码展开时,编译器会进行语法安全检查或数据类型转换,使用更加安全;

缺点:

  • 代码膨胀,产生更多的开销;
  • 如果内联函数内代码块的执行时间比调用时间长得多,那么效率的提升并没有那么大;
  • 如果修改内联函数,那么所有调用该函数的代码文件都需要重新编译;
    • 内联声明只是建议,是否内联由编译器决定,所以实际并不可控。

发表评论

后才能评论

评论(1)

  • mpweixin用户 普通 2022-03-30 4:44 下午

    inline函数将程序内的一次定义原则变为翻译单元级别的一次定义,可以有效避免栈帧构造与销毁,是否展开又编译器来决定