我们可以将 c++ 标准编译与 MSVC 混合使用吗?

Posted

技术标签:

【中文标题】我们可以将 c++ 标准编译与 MSVC 混合使用吗?【英文标题】:Can we mix c++ standard compile with MSVC? 【发布时间】:2021-05-19 07:10:54 【问题描述】:

我认为 gcc 正在尝试支持this。

但是,我找不到任何有关 MSVC 的参考资料。

我的代码库目前基于 c++17 构建。我想在 c++20 中使用新的协程功能,但现在不想迁移所有代码。目标是构建一些支持协程的组件。

【问题讨论】:

这是一个有趣的问题,但最好编辑并提供您的真实用例。 我的代码库目前基于 c++17 构建。我想在 c++20 中使用新的协程功能,但现在不想迁移所有代码。目标是构建一些支持协程的组件。 您可以使用edit将您的评论添加到原始帖子中。 MSVC 在 2015 年、2017 年和 2019 年之间与 ABI 兼容。这些版本之间没有 ABI 更改。因此,我不明白为什么不能这样做。 docs.microsoft.com/en-us/cpp/porting/… 【参考方案1】:

MSVC binary compatibility 的规则适用。对象在版本之间是链接兼容的(只要您不使用链接时代码生成或整个程序优化)。由于该页面没有说明除了/LTCG/GL 之外的任何其他编译器开关都会破坏这个承诺,/std: 也不会这样做。

【讨论】:

以上是关于我们可以将 c++ 标准编译与 MSVC 混合使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

c++混合使用不同标准编译潜在的问题

不同编译器中的 C++ 标准库实现

联合作为模板化基类的部分特化

如何使用 system() 函数 (MSVC) 编译 c++ 代码?

如何将 jpg 文件加载到 CBitmap (visual c++ 6.0) 中?

使用 MSVC C++ 编译器创建动态大小的数组