Link 混合 C++/C 程序的时间优化 (lto)

Link-time optimization (lto) for mixed C++/C programs

我想知道是否可以有效地使用 link 时间优化 (lto) 来处理由使用 C++ 代码的 TU 调用使用 C 代码的 TU 中的某些函数的程序。那么,有没有办法将 C 函数 内联 到生成的程序中?

真正的用例是用 C++ 编写的微控制器固件。但是由于 C 语义(例如访问非活动联合成员),有些代码必须用 C 编写。

(这与手动将函数标记为内联无关)

这应该不是问题。在 GCC 和 Clang link 中,时间优化对代码的中间表示进行操作。也就是说,通过使用 -flto,您可以创建带有附加 LTO 信息 (gcc) 或 LLVM 字节码 (Clang) 的目标文件,此时源语言不再重要。

有些甚至混合了更不相关的 C++ 和 D,但仍然使用 LTO:http://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html