本文介绍: C++ 20 Module介绍
头文件包含一直是C/C++的传统,它使代码声明与实现分离,但它有一个非常大的问题就是会被重复编译,拖累编译速度。
通常一个标准头文件iostream
展开后可能达几十万甚至上百万行。笔者使用下面的示例进行测试,新建一个main.cc
,内容如下:
然后分别使用g++和clang++来测试行数:
随着C++ 20 Module的出现以及各编译器对其的逐步实现,C++也能进行模块化编程,提高编译速度了。
由于历史原因,现有以头文件形式组织的C++代码,不会在短时间内消失,这种情况将持续相当长的时间,也许是几年,十几年,甚至几十年或者更长,所以目前的C++依旧可以在Module中包含头文件,让之与模块(Module)共存,方便使用现有代码。
目前主流的C++编译器有GCC、Clang和MSVC,各个编译器实现的进展不一,使用的命令行参数也不一样,为了简单起见,笔者先以GCC编译器的命令行和Makefile为例来介绍模块的基本写法及编译,再介绍Clang和MVVC使用CMake来编译项目。
一、模块基础
1. 定义模块
2. 使用模块
3. 编译:
二、模块进阶
1. 接口与实现分离
2. Module Partition(模块分区)
3. 子模块
4. 私有模块
5. 引用头文件
三、Clang与MSVC使用CMake来编译项目
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。