通过编译器为函数指定always_inline

时间:2013-10-29 09:30:21

标签: c++ real-time inline vxworks workbench

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

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

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

我正与Windriver WorkBench 3.3

合作VxWorks 6.9

注意:我可以随意更改环境。

有什么想法吗?

编辑(解释更大的图片):

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

目前,我们“HiJack”文件以内联函数,
但这并不好,因为我们错过了从lib存储库合并更改的机会。

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

注意:不同的项目需要内联不同的功能。

1 个答案:

答案 0 :(得分:1)

不是劫持文件,为什么不分支它,并将内联指令添加到您的版本?这样,您可以定期针对最新版本重新定位,并合并到最新的库中。

另外,将更改作为补丁提取,并将补丁作为构建过程的一部分应用。这样至少你不必手动编辑它。

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

我不知道dev环境中的任何选项强制它,尽管你可能想调整-finline-limit,并且可能关闭了optimize-for-space。

但是你确认函数调用的开销实际上有所不同吗?