当前位置: 首页 > article >正文

C++现代教程七之模块

 优点

  1. 编译时间减少:
  2. 模块消除了重复解析和编译头文件的需要,从而显著减少了编译时间。特别是在大型项目中,这一点尤为重要。
  3. 更好的封装性:
  4. 模块允许更严格的封装,可以明确地控制哪些符号对外可见。这有助于减少命名冲突和不必要的依赖。
  5. 减少命名冲突:
  6. 模块通过命名空间和模块名称来管理符号,减少了全局命名空间中的命名冲突问题。
  7. 提高代码可读性和维护性:
  8. 模块化的代码结构更加清晰,便于理解和维护。每个模块都有明确的职责和接口,使得代码组织更加合理。
  9. 更好的工具支持:
  10. 模块化的设计使得 IDE 和其他开发工具可以更好地支持代码导航、重构和分析。
  11. 减少宏的使用:
  12. 模块减少了对宏的依赖,因为模块提供了更强大的抽象和封装机制
main.ixx 接口
export module api;
import :part1;
import :part2;

export char const* hello();

export {
  int one();
  int zero();
}

export namespace hi{
const char* english();
const char* french();
}
main.cppm 实现

module api;
//module :private;  不可见
char const* hello() { return "hello"; }
char const* world() { return "world"; }
 part1.cppm 分区一
export module api:part1;
int one() { return 1;}
int zero() { return 0;}
 part2.cppm 分区一
export module api:part2;
import :part1;
import <string>;

namespace hi{
const char* english() { return "en";}
const char* french() { return "fr";}
const char* test() { return std::to_string(one()).c_str(); }
}
 main.cpp
import <iostream>;
import api;

void print(std::string_view msg) {
    std::cout << msg << std::endl;
}

void print(int val) {
  std::cout << val << std::endl;
}

int main() {
  print(hello());
  print(one());
  print(hi::english());
}
 输出

hello
1
en

参考

Overview of modules in C++ | Microsoft Learn

C++20 Module 使用指南 - ihnfsa’s blog

C++现代教程六_#include <iostream> using namespace std; typedef s-CSDN博客


创作不易,小小的支持一下吧!


http://www.kler.cn/a/380605.html

相关文章:

  • 分布式光伏管理办法
  • C++中的继承——第二篇
  • 提高文本处理效率:精通awk命令中的$NF
  • windows XP,ReactOS系统3.4 共享映射区(Section)---2
  • 面试题:JVM(二)
  • 智慧汇聚:十款企业培训工具打造学习型企业
  • uni-app在H5页面唤起小程序登录 然后再回到当前页面
  • 算法简介:动态规划
  • (十一)JavaWeb后端开发——分层解耦
  • 基于SSD模型的行人跌倒、摔倒检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 【Redis】一种常见的Redis分布式锁原理简述
  • 如何无缝更换WordPress主题:关键步骤详解
  • 微服务透传日志traceId
  • 【设计模式系列】原型模式(十一)
  • HarmonyOS NEXT应用元服务开发组合场景
  • 运维工具之docker入门
  • Win10搭建SFTP服务器
  • 系统缺失msvcp140_1.dll?解决msvcp140_1.dll缺失问题,
  • AiPPT - 全智能 AI 一键生成 PPT
  • 鸿蒙ArkTS中的面向对象编程
  • Scala的包及其导入
  • 三十一、Python基础语法(多态)
  • 【Linux】网络相关的命令
  • 猫用宠物空气净化器哪个牌子好?求噪音小的宠物空气净化器推荐!
  • K8s核心组件全解析
  • Rust移动开发:Rust在Android端集成使用介绍