C++20模块用export module声明接口单元、import替代#include,实现编译模型重构;接口单元导出内容供外部使用,未export的默认私有,import必须位于翻译单元最前面。
用 C++20 模块(Modules)替代头文件,核心就两点:用 module 声明接口单元,用 import 替代 #include。它不是语法糖,而是编译模型的重构——模块被单独编译成二进制接口文件(如 .pcm / .ifc),不再重复解析、宏污染或依赖顺序问题。
模块分接口单元(interface unit)和实现单元(implementation unit)。接口单元导出供别人用的内容,必须以 export module 开头:
export module math_utils;
export int add(int a, int b) { return a + b; }
export namespace math {
constexpr double PI = 3.14159;
}
注意:
• export 只修饰你想对外暴露的声明或定义(函数、变量、类、命名空间等)
• 不加 export 的内容默认私有,仅在本模块内可用
• 模块名(math_utils)是逻辑标识,不要求与文件名一致,但建议保持一致便于维护
用 import,不是 #include,且必须出现在翻译单元最前面(不能在头文件里、不能在 #include 后面):
import math_utils;
int main() {
return add(2, 3); // OK
// std::cout << math::PI; // 需要额外 import(见下条)
}
常见组合:
• import std; —— 导入标准库统一模块(C++23 起更成熟,C++20 多数编译器仍实验性支持)
• import —— 导入传统头文件的“头文件单元”(需编译器开启对应选项,如 Clang 的 -fmodules-ts 或 MSVC 的 /experimental:module)
• import "my_header.h"; —— 导入自定义头文件作为模块(需先将其显式构建为头文件单元)
模块不是“写了就能跑”,编译流程变了:
clang++ -std=c++20 -x c++-system-header -fmodules -fimplicit-modules -fimplicit-module-maps -c math_utils.cppm -o math_utils.ifc
clang++ -std=c++20 -fmodules -fmodule-file=math_utils.ifc main.cpp -o main
cl /std:c++20 /experimental:module /EHsc main.cpp math_utils.ixx,它自动处理依赖关键提醒:
• 所有使用模块的源文件必须用相同标准(如都用 -std=c++20)
• 模块接口文件路径需被正确识别(Clang 常需 -fmodule-map-file 或 -fprebuilt-module-path)
• 不同编译器对模块的支持程度不同:MSVC 最早落地,GCC 11+ 支持较稳,Clang 需 13+ 且配置较细
不能立刻全切。建议分三步走:
utils.h 改成 utils.cppm)特别注意:模板定义必须在接口单元中可见(不能像头文件那样只声明),所以模块里写模板函数/类时,定义通常得和声明一起 export 出来。
# ai
# c++
# 命名空间
# include
# math
# int
# double
# 接口
# Interface
# Namespace
# 重构
# 头文件
# 能在
# 最前面
# 特化
# 就能
# 主程序
# 出现在
# 你想
# 将其
相关文章:
建站之家VIP精选网站模板与SEO优化教程整合指南
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
浅谈Javascript中的Label语句
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
网站制作壁纸教程视频,电脑壁纸网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站制作公司排行榜,抖音怎样做个人官方网站
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
招贴海报怎么做,什么是海报招贴?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
智能起名网站制作软件有哪些,制作logo的软件?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何快速搭建响应式可视化网站?
移民网站制作流程,怎么看加拿大移民官网?
网站制作网站,深圳做网站哪家比较好?
如何在IIS中新建站点并配置端口与IP地址?
建站主机核心功能解析:服务器选择与网站搭建流程指南
高防服务器租用如何选择配置与防御等级?
建站OpenVZ教程与优化策略:配置指南与性能提升
如何快速使用云服务器搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
定制建站如何定义?其核心优势是什么?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何在橙子建站中快速调整背景颜色?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
Python路径拼接规范_跨平台处理说明【指导】
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何通过WDCP绑定主域名及创建子域名站点?
如何在Windows虚拟主机上快速搭建网站?
建站主机功能解析:服务器选择与快速搭建指南
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
内网网站制作软件,内网的网站如何发布到外网?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
建站之星如何通过成品分离优化网站效率?
寿县云建站:智能SEO优化与多行业模板快速上线指南
如何用VPS主机快速搭建个人网站?
,有什么在线背英语单词效率比较高的网站?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
临沂网站制作企业,临沂第三中学官方网站?
建站之星上传入口如何快速找到?
如何用好域名打造高点击率的自主建站?
小型网站制作HTML,*游戏网站怎么搭建?
建站之星后台管理:高效配置与模板优化提升用户体验
Java解压缩zip - 解压缩多个文件或文件夹实例
为什么Go需要go mod文件_Go go mod文件作用说明
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
*请认真填写需求信息,我们会在24小时内与您取得联系。