通过编译器指定函数的always_inline
Specify always_inline for functions by Compiler
我正在构建一个使用其他CPP代码的RT CPP程序。
我无法更改重复使用的代码!
我需要强制编译器内联几个方法。
我的问题是显然,我无法在代码中添加always_inline
并感到高兴。
我正在与Windriver WorkBench 3.3
合作VxWorks 6.9
注意:我可以随心所欲地更改环境。
有什么想法吗?
编辑(解释大局):
- 该库是一个明箱项目
- 该代码是许多项目(包括我的项目)使用的库
- 每个项目使用不同的函数集
- 在我的项目中,我们经常使用大约 20 个函数,并希望内联它们以获得所需的性能
目前,我们"劫持"文件以内联功能,
但这不好,因为我们错过了从 lib 存储库合并更改的机会。
我认为我们可以使用一个环境来指定编译器的内联决策,并避免"劫持"状态,能够合并库中的更改等。
注意:不同的项目需要内联不同的函数。
与其劫持文件,为什么不分支它,并将内联指令添加到您的版本中?这样,您可以定期根据最新版本重新添加基线,并合并到最新的库中。
或者,将更改提取为修补程序,并将修补程序作为生成过程的一部分应用。这样至少您不必手动编辑它。
或者,使always_inline成为有条件的,以便可以在编译时将其打开。这样,其他用户就不会受到影响,这应该允许您在他们所属的库中进行更改
我不知道开发环境中有任何选项可以强制它这样做,尽管您可能想要调整 -finline-limit,并且可能关闭空间优化。
但是您是否确认函数调用的开销实际上有所作为?
相关文章:
- 激励'inline'说明符的真实世界示例?
- C++中的"inline"关键字
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- 'inline'变量可以像内联函数一样内联吗?
- C++编译器不喜欢"using INLINE = extern inline"
- "inline"、"constexpr"或"noexcept"
- C++17 'inline variable' vs 'extern' 关键字继承自 C 的新功能
- C++不使用"inline"或"static"无类函数的关键字时出现重定义链接错误
- c++17 inline + thread_local vs thread_local
- Inline STD :: MUTEX在标题文件中
- 如何在Visual Studio 2019中修复"[member variable that is a vulkan struct] is uninitialized. Always initiali
- asm inline vs 2015 with call RegCreateKeyEx
- 使用代码调整删除"comparison is always false"警告
- 用std :: stringstream inline代替字符
- 符合要求的编译器应该能够优化哪些指针比较以"always false"?
- "inline operator T*() const"是什么意思?
- 如何在Visual Studio中禁用自动插入'inline'关键字?
- 将新元素推送到函数指针映射中 "inline" ?
- 什么是模板<>inline bla bla
- QPixmap,如何确保它是'always on top'