@@ -29,15 +29,15 @@ int main() {
2929 - 1.3 [ 私有表示 - ` _ ` 后缀] ( ./README.md#13-私有表示---_后缀 )
3030 - 1.4 [ 其他] ( ./README.md#14-其他 )
3131- 二、模块化
32- - 2.0 [ 使用` import xxx ` 替代` #include <xxx> ` ] ( ./README.md#0使用import -xxx替代include-xxx )
33- - 2.1 [ 模块文件结构] ( ./README.md#1模块文件结构 )
34- - 2.2 [ 使用模块` .cppm ` 替代头文件` .h ` 、` .hpp ` ] ( ./README.md#2使用模块cppm替代头文件hhpp )
35- - 2.3 [ 模块实现与接口导出分离] ( ./README.md#3模块实现与接口导出分离 )
36- - 2.4 [ 模块及模块分区命名规范] ( ./README.md#4模块及模块分区命名规范 )
37- - 2.5 [ 多文件模块和目录] ( ./README.md#5多文件模块和目录 )
38- - 2.6 [ 可导出模块分区和内部模块分区] ( ./README.md#6可导出模块分区和内部模块分区 )
39- - 2.7 [ 模块化与向前兼容] ( ./README.md#7模块化与向前兼容 )
40- - 2.8 [ 其他] ( ./README.md#8其他 )
32+ - 2.0 [ 使用` import xxx ` 替代` #include <xxx> ` ] ( ./README.md#20使用import -xxx替代include-xxx )
33+ - 2.1 [ 模块文件结构] ( ./README.md#21模块文件结构 )
34+ - 2.2 [ 使用模块` .cppm ` 替代头文件` .h ` 、` .hpp ` ] ( ./README.md#22使用模块cppm替代头文件hhpp )
35+ - 2.3 [ 模块实现与接口导出分离] ( ./README.md#23模块实现与接口导出分离 )
36+ - 2.4 [ 模块及模块分区命名规范] ( ./README.md#24模块及模块分区命名规范 )
37+ - 2.5 [ 多文件模块和目录] ( ./README.md#25多文件模块和目录 )
38+ - 2.6 [ 可导出模块分区和内部模块分区] ( ./README.md#26可导出模块分区和内部模块分区 )
39+ - 2.7 [ 模块化与向前兼容] ( ./README.md#27模块化与向前兼容 )
40+ - 2.8 [ 其他] ( ./README.md#28其他 )
4141 - 2.8.1 尽可能的少使用宏
4242 - 2.8.2 导出模板接口时注意全局静态成员
4343
@@ -148,7 +148,7 @@ private:
148148
149149## 二、模块化
150150
151- ### 0. 使用` import xxx ` 替代` #include <xxx> `
151+ ### 2.0 使用` import xxx ` 替代` #include <xxx> `
152152
153153** 旧式` #include ` 写法**
154154
@@ -170,7 +170,7 @@ int main() {
170170}
171171```
172172
173- ### 1. 模块文件结构
173+ ### 2.1 模块文件结构
174174
175175``` cpp
176176// 0.全局模块片段(可选)
@@ -198,11 +198,11 @@ export int add(int a, int b) {
198198}
199199```
200200
201- ### 2.使用模块`.cppm`替代头文件`.h`、`.hpp`
201+ ### 2.2 使用模块`.cppm`替代头文件`.h`、`.hpp`
202202
203203> 可以把导出接口和接口实现都放到`.cppm`文件中.
204204
205- #### 2.1 传统代码文件风格
205+ #### 2.2. 1 传统代码文件风格
206206
207207**传统风格1 - `.cpp` + `.h`**
208208
@@ -239,7 +239,7 @@ int add(int a, int b) {
239239#endif
240240```
241241
242- #### 2.2 模块化文件
242+ #### 2.2.2 模块化文件
243243
244244> 模块中的接口, 默认外界是不能使用的.要导出的接口需要在前面加` export ` 关键字
245245
@@ -272,7 +272,7 @@ export int add(int a, int b) {
272272}
273273```
274274
275- ### 3. 模块实现与接口导出分离
275+ ### 2.3 模块实现与接口导出分离
276276
277277> 通过命名空间隔离模块实现和接口导出, 可以有选择的控制导出接口
278278
@@ -300,7 +300,7 @@ export namespace mcpplibs {
300300};
301301```
302302
303- ### 4. 模块及模块分区命名规范
303+ ### 2.4 模块及模块分区命名规范
304304
305305> 使用文件(及目录)名 + `.`层级分割符进行模块命名, 降低同名模块冲突概率
306306
@@ -349,15 +349,15 @@ int main() {
349349}
350350```
351351
352- ### 5. 多文件模块和目录
352+ ### 2.5 多文件模块和目录
353353
354354> 当一个模块内容太多, 需要进一步分文件时可以采用 `目录` + `模块或模块分区组合`的方式进行实现
355355
356356- 一个文件夹 + 一个模块声明文件
357357 - 文件夹: 同一模块的实现分散到不同文件实现
358358 - 模块文件: 对外接口导出的汇总文件
359359
360- #### 5.1 项目结构
360+ #### 2. 5.1 项目结构
361361
362362```cpp
363363.
@@ -375,7 +375,7 @@ int main() {
3753753 directories, 7 files
376376```
377377
378- #### 5.2 模块
378+ #### 2. 5.2 模块
379379
380380** ` a.b ` 模块**
381381
@@ -424,11 +424,11 @@ export namespace a {
424424}
425425```
426426
427- ### 6. 可导出模块分区和内部模块分区
427+ ### 2.6 可导出模块分区和内部模块分区
428428
429429> 当一个模块有多个分区时, 分可导出的分区已经仅内部使用的部分
430430
431- #### 6.1 分区实现
431+ #### 2. 6.1 分区实现
432432
433433**`a.a2`可导出模块分区**
434434
@@ -453,7 +453,7 @@ module a:a1;
453453void test () { } // ok
454454```
455455
456- #### 6.2 使用分区
456+ #### 2. 6.2 使用分区
457457
458458```cpp
459459export module a;
@@ -463,7 +463,7 @@ export import :a2; // 使用可导出分区要加export
463463import :a1; // 使用内部分区不能加export且只能模块内部使用
464464```
465465
466- ### 7. 模块化与向前兼容
466+ ### 2.7 模块化与向前兼容
467467
468468> C/C++以有生态中没有模块化的库, 可以把项目所有引入的传统头文件库封装到一个专门的"兼容模块中", 然后在该模块中把接口进行"重新导出", 来最小化 ` 全局模块/传统头文件 ` 的使用范围
469469
@@ -496,7 +496,7 @@ export namespace lua {
496496}
497497```
498498
499- ### 8. 其他
499+ ### 2.8 其他
500500
501501>...
502502
0 commit comments