美文网首页野生技术宅协会
Visual Studio 2022 C++20标准新特性模块尝

Visual Studio 2022 C++20标准新特性模块尝

作者: 乐百川 | 来源:发表于2022-01-03 06:34 被阅读0次

长久以来,C++一直有一个问题那就是编译复杂。所以现在最新的C++20标准就新增了模块特性,试图改善这个状况。不过因为各大编译器以及工具链对新标准的支持还不够完善,所以目前我们只能简单尝鲜一下。想要正式在项目中应用这个特性,还需要很长的时间。

这里我用Visual Studio 2022来向大家介绍一下。首先在Visual Studio Installer中安装C++桌面开发的工作负载,同时在单个组件里找到对应的C++模块库文件(如下图所示)。

C++模块库文件

然后随便新建一个C++控制台程序,随便编译一下,这个时候我们还是使用默认的头文件形式来导入标准库。

#include <iostream>

int main()
{
    std::cout << "Hello world!\n";
}

然后打开项目属性对话框,找到配置属性->C/C++->语言,将C++语言标准改为最新的,同时将启用实验性的C++标准库模块改为是。

项目属性配置

这样一来我们就可以在项目中使用模块了。最简单的办法就是先试试标准库模块,将包含头文件的声明改为导入语句再编译试试。

import std.core;

int main()
{
    std::cout << "Hello world!\n";
}

当然,我们也可以编写自己的模块。编写模块的时候,不能用常规的cpp作为文件扩展名,而要使用ixx作为扩展名,而且这时候我们的源代码也有了一个新名字,叫做模块接口文件。这里我新建一个hello.ixx文件作为模块接口文件。

export module hello;

import std.core;

export void hello(std::string name)
{
    std::cout << "Hello, " + name << std::endl;
}

然后,我们就可以在程序中导入自己的模块了。

import hello;
import std.core;

using namespace std;

int main()
{
    hello("techstay");
    cout << "你好,世界!" << endl;
}

可惜的是目前的工具链支持还不够完善,甚至连ReSharper都还没有支持模块特性,在运行上面的例子时候代码分析还提示了一些错误。希望一两年之内能够用上这个新特性吧。

相关文章

网友评论

    本文标题:Visual Studio 2022 C++20标准新特性模块尝

    本文链接:https://www.haomeiwen.com/subject/dytxcrtx.html