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

怎么做旅行网站海南百度总代理

怎么做旅行网站,海南百度总代理,深圳百度推广属于哪家公司,wordpress 速度很慢📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. 前言2.概念3.特性…

📙 作者简介 :RO-BERRY
📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持


在这里插入图片描述


目录

  • 1. 前言
  • 2.概念
  • 3.特性
  • 4.内联与宏


1. 前言

内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将他们组合到程序中。要了解内联函数与常规函数之间的区别, 必须深入到程序内部。

编译过程的最终产品是可执行程序——由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时(如有循环或分支语句时),将跳过一些指令,向前或向后跳到特定地址。常规函数调用也使程序跳到另一个地址(函数的地址),并在函数结束时返回。执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需将返回值放入到寄存器中),然后跳回到地址被保存的指令处(这与阅读文章时停下来看脚注,并在阅读完脚注后返回到以前阅读的地方类似)。来回跳跃并记录跳跃位置意味着以前使用函数时,需要一定的开销。

C++内联函数提供了另一种选择。内联函数的编译代码与其他程序代码“内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数代码的10个副本(参见下图)。

在这里插入图片描述

应有选择地使用内联函数。如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码执行时间很短,则内联调用就可以节省非内联调用使用的大部分时间。另一方面,由于这个过程相当快,因此尽管节省了该过程的大部分时间,但节省的时间绝对值并不大,除非该函数经常被调用。


2.概念

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调
用建立栈帧的开销,内联函数提升程序运行的效率。
查看方式:

  1. 在release模式下,查看编译器生成的汇编代码中是否存在call Add
  2. 在debug模式下,需要对编译器进行设置,否则不会展开(因为debug模式下,编译器默认不
    会对代码进行优化,以下给出vs2013的设置方式)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


3.特性

  1. inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会
    用函数体替换函数调用,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运
    行效率。
  2. inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建
    议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不
    是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性
  3. inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址
    了,链接就会找不到

要使用这些特性,必须采取以下几个措施之一:

  • 在函数声明前加上关键字inline
  • 在函数定义前加上关键字inline

通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应该提供原型的地方


4.内联与宏

inline 工具是C++新增的特性。C语言使用预处理器语句#define来提供宏——内联代码的原始实现。例如,下面是一个计算平方的宏:

#define square(x) x*x

这并不是通过传递参数实现的,而是通过文本替换来实现的——X是“参数”的符号标记。

a = square(5.0)   --->    a = 5.0 * 5.0
b = square(4.5+7.5)   --->    b = 4.5 + 7.5 * 4.5 + 7.5
c = square(s++)   --->    c = s++ * s++

上述例子只有一个能正常运行,其他的均达不到我们想要的目的,但是可以通过打括号来进行改进
但很容易出现类似的问题。即宏不能按值传递。
宏的优点:

1.增强代码的复用性。
2.提高性能。

缺点:

1.不方便调试宏。(因为预编译阶段进行了替换)
2.导致代码可读性差,可维护性差,容易误用。
3.没有类型安全的检查 。

内联是传递表达式,所以不会出现使用宏所导致的错误
通过对比可以看到,内联功能是远远超过宏定义的,我们在学习中要多去将以前使用宏定义的地方多去考虑使用内联函数

http://www.yidumall.com/news/59261.html

相关文章:

  • 广州网页设计机构网站seo优化免费
  • 常州做网站建设外贸网站建设流程
  • 网站建设制作 武汉精准网站seo诊断报告
  • 打码网站如何建设合肥seo推广排名
  • 网上做期末试卷的网站百度如何发布作品
  • 可以做翻译的网站seo网站制作优化
  • 公司章程范本厦门seo优化推广
  • 深圳较便宜的网站建设刷关键词排名
  • 网站开发网页加载缓慢查询数据库慢2345网址中国最好
  • 上海网站建设-目前企业网站所面临的困惑南宁seo怎么做优化团队
  • 网站建设员课程男生短期培训就业
  • wordpress小工具里页面苏州seo关键词优化价格
  • 网站解决方案合肥网络关键词排名
  • 做网站有什么关于财务的问题黄页引流推广网站
  • 如何建立网站的快捷方式seo外包方案
  • 热门行业潍坊百度关键词优化
  • 学做电商那个网站好seo广州工作好吗
  • 心理健康网站建设论文网络培训seo
  • 做网站有什么好处吗怎么seo关键词优化排名
  • 怎样看一个网站是谁做的商丘网络推广外包
  • 我有域名和云服务器怎么做网站百度公司销售卖什么的
  • 好的外贸网站的特征如何做谷歌seo推广
  • 武胜县赛马镇建设小学学校网站seo tdk
  • 怀来县网站建设湖南网站建设效果
  • 网站开发需要什么宁德市安全教育平台
  • 西安网站推广优化如何做好线上营销
  • 网站开发参考文献期刊淘宝的前100个关键词排名
  • java可以做网站后台硬件优化大师下载
  • 网站建设哪家公司便宜关键词排名监控批量查询
  • 网站设计会存在什么问题学技术包分配的培训机构