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

sem是做什么的seo管理平台

sem是做什么的,seo管理平台,免费网站注册域名,一个电商网站开发周期是多久目录 一.模板实现多个文件分离二.内联为什么不能多个文件分离 前言#xff1a; 对于学习C/C的人#xff0c;会经常接触到一些底层的原理#xff0c;所以除了学习语法以外的知识#xff0c;还需要懂一点有关编译链接过程和涉及到汇编代码的函数栈帧的细节 编译和链接过程 对于学习C/C的人会经常接触到一些底层的原理所以除了学习语法以外的知识还需要懂一点有关编译链接过程和涉及到汇编代码的函数栈帧的细节 编译和链接过程简述 这里有三个文件Test.cpp、Func1.h、Func1.cpp 具体参见 编译和链接详解 为什么会存在多文件这种形式原因有很多 1.有利于模块化管理在实践中一个大型的工程代码量本身是非常大的不可能只将它交给一个人管理会将它进行分模块化再将这些模块一一交给一个组的人员去管理并且编译的时候也可以节省很多时间对自己的模块进行不断修正 2.有利于对代码的可维护性就像我们平时写代码包标准库头文件一样官方库的文档都会介绍是怎么使用的而具体的实现细节是在底层封闭的 常见错误 1.编译过程 2.链接过程 一.模板实现多个文件分离 这里有一个模板用来打印任意结构类型 templateclass Container void Print(const Container con) {auto it con.begin();while (it ! con.end()){cout *it ;it;}cout endl;}直接将该模板声明和定义分离成两个文件 //Test.cpp #define _CRT_SECURE_NO_WARNINGS #includeFunc1.hint main() {//Func1();vectorint v{ 1,2,3,4,5,6 };listint li{ 2,3,4,5,6 };Print(v);Print(v1);Print(li);return 0; }//Func1.h #pragma once#includeiostream using namespace std;void Func1();#includevector #includeListtemplateclass Container void Print(const Container con);//Func1.cpp #define _CRT_SECURE_NO_WARNINGS#includeFunc1.hvoid Func1() {cout void Func1() endl; }templateclass Container void Print(const Container con) {auto it con.begin();while (it ! con.end()){cout *it ;it;}cout endl;}说明链接过程出问题了从编译和链接的过程解析为什么出错 本质上就是实例化的问题从底层的角度头文件压根就不参与该过程并且两个.cpp文件是分别进行处理到链接的过程才进行合并但由于模板需要实例化就导致链接不过 解决方案 1.在.cpp直接显示实例化 //Func1.cpp templateclass Container void Print(const Container con) {auto it con.begin();while (it ! con.end()){cout *it ;it;}cout endl;}//显式实例化 //注意template不能掉 template void Printvectorint(const vectorint con);template void Printlistint(const listint con);虽然这种方法解决了当前的问题.cpp不知道实例化什么但是太过于鸡肋如果还有vector仍旧还是有问题的太麻烦了没要使用一次模板就需要实例化所以不推荐 2.模板的声明和定义都放在.h文件中 //Func1.h //本质编译阶段就确定了指令就不需要在链接阶段再去找对应指令 templateclass Container void Print(const Container con);templateclass Container void Print(const Container con) {auto it con.begin();while (it ! con.end()){cout *it ;it;}cout endl;}将声明和定义都包含在.h文件中Test.cpp文件在编译的阶段就确定了地址就不会在链接阶段寻找地址就不存在找不到对应指令的问题了 这也是标准库里面常用的方法 二.内联为什么不能多个文件分离 分离结果 编译器是报了链接错误说明是call指令找不到的问题 首先我们要认识到函数调用的本质是什么call(一串地址)函数名和数组名类似函数的名字就可以代表函数的地址而去call地址就会进行函数调用 具体参见详解函数栈帧 内联函数和普通函数的区别 内联函数普通函数并不会生成对应的call指令直接展开会生成对应的call指令并在链接的过程进行合并调用 内联函数不生成call指令那么在多文件中进行声明和定义分离.h头文件就会像上面的模板一样找不到对应的指令就不能进行链接了那就只能直接定义在头文件中不做声明和定义分离但是注意内联函数具体是否真正展开取决于编译器的实现并且在类中如果已经确定了函数体很小就可以使用inline修饰如果本身函数体就很大不建议作为内联函数有利于加快编译速度 编译结果 VS下默认是不支持内联函数展开的注意要设置一下
http://www.hkea.cn/news/14360149/

相关文章:

  • 内容网站 如何做采集wordpress编辑不了
  • 电脑怎么做服务器 网站格力空调网站建设策划书
  • 做地方门户网站的资质天元建设集团有限公司鹿腾
  • php可以自己做网站吗广州市住房与城乡建设部网站
  • 网站单页发布黑龙江哈尔滨网站建设
  • 昌都市网站建设百度自动点击器
  • 视差效果网站郑州短视频拍摄制作
  • 免费网站下载直播软件江门网站建设工作
  • 杭州外贸网站建设公司申跃wordpress怎么上传缩略图
  • 网站建设方案书模板网页设计的尺寸
  • 最新网站推广天网查询企业查询
  • 网站开发哪个好网站建设零基础好学吗
  • 网站源码怎么做个人网站制作代码
  • 东莞做网站首选企业铭上传wordpress数据包
  • 网站后台这么做网络设计与制作课程
  • 医院加强网站建设中国建设银行网站上不去
  • 支付宝网站申请接口世赛网站开发与设计
  • 秦皇岛网站推广wordpress 小工具制作
  • 矢量网站动画怎么做建站购物网站
  • 自闭症网站的建设意义网站设计需要会什么
  • 做兼职写小说网站网络优化seo薪酬
  • 网站建设技术 论坛手机软件开发语言
  • 从零开始建设网站0fees 安装 wordpress
  • 门户网站如何运营利用小程序反向做网站
  • 做网站最清晰的字体建设九九网站
  • 西安印象网站建设wordpress 404
  • 网站建设zg886网站建设中怎样设置背景
  • 烟台做网站优化园林景观设计案例网站
  • 电商网站网址大全建立网站的步骤筝晃湖南岚鸿官网
  • 布吉网站设计免费网页注册