【C++ 20进阶(1):模块导入 import】

【C++ 20进阶(1):模块导入 import】

原文:https://blog.csdn.net/weixin_44259356/article/details/143270205

引言

本篇文章为系列文章将着重介绍C++20新特性,一是希望可以和大家交流分享,二是也便于自己巩固学习。

1,import

C++ 20引入了对模块的支持,用来替代此前头文件机制,如:

cpp 复制代码
import <iostream>

此前我们导入导入头文件,纯C为:

c 复制代码
#include <stdio.h>

C++ 中为:

cpp 复制代码
#include <iostream>

C++中导入C标准库为:

cpp 复制代码
#include <cstdio>

模块机制有何好处呢?最大的好处便是可以大大提升编译效率,原来通过引入头文件,预编译过程中将加载此头文件包含的全部内容,include一次便加载一次,哪怕文件相同,而现在只需加载一遍export所定义的模块,将极大地提升预编译速度。

2,export

那么如何定义自己的公共模块呢?我们只需要在一开始声明此模块为export就行,如:

cpp 复制代码
export module moduleA;

那么如何导出自己想要导出的内容呢?也是导出内容前加export就行,如结构体:

cpp 复制代码
export struct StructA{
    int xx;
};

其他类似,如函数:

cpp 复制代码
export void f();

后续我将继续分享C++20一些新的有趣的知识点,感兴趣可以点个关注或者私聊,谢谢!

相关推荐
郝学胜-神的一滴1 天前
C++20 高级编程 004:从初始化、内存到const系列关键字
开发语言·算法·编程·软件构建·c++20
可爱系程序猿1 天前
msvcp120.dll 加载失败排查:VC++ 2013、进程架构与插件私有目录如何对应
程序人生·电脑·c++20
ShineWinsu2 天前
对于C++:C++20中线程、初始化、Lambda与内存视图等特性的解析
c++·c++20
可爱系程序猿2 天前
mfc100.dll 加载失败排查:旧版 VC++ 2010 程序、位数与插件目录如何核对
程序人生·电脑·c++20
ShineWinsu5 天前
对于 C++:C++20中Concept(概念) 与 Coroutine(协程)的解析
linux·开发语言·网络·c++·c++20·epoll
Lzg_na12 天前
C++20 Concept 核心概念、语法详解与三大工程实践场景
c++20
Billy1213812 天前
Day14-C++20 Modules:模块声明与导入、模块分区、与头文件对比、迁移策略
c++20·c++进阶学习
程序猿编码12 天前
不用GPU,不用多线程,我用C++20手写了一个Gemma 3推理引擎
pytorch·语言模型·大模型·c++20·推荐算法
Billy1213814 天前
Day15-C++20 三路比较运算符 `<=>`:一次定义,全面排序
c++20·c++进阶学习
A_cainiao_A21 天前
C++20:std::stop_source让线程说停就听
开发语言·c++20