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

沈阳微网站制作如何设计小程序

沈阳微网站制作,如何设计小程序,电商网站开发的职责,汕头建总大多数C项目使用多个翻译单元(translation units)#xff0c;因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature#xff0c;用于在翻译单元之间共享声明和定义。它们是某些…      大多数C项目使用多个翻译单元(translation units)因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature用于在翻译单元之间共享声明和定义。它们是某些headers用例的替代方案。在C20中引入了模块的概念以提高编译过程的效率并提供更好的代码组织和封装。模块允许开发人员将他们的代码分成单独的组件每个组件都有自己的接口和实现并根据需要导入它们。模块减少了与头文件相关的缺点从而减少了编译时间。 模块与命名空间正交(Modules are orthogonal to namespaces)。 语法如下 export(optional) module module-name module-partition(optional) attr(optional); // Module declaration. Declares that the current translation unit is a module unit export declaration // Export declaration. Export all namespace-scope declarations in declaration export { declaration-seq(optional) } // Export declaration. Export all namespace-scope declarations in declaration-seq export(optional) import module-name attr(optional); // Import declaration. Import a module unit export(optional) import module-partition attr(optional); // Import declaration. Import a module partition export(optional) import header-name attr(optional); // Import declaration. Import a header unit module; // Starts a global module fragment module : private; // Starts a private module fragment 1.Module declarations 翻译单元可以具有模块声明在这种情况下它被视为模块单元。如果提供了模块声明则必须是翻译单元的第一个声明(全局模块片段(fragment)除外)。每个模块单元都与模块声明中提供的模块名称(以及可选的分区(partition))相关联。模块单元是包含模块声明的源文件。 模块名称由一个或多个用点分隔的标识符组成(例如mymodule、mymodule.mysubmodule、mymodule2...)。点没有内在含义但它们被非正式地用于表示层次结构。 声明中包含关键字export的模块单元称为模块接口单元(例如vs2022中后缀为.ixx文件只编译一次被编译成二进制表示)所有其他模块单元称为模块实现单元(例如vs2022中后缀为.cppm文件)。 对于每个命名模块必须有一个不指定模块分区的模块接口单元此模块单元称为主模块接口单元。其导出的内容将在导入相应的命名模块时可用。 2.Exporting declarations and definitions 模块接口单元可以导出声明(包括定义)这些声明可以被其他翻译单元导入。要导出声明需在其前面加上export关键字或者将其放在导出块内。 3.Importing modules and header units 模块通过导入声明导入。 给定命名模块的模块接口单元中导出的所有声明和定义都将使用导入声明在翻译单元中可用。 导入声明可以在模块接口单元中导出。 在模块单元中所有导入声明必须分组在模块声明之后和所有其他声明之前(In module units, all import declarations must be grouped after the module declaration and before all other declarations)。 #include不应在模块单元中使用(全局模块片段之外)因为所有包含的声明和定义都将被视为模块的一部分。 头文件单元是从头文件合成的单独翻译单元(A header unit is a separate translation unit synthesized from a header)。导入头文件单元将使其所有定义和声明都可访问。预处理器宏也是可访问的(因为导入声明可被预处理器识别)。 4.Global module fragment 模块单元可以用全局模块片段作为前缀当无法导入headers时可以使用它来包含headers。 如果模块单元具有全局模块片段则其第一个声明必须是module;。然后全局模块片段中只能出现预处理指令。然后标准模块声明标记全局模块片段的结束和模块内容的开始。 5.Private module fragment 主模块接口单元可以以私有模块片段作为后缀这允许将模块表示为单个翻译单元而无需使模块的所有内容都可以被导入器(importers)访问。 私有模块片段结束模块接口单元中可以影响其他翻译单元行为的部分。如果模块单元包含私有模块片段它将是其模块的唯一模块单元。   6.Module partitions 模块可以有模块分区单元。它们是模块声明中包含模块分区的模块单元模块分区以冒号:开头位于模块名称之后。 一个模块分区恰好代表一个模块单元(两个模块单元不能指定同一个模块分区)。它们仅在命名模块内部可见(命名模块之外的翻译单元不能直接导入模块分区)。 模块分区可以由同名命名模块的模块单元导入。 模块分区中的所有定义和声明对于导入模块单元而言都是可见的无论是否导出。 模块分区可以是模块接口单元(当其模块声明具有导出时)。 7.Module ownership: 一般而言如果声明出现在模块单元中的模块声明之后则声明将附加到该模块。 如果实体(entity)的声明附加到命名模块则该实体只能在该模块中定义。此类实体的所有声明都必须附加到同一模块。 vs2022配置支持C20模块步骤配置属性 (1).常规 -- C语言标准选择ISO C20标准(/std:c20) (2).C/C -- 常规 -- 扫描源以查找模块依赖关系选择是 (3).C/C -- 语言 -- 启用实验性的C标准库模块选择是(/exprimental:module) 测试工程如下图所示 模块接口单元math_operations.ixx内容如下 export module math_operations;export namespace math_ {int add(int a, int b);int sub(int a, int b);int mul(int a, int b);int div(int a, int b); } 模块实现单元math_operations.cppm内容如下 export module math_operations;//#include iostream // error import iostream; // import declarationnamespace {void error() // NOT be visible{std::cerr Error: the divisor cannot be 0 std::endl;}} // namespaceexport namespace math_ {int add(int a, int b) { return a b; }int sub(int a, int b) { return a - b; }int mul(int a, int b) { return a * b; }int div(int a, int b){if (b 0) {error();return 0;}return a / b;} } // export namespace math_ test_modules.cpp内容如下 import math_operations; // import declaration #include iostream //import iostream; // okint main() {constexpr int a{ 8 }, b{ 2 };std::cout add: math_::add(a, b) , sub: math_::sub(a, b) , mul: math_::mul(a, b) , div: math_::div(a, b) std::endl;std::cout div2: math_::div(a, 0) std::endl;std::cout test finish std::endl;return 0; } 执行结果如下图所示 GitHubhttps://github.com/fengbingchun/Messy_Test
http://www.dnsts.com.cn/news/23769.html

