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

如何用Python网站开发vps网站压缩

如何用Python网站开发,vps网站压缩,自建公司网站,网站权重一直做不上去Hello~,欢迎大家来到我的博客进行学习! 目录 inline为什么不能加分号?为什么要加外面的括号?为什么要加里面的括号? inline 用inline修饰的函数叫做内联函数,编译时C编译器会在调用的地方展开内联函数,这样调用内联函数就不需要建立栈帧…

在这里插入图片描述

Hello~,欢迎大家来到我的博客进行学习!

目录

  • inline
    • 为什么不能加分号?
    • 为什么要加外面的括号?
    • 为什么要加里面的括号?

inline

  • 用inline修饰的函数叫做内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联函数就不需要建立栈帧了,就可以提高效率。
  • inline对于编译器而言只是⼀个建议,也就是说,你加了inline编译器也可以选择在调用的地方不展开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适用于频繁调用的短小函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。
  • C语言实现宏函数也会在预处理时替换展开,但是宏函数实现很复杂很容易出错的,且不方便调试,C++设计了inline目的就是替代C的宏函数。
  • vs编译器 debug版本下面默认是不展开inline的,这样方便调试,debug版本想展开需要设置⼀下以下两个地方。
  • inline不建议声明和定义分离到两个文件,分离会导致链接错误。因为inline被展开,就没有函数地址,链接时会出现报错。

C++弄内联函数是为了替代宏,我们在写宏的时候非常容易写错,所以C++中不太推荐宏这个东西。例如:

// 实现⼀个ADD宏函数的常⻅问题
//#define ADD(int a, int b) return a + b;
//#define ADD(a, b) a + b;
//#define ADD(a, b) (a + b)// 正确的宏实现
#define ADD(a, b) ((a) + (b))

这里有3个问题:

  • 为什么不能加分号?
  • 为什么要加外面的括号?
  • 为什么要加里面的括号?

为什么不能加分号?

首先在这个情况下,是可以加分号的:

#include<iostream>
using namespace std;
#define ADD(a,b)((a)+(b));int main()
{int ret = ADD(1, 2);return 0;
}

但是这个场景中,就不可以:

#include<iostream>
using namespace std;
#define ADD(a,b)((a)+(b));int main()
{int ret = ADD(1, 2);cout << ADD(1, 2) << endl;return 0;
}

这里我们加了分号以后,宏替换以后就会有两个分号,就会被识别为两个语句,一个分号代表一个语句,被替换后的形式为这样:

#include<iostream>
using namespace std;
#define ADD(a,b)((a)+(b));int main()
{int ret = ADD(1, 2);//int ret =((1)+(2));cout <<((1)+(2)); << endl;return 0;
}

所以不能加分号。

为什么要加外面的括号?

#include<iostream>
using namespace std;
#define ADD(a,b)(a)+(b)int main()
{int ret = ADD(1, 2);cout << ADD(1, 2) * 5 << endl;return 0;
}

这里就是运算符优先级的问题,如果不加就是11。

为什么要加里面的括号?

#include<iostream>
using namespace std;
#define ADD(a,b)(a+b)
int main()
{int ret = ADD(1, 2);int x = 1, y = 2;ADD(x & y, x | y); // -> (x&y+x|y)return 0;
}

这里也是运算符优先级的问题,这里是一种替换,传给a的不一定是变量表达式,也可能是运算表达式。这里我们本来希望&和|先运算,但是+的优先级高。

在这里我们体会到了,宏会出现各种问题所以C++推荐内联。宏的好处是快一些,因为它的本质是替换,假设我们写一个add函数,要调用是要建立栈帧的。用内联函数就不需要建立栈帧了,可以提高效率,使用内联可以避开宏的坑。

#include<iostream>
using namespace std;
inline int ADD(int x, int y)
{int ret = x + y;return ret;
}int main()
{int ret = ADD(1, 2);cout << ADD(1, 2) << endl;cout << ADD(1, 2) * 5 << endl;int x = 1, y = 2;ADD(x & y, x | y); // -> (x&y+x|y)return 0;
}

inline对于编译器而言只是⼀个建议,我们并不会用内联去写递归或一些比较长的代码,我们只会用它去写一些比较短的代码。函数被编译完之后,会变为一串指令,这里肯定会有很多很多的指令,这里和数组类似,是第一句指令的地址。

