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

创建并使用自己的C++模块(Windows10+MSVC)

module是C++20种新引入的特性,关于module的介绍和好处,网上已有大量的文章,此处也不再赘述,本文仅记录在个人的环境上创建一个简单的module并使用这个module。

环境同上一篇文章( windows10,MSVC C++工具链,windows10 SDK)

module源文件:

//module_Vector.cppexport module Vector;export class Vector {public:Vector(int s);double& operator[](int i) const;int size() const;        private:double* elem;int sz;
};Vector::Vector(int s):elem{new double[s]}, sz{s} {}double& Vector::operator[](int i) const {return elem[i];
}int Vector::size() const {return sz;
}export bool operator==(const Vector& v1, const Vector& v2) {if (v1.size() != v2.size())return false;for (int i = 0; i < v1.size(); ++i) {if (v1[i] != v2[i])return false;}return true;
}

命令行编译:

cl /std:c++latest /interface /c /EHsc /nologo /W4 /MTd module_Vector.cpp

/interface: 表明是编译module;

/c: 编译但不链接

编译后生成:module_Vector.obj;Vector.ifc

可见,module源文件的文件名无需和module保持一致;但生成的ifc文件名,会自动与module保持一致。

使用该module的文件:

//module01_user.cppimport Vector;
#include <cmath>
#include <iostream>double sqrt_sum(Vector& v) {double sum = 0;for (int i=0; i!=v.size(); ++i) {sum += std::sqrt(v[i]);}return sum;
}int main() {Vector v {Vector(3)};v[0] = 0.1;v[1] = 0.2;v[2] = 0.3;std::cout << "sum is: " << sqrt_sum(v) << std::endl;return 0;
}

命令行编译:

cl /std:c++latest /EHsc /nologo /W4 /MTd module01_user.cpp module_Vector.obj

需要指定上一步生成的obj文件;编译成功生成exe文件。

运行:

C:\c++_program>module01_user.exe
sum is: 1.31116

http://www.lryc.cn/news/271992.html

相关文章:

  • Spring Boot 2.7.11 集成 GraphQL
  • 软件工程期末总结
  • MidTool图文创作-GPT-4与DALL·E 3的结合
  • Python将两个或多个列表合并为一个列表,并根据每个输入列表中的元素的位置将其组合在一起
  • 数模混合SoC芯片中LEF2Milkyway的golden flow
  • Five tips to make your essay flow
  • linux驱动(二):led补
  • 性能测试-jmeter:安装 / 基础使用
  • 数据仓库-数仓优化小厂实践
  • uniapp中uview组件丰富的Code 验证码输入框的使用方法
  • md文件图片上传方案:Github+PicGo 搭建图床
  • 从零开始 - 在Python中构建和训练生成对抗网络(GAN)模型
  • OfficeWeb365 Indexs 任意文件读取漏洞复现
  • Crypto的简单应用-前后端加密传输
  • Vue3-32-路由-重定向路由
  • 如何用js动态修改字体大小
  • 【BIG_FG_CSDN】C++ 数组与指针 (个人向——学习笔记)
  • 桌面天气预报软件 Weather Widget free mac特点介绍
  • HarmonyOS应用开发-搭建开发环境
  • <JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流
  • 电脑怎么设置代理IP上网?如何隐藏自己电脑的真实IP?
  • Django信号机制源码分析(观察者模式)
  • MyBatis-config.xml配置文件
  • 【Spring实战】17 REST服务介绍
  • java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目
  • 跟着cherno手搓游戏引擎【3】事件系统和预编译头文件
  • 排序算法之快速排序
  • Docker 从入门到实践:Docker介绍
  • 用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)
  • 【Linux】进程控制深度了解