C++ 为编译器的函数指定always_inline

C++ 为编译器的函数指定always_inline,c++,real-time,inline,vxworks,workbench,C++,Real Time,Inline,Vxworks,Workbench,我正在构建一个RT CPP程序,该程序使用其他CPP代码。 我不能改变重复使用的代码 我需要强制编译器内联两个方法 我的问题很明显,我不能在代码中添加总是内联的 我正在使用Windriver WorkBench 3.3为VxWorks 6.9 注意:我可以随意改变环境 有什么想法吗 编辑(解释大图): 图书馆是一个明确的案例项目 代码是许多项目(包括我的项目)使用的库 每个项目使用不同的功能集 在我的项目中,我们经常使用大约20个函数,并希望将它们内联以获得所需的性能 目前,我们“劫持”文件

我正在构建一个RT CPP程序,该程序使用其他CPP代码。
我不能改变重复使用的代码

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

我的问题很明显,我不能在代码中添加
总是内联的

我正在使用Windriver WorkBench 3.3
为VxWorks 6.9

注意:我可以随意改变环境

有什么想法吗

编辑(解释大图):

  • 图书馆是一个明确的案例项目

  • 代码是许多项目(包括我的项目)使用的库
  • 每个项目使用不同的功能集
  • 在我的项目中,我们经常使用大约20个函数,并希望将它们内联以获得所需的性能
目前,我们“劫持”文件是为了内联函数,
但这是不好的,因为我们错过了合并lib存储库中的更改的机会

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


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

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

或者,将更改提取为补丁,并作为构建过程的一部分应用补丁。这样至少你不用手工编辑了

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

我不知道在开发环境中有什么选项可以强迫它这样做,尽管您可能想调整-finline限制,并且可能会关闭optimizeforspace


但是您是否确认函数调用的开销确实起到了作用?

与其劫持文件,不如将其分支,并将内联指令添加到您的版本中?这样,您就可以定期根据最新版本重新选择,并合并到最新的库中

或者,将更改提取为补丁,并作为构建过程的一部分应用补丁。这样至少你不用手工编辑了

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

我不知道在开发环境中有什么选项可以强迫它这样做,尽管您可能想调整-finline限制,并且可能会关闭optimizeforspace


但是您是否确认函数调用的开销确实起了作用?

为什么它们必须内联?为什么您不能更改重用的代码,为什么它们必须内联?代码是许多项目使用的库,我们经常使用几个(20)函数,并希望它们内联以获得所需的性能。为什么它们必须内联?为什么您不能更改重用的代码,为什么它们必须内联?代码是许多项目使用的库,我们经常使用几个(20)函数,并希望它们内联以获得所需的性能。嗨,感谢您的精心回复。always_内联提供了本项目所需的4-5%的性能提升。由于有许多项目具有不同的内联首选项,因此设置条件always_inline标志是有问题的。补丁,是合理的。。我会考虑这个问题。我猜你可以把这些函数分组到通常被内联在一起的区域中,并且有一组条件句,但是我明白了,它确实变得更难管理。我会选择分支库,而不是补丁,但两者都可以。嗨,谢谢你精心的回复。always_内联提供了本项目所需的4-5%的性能提升。由于有许多项目具有不同的内联首选项,因此设置条件always_inline标志是有问题的。补丁,是合理的。。我会考虑这个问题。我猜你可以把这些函数分组到通常被内联在一起的区域中,并且有一组条件句,但是我明白了,它确实变得更难管理。我会使用分支库,而不是补丁,但两者都可以。