龙空技术网

总结一下:VS2019中对C++20语言特性的支持

漫漫开发路 832

前言:

眼前咱们对“c语言vs2019开发设置怎么选”大致比较珍视,小伙伴们都想要剖析一些“c语言vs2019开发设置怎么选”的相关知识。那么小编也在网上搜集了一些关于“c语言vs2019开发设置怎么选””的相关文章,希望小伙伴们能喜欢,你们快快来学习一下吧!

有什么新东西?

我们的开发团队一直都在努力工作,尝试在MSVC工具集中实现C++20尽可能多的语言特性,在已发布的VS2019 v16.7和VS2019 v16.8中,我们取得了比较大的进展。今天,我们就来总结一下这两个大版本中对C++20的支持情况。

今天我们将特别关注MSVC编译器(cl.exe)中实现的C++20语言特性。有关STL相关的进展消息,我们会在Microsoft STL GitHub中进行发布。

下面列出的一些特性中,有一些已经早在今年9月的举行的CppCon 2020会议中就给大家介绍过,如果你还有印象的话。

需要注意的是,如果需要使用C++ 17和C++ 20的功能,记得要使用/std:c++17和/std:c++ latest编译选项。

那咱们就开始吧,请坐稳扶好

VS 2019 v16.7中实现的C++20语言特性

VS 2019 v16.8中实现的C++20语言特性

请注意,C++20的两个大功能,即模块和协程,现已在MSVC工具集中完整实现,并由/std:c++ latest编译选项所包含。

严格模式(/permissive-)和/std:c++latest

作为模块支持的先决条件,现在在指定/std:c++latest时启用(/permissive-)。有关在(/ permissive-)模式下的代码的编译,请参考/permissive-的相关帮助文档。

对于以前在/std:c++latest下编译且需要不符合规范的编译器行为的代码,可以指定(/permissive)编译选项以关闭编译器中的严格一致性模式,并且必须放在/std:c++latest编译选项的后面。

但是,如果代码中使用到了模块,则指定(/permissive)将会导致如下的错误:

错误C1214:模块与通过[选项]请求的非标准行为冲突

这里所说的选项如下所示:

总结

C++20对我来说,会是一门全新的语言,应该还是比较有意思的。

如果大部分的老哥都开始用了,我觉得我就可以开始入场了。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《C++20 Features in Visual Studio 2019 versions 16.7 and 16.8》

标签: #c语言vs2019开发设置怎么选