通过编译器指定函数的always_inline

Specify always_inline for functions by Compiler

本文关键字:always inline 函数 编译器      更新时间:2023-10-16

我正在构建一个使用其他CPP代码的RT CPP程序。
我无法更改重复使用的代码!

我需要强制编译器内联几个方法。

我的问题是显然,我无法在代码中添加always_inline并感到高兴。

我正在与Windriver WorkBench 3.3合作VxWorks 6.9

注意:我可以随心所欲地更改环境。

有什么想法吗?

编辑(解释大局):

  • 该库是一个明箱项目
  • 该代码是许多项目(包括我的项目)使用的库
  • 每个项目使用不同的函数集
  • 在我的项目中,我们经常使用大约 20 个函数,并希望内联它们以获得所需的性能

目前,我们"劫持"文件以内联功能,
但这不好,因为我们错过了从 lib 存储库合并更改的机会。

我认为我们可以使用一个环境来指定编译器的内联决策,并避免"劫持"状态,能够合并库中的更改等。

注意:不同的项目需要内联不同的函数。

与其劫持文件,为什么不分支它,并将内联指令添加到您的版本中?这样,您可以定期根据最新版本重新添加基线,并合并到最新的库中。

或者,将

更改提取为修补程序,并将修补程序作为生成过程的一部分应用。这样至少您不必手动编辑它。

或者,使always_inline成为有条件的,以便可以在编译时将其打开。这样,其他用户就不会受到影响,这应该允许您在他们所属的库中进行更改

我不知道开发环境中有任何选项可以强制它这样做,尽管您可能想要调整 -finline-limit,并且可能关闭空间优化。

但是您是否确认函数调用的开销实际上有所作为?