djh*_*son 2 c++ module c++20 visual-studio-2019
当尝试使用 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>等),得到相同的结果。
小智 7
有 3 个选项可用于在 Visual Studio 中使用标准库模块: 在项目属性 C/C++ 中:
我正在使用 Microsoft Visual Studio Community 2019 版本 16.11.8