news 2026/6/7 23:05:15

2601C++,模块基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2601C++,模块基础

模块的应用

模块机制的应用一般有以下几部分:
模块单元接口定义具体实现
模块的接口负责定义相关使用约定和条件;实现提供具体的应用逻辑.接口抽象清除对具体应用的依赖,这也符合设计原则上的依赖抽象,方便扩展和测试.

利用导出定义规则限制

模块最主要功能就是要和其它的模块协作,所以可导出来确定相关导出的内容,用来向其它模块或应用提供接口,控制内外的边界.
每个模块只有能一个默认导出,另外,导出的应用有着具体的语义规则:模块静态绑定的且要保持全局引用一致性;

不可导出模块域内的临时变量;支持重导出(reexport),目的是聚集接口.
说明,所谓重导出,就是在导出模块中可导出其它模块.类似下面:

//已存在`A,B`两个模块,在`C`模块中导出它们exportmoduleC;exportmoduleA;exportmoduleB;//有选择的导出即分块导出exportimport:A1 from A;//设置A模块中导出了`A1`模块exportvoidtest();//C模块中`自定义`的导出接口

文件命名和模块管理

为了保持可维护性和易用,建议使用一些常见的风格管理,如Google,Linux等等,其后缀推荐使用.ccpm或.ixx.

没有强制,只有适用.如,以点分隔相关模块就是一个非常容易为大家理解和接受的方法即类似"export math.core.matrix".
同样,模块管理中,模块的文件最好与实际的定义一一保持对应(一一映射).该如果有Go神算等开发经验的就非常好理解了.

全局模块片段的应用

全局模块片段c++模块用来兼容传统头文件的一个机制,它不属于模块相关说明.一般在接口单元"module;"声明后到模块定义"export module myself;前的部分.如下例:

module;#include<vector>exportmoduledemo;

全局模块片段还可用来隔绝预处理器的定义,处理宏定义等.

私有模块片段的应用

有全局模块片段就会有私有的.在C++中一般是如下定义:

module;#include<iostream>exportmoduledemo;module:private;voidtestPrivate(){std::cout<<"private module test!"<<std::endl;}

注意,必须在公有及导出模块模块后定义私有模块,否则会报私有编译错误.如:

例程

如上,下面给出示例:

//`exportdemo.cppm`module;#include<vector>#include<iostream>exportmoduledemo;importstd;namespacedemo{exportintAdd(int,int);exportclassexportDemo{public:exportDemo();public:voiddisplay();std::vector<int>vec_;};}module:private;voidtestPrivate(){std::cout<<"private module test!"<<std::endl;}//`exportdemo.cpp`moduledemo;importstd;namespacedemo{intAdd(inta,intb){returna+b;}exportDemo::exportDemo(){}voidexportDemo::display(){vec_.reserve(10);testPrivate();std::cout<<"this is demo module!"<<std::endl;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 11:06:55

AI原生应用领域个性化定制的未来趋势

AI原生应用领域个性化定制的未来趋势 关键词:AI原生应用、个性化定制、生成式AI、多模态交互、隐私计算、用户需求洞察、智能服务进化 摘要:当AI从“工具”升级为“原生能力”,个性化定制正从“锦上添花”变为“核心竞争力”。本文将从AI原生应用的本质出发,结合生活场景与…

作者头像 李华
网站建设 2026/6/1 6:09:29

圆上某一段弧的中点坐标求法

在一个圆上&#xff0c;任意两点会将整个圆周分成两段弧&#xff1a; 劣弧&#xff1a;较短的那段弧。 优弧&#xff1a;较长的那段弧。 “默认考虑劣弧”就是指&#xff0c;当我们说“两点构成的弧”时&#xff0c;如果没有特殊说明&#xff0c;通常指的是那段较短的弧。

作者头像 李华
网站建设 2026/6/4 2:45:32

从自创生到现象意识的本体论构建

0.0 序言&#xff1a;问题的形式化 0.1 本文旨在对“生成认知&#xff08;Generative Cognition&#xff09;与体现性存在&#xff08;Embodied Existence&#xff09;之间存在‘设定’&#xff08;Posits&#xff09;关系”这一命题进行一次彻底的本体论重构。在此框架下&…

作者头像 李华
网站建设 2026/5/29 22:37:46

零基础学Linux:21天从“命令小白”到独立部署服务器

一、第1-7天&#xff1a;基础命令——用“文件操作”打通任督二脉核心目标&#xff1a;3天搞定“文件管理三剑客”Day1-3&#xff1a;ls/cd/pwd mkdir/touch/rm实战任务&#xff1a;用命令创建“/project/blog”多级目录&#xff0c;在其中新建index.html并写入“我的第一个网…

作者头像 李华
网站建设 2026/6/2 23:16:49

还在为论文查重发愁?试试这8款AI辅助工具的强大功能

学术写作中&#xff0c;查重率既是衡量研究规范性的重要标准&#xff0c;也可能引发文本调整的困扰。针对这一问题&#xff0c;现代智能工具利用自然语言处理技术&#xff0c;在不改变原意的基础上对文本进行语义重构&#xff0c;为学者提供了兼顾效率与学术严谨性的原创性优化…

作者头像 李华