泰州网站制作计划,浙江省建设信息港证书,wordpress教程网59iwp,成都seo优化排名推广module是C20种新引入的特性#xff0c;关于module的介绍和好处#xff0c;网上已有大量的文章#xff0c;此处也不再赘述#xff0c;本文仅记录在个人的环境上创建一个简单的module并使用这个module。
环境同上一篇文章#xff08; windows10#xff0c;MSVC C工具链20种新引入的特性关于module的介绍和好处网上已有大量的文章此处也不再赘述本文仅记录在个人的环境上创建一个简单的module并使用这个module。
环境同上一篇文章 windows10MSVC 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:clatest /interface /c /EHsc /nologo /W4 /MTd module_Vector.cpp
/interface: 表明是编译module
/c: 编译但不链接
编译后生成module_Vector.objVector.ifc
可见module源文件的文件名无需和module保持一致但生成的ifc文件名会自动与module保持一致。
使用该module的文件
//module01_user.cppimport Vector;
#include cmath
#include iostreamdouble sqrt_sum(Vector v) {double sum 0;for (int i0; 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:clatest /EHsc /nologo /W4 /MTd module01_user.cpp module_Vector.obj
需要指定上一步生成的obj文件编译成功生成exe文件。
运行
C:\c_programmodule01_user.exe
sum is: 1.31116