小编djh*_*son的帖子

Visual Studio 2019:如果不首先将其导入到单独的模块 (ixx) 中,则无法在 cpp 文件中“导入”C++ 标准库声明

当尝试使用 C++20import命令加载 .cpp 文件中的标准库声明时,会返回编译器错误,指出找不到“标头单元”。

例如,在一个文件中,比如说Main.cpp,我把

import <iostream>;

int main()
{

    return 0;
}

Run Code Online (Sandbox Code Playgroud)

编译器错误结果如下:

error C7612: could not find header unit for 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\iostream'

但是,如果我向项目添加一个模块,例如Test.ixx,如下所示

export module Test;
import <iostream>;
Run Code Online (Sandbox Code Playgroud)

然后Test在Main.cpp中导入该模块:

import Test;
import <iostream>;

int main()
{

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么,没问题。代码构建得很好。

这只是 C++20 编译器实现仍在研究中的一个例子吗?到目前为止,我的印象是标准库头应该无条件“导入”——即不需要import在其他地方的模块中——但我最近才开始尝试 C++20 中的新功能。

注意:我也尝试过使用其他标准库声明(例如<vector>等),得到相同的结果。

c++ module c++20 visual-studio-2019

2
推荐指数
1
解决办法
4756
查看次数

标签 统计

c++ ×1

c++20 ×1

module ×1

visual-studio-2019 ×1