相关文章:

  • ps免费模板网站wordpress熊掌号插件
  • 企业多语言网站开发做网站需要多少钱啊
  • 做网站菏泽美食网站建设规划书
  • c2c电商网站有哪些wordpress 最新发展
  • 广州网站vi设计报价房产手机网站开发
  • 潼南国外免费自助建站网站建设费用的请示
  • html怎么设置网站吗山东省住房和城乡建设厅网站电话
  • 乌海市建设局网站如何用.net做网站
  • 做外贸在哪个网站注册免费建站网站一级大录像不卡在线看
  • 宁波网站建设的详细策划短视频seo厂家
  • 做外贸从哪些网站获取客户什么网站都有漏洞
  • 六安市 网站集约化建设云南昆明百度总代理
  • 宜丰做网站的品牌展示型网站源码
  • 湖南视频网站建设爱汉中app客户端
  • 建筑公司网站的目标用户嘉兴网站优化排名
  • 点评网站建设地产集团网站建设
  • 黄石做网站做美食软件的视频网站
  • 北京一诺网站建设公司免费建个人手机网站
  • 做网站如何与腾讯合作石家庄网页制作
  • 邮件模板网站wordpress 页眉
  • 做网站推广合同学网络营销有前途吗
  • python做网站还是数据好的建设网站公司哪家好
  • 网站开发能干什么网站刚做怎么做seo优化
  • 做壁纸壁的网站有什么区别系统优化大师下载
  • 网站开发的规格描述百度网页版无痕模式
  • 网站关键词推广工具网站建设软件是什么意思
  • 鲜花网站建设方案动漫设计专业怎么样
  • 济南seo外贸网站建设wordpress 页面禁止留言
  • 便民网站开发北京网站建设求职简历
  • php网站开发心得seo网站首页优化排名怎么做