带有链接时代码生成的 MSVC 能否跨 C 和 C++ 进行优化?
Posted
技术标签:
【中文标题】带有链接时代码生成的 MSVC 能否跨 C 和 C++ 进行优化?【英文标题】:Can MSVC with link-time codegen optimize across C and C++? 【发布时间】:2017-12-30 03:57:46 【问题描述】:如果link-time code generation (LTCG) 与 MSVC 一起使用,是否可以跨 C 和 C++ 语言边界优化代码?
例如,可以将 C 函数内联到 C++ 调用程序中吗?
【问题讨论】:
灵感来自***.com/a/48030595/841108 我对在几分钟内提出 4 个非常相关的问题感到不舒服。 (包括这个的完整集是:***.com/questions/48030795、***.com/questions/48030786、***.com/questions/48030706、***.com/questions/48030818)。我不禁觉得,关于 4 个编译器中的哪一个可以做到这一点的一个问题会更好。这感觉就像一个“rep grubbing”策略。也许这很苛刻,但是…… 【参考方案1】:是的,我刚刚尝试过:
int foo() return 5;
在 .c 文件中并且:
extern "C" int foo();
printf("%d\r\n", foo());
在 .cpp 中,反汇编是:
00007FF60F6F3935 mov edx,5
00007FF60F6F393A lea rcx,[string "%d" (07FF60F727FB4h)]
00007FF60F6F3941 call printf (07FF60F701E00h)
【讨论】:
以上是关于带有链接时代码生成的 MSVC 能否跨 C 和 C++ 进行优化?的主要内容,如果未能解决你的问题,请参考以下文章