inline不建议声明和定义分离到两个文件,分离会导致链接错误。链接错误就是找不到定义就会出现。
F.h

#include <iostream>
using namespace std;
inline void f(int i);

F.cpp

#include "F.h"
void f(int i)
{cout << i << endl;
}

main.cpp

#include "F.h"
int main()
{// 链接错误:⽆法解析的外部符号 "void __cdecl f(int)" (?f@@YAXH@Z)f(1);return 0;
}

普通函数是不可以放到.h里面的,也会报链接错误。这里报错不是报错找不到,而是冲突。
F.h

#include <iostream>
using namespace std;
inline void f(int i);void Func()
{cout << "Func()" << endl;
}

加一个静态就可以解决:

#include <iostream>
using namespace std;
inline void f(int i);static void Func()
{cout << "Func()" << endl;
}

好了,我们的知识就讲到这里。如果文章内容有误,请大佬在评论区斧正!谢谢大家!
在这里插入图片描述


文章转载自:

http://Zezj36LE.trsdm.cn
http://ZMtKnIVY.trsdm.cn
http://HOJcA8qn.trsdm.cn
http://iuCZhbeQ.trsdm.cn
http://1QopfXgb.trsdm.cn
http://yRHzs7Zp.trsdm.cn
http://nIBbenhL.trsdm.cn
http://u17TYpE3.trsdm.cn
http://Dt0EbPSK.trsdm.cn
http://zmzc6sD8.trsdm.cn
http://eTZhJ9Pf.trsdm.cn
http://iLwbHooU.trsdm.cn
http://zTnti2k0.trsdm.cn
http://Rr7gIpKz.trsdm.cn
http://TtnuTGUq.trsdm.cn
http://83C6y6qJ.trsdm.cn
http://cFzZ8JxK.trsdm.cn
http://3yTF348X.trsdm.cn
http://EoUqpvFz.trsdm.cn
http://u4kM9whi.trsdm.cn
http://knH4CWfH.trsdm.cn
http://30uHPeRS.trsdm.cn
http://tD7WWosY.trsdm.cn
http://FxkqgAQG.trsdm.cn
http://MJSRd9LO.trsdm.cn
http://h2GlAlSs.trsdm.cn
http://uWTpN6NG.trsdm.cn
http://VKt4LHGk.trsdm.cn
http://vnCobyYk.trsdm.cn
http://uaLrrp4n.trsdm.cn
http://www.dtcms.com/wzjs/736149.html

相关文章:

  • 中国建设质量协会网站配音秀做素材网站
  • 代做机械毕业设计网站海南住房城乡建设网站
  • 房产网站建设网站推广网站ico图标 代码
  • 做信息图的网站有哪些大学生毕业设计网页设计
  • 福建有没有网站做鞋子一件代发网站后台管理系统管理员登录
  • 怎么免费推广自己网站公司推广是做什么的
  • 揭阳做网站建设公司livezilla wordpress
  • 半导体网站建设网站建设需要哪些资质
  • 无锡市政建设集团网站企业做官网有哪些好处
  • 网站后台管理界面代码用html5做的个人网站
  • 免费网站建设培训昆明app开发哪家好
  • 如何偷别人dedecms网站的模板高端网站建设流行风
  • 新手网站建设模板下载秦皇岛网络编辑网站
  • 重庆建设网站的公司简介南昌哪家做网站好
  • 怎么做算命的网站个人外贸公司网站
  • 最简单的静态网站网站开发支付宝
  • 网站公司怎么做wordpress会员文章
  • 群晖做网站需要备案吗企业网站在ps里做吗
  • 怎么买网站域名如何在网上卖东西?
  • 如何让网站互动起来响应式网站广州网站建设
  • 优度网站建设微信小程序制作公司排行榜
  • 企业商城网站开发建设哪里网站开发小程序
  • 湖南茶叶品牌网站建设济南哪里有做网站的公司
  • 网站大小多少合适查网站备案信息
  • 团队氛围建设 网站网站建好了 如何推广
  • 备案网站可以做影视站网站建设全包广
  • 做警员编号网站常州微网站开发
  • 阿尔及利亚网站后缀手机端网站建设备案
  • 网站建设领域的基本五大策略要学会wordpress图文安装
  • 网站成本案例wordpress 添加广告