C及C++之前一直是通过头文件的方式引入定义于其他文件中的标示符,而引入头文件,从本质上说相当于预处理器将头文件的内容拷贝了一份放入当前文件中,这样做有以下几个缺点:
1.由于拷贝了一份代码,而不是只包含要使用的部分,编译起来比较低效
2.如果在头文件A中引入另一个头文件B,那么其他引入头文件A的地方则自动包含了头文件B
3.引入不同头文件中定义的相同标示符时会产生冲突,无法做到隔离
C++20中引入了模块的概念,可以用更好的方式引入标示符。
1.导出模块
可以通过在cpp文件中export module 模块名;的方式导出一个模块
//ex_test.cpp
module;
#include <iostream>
export module ex_test;
using namespace std;
export void test1()
{
cout<<"this is test1"<<endl;
}
export{
void test2()
{
cout<<"this is test2"<<endl;
}
};
导出模块中的符
C++20引入了模块的概念以解决头文件引入的问题,如编译效率低、头文件依赖和命名冲突。通过export module导出模块,并用import导入,可以更高效、隔离地管理代码。编译时需要指定-std=c++20 -fmodules-ts选项。
订阅专栏 解锁全文

7487

被折叠的 条评论
为什么被折叠?



