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

秦皇岛网站制作多少钱seo是什么职业

秦皇岛网站制作多少钱,seo是什么职业,网站建设培训方案,美食网页设计作品欣赏C/C 之中 inline 是一个很有意思的关键字,奇奇怪怪的用法见过不少,今天抽点时间出来聊聊这个东西。 inline 可以用在那些方面?修饰 inline 内链关键字到底有什么作用? OK:started 1、inline 可以用在类成员函数的声明…

C/C++ 之中 inline 是一个很有意思的关键字,奇奇怪怪的用法见过不少,今天抽点时间出来聊聊这个东西。

inline 可以用在那些方面?修饰 inline 内链关键字到底有什么作用?

OK:started

1、inline 可以用在类成员函数的声明上面,如下所示:

class Foo final {
public:inline Foo() noexcept {printf("%s\n", ".ctor");}inline void Say() {printf("%s\n", "hello world!");}
};

上述代码没有必要在函数上显示声明,inline 内链,因为如上述代码,均会被隐式声明为 inline 函数。

无论:上述类实现,写在头文件(.h)或者是源文件(.cpp)之中。

所以:若成员函数实现在类中,不需要显示声明 inline 堆代码字节数。

2、inline 可以用在类成员函数的实现,如下所示:

#include <stdio.h>class Foo final {
public:Foo();void Say();
};inline Foo::Foo() {printf("%s\n", ".ctor");
}inline void Foo::Say() {printf("%s\n", "hello world!");
}

上述代码可以写在头文件之中,也可以写在源文件之中,但如果取消了 inline,那么写在头文件之中被多个源文件 include 那么就会导致符号重定义冲突,单个源文件引入却不会。

3、inline 可以在全局函数上面修饰,如下所示:

inline int Add(int x, int y) {return x + y;
}

上述代码可以写在头文件之中,也可以写在源文件之中,但如果取消了 inline,那么写在头文件之中被多个源文件 include 那么就会导致符号重定义冲突,单个源文件引入却不会。

inline 关键字的作用有几个方面:

1、头文件之中定义函数实现

2、建议编译器通过内嵌的方式优化代码执行能效

3、inline 函数,由调用的函数(递归链)的源文件来实现

     所以:inline 函数可以访问未被它引入的类型或函数,这取决于编译器。

inline 关键字声明并不意味着,编译器会把声明 inline 的函数内嵌到调用该函数的程序之中,这取决于函数的复杂度。

不会被优化,但被声明为 inline 的函数:

1、函数指针或函数引用

2、复杂的 inline 函数体

3、虚函数

4、递归函数

那些函数被声明为 inline 通常会被编译器优化呢?

即单个函数体内,具备少量的 for 循环,逻辑结构简单,嵌套层数少,并且函数体代码行数不多,几行以内的最佳。

例如:

一个简单的加法、乘法、除法函数。

即:

不满足下面这个条件:

inline 函数实现非常复杂,包含大量的代码逻辑、循环或递归等,编译器可能认为将其内联展开会导致代码膨胀,影响可执行文件的大小和性能。

但需要注意一点,inline 是否生效取决于编译器的代码优化级别、跟编译器对于 inline 函数展开的文件大小、及性能的评估。

一个形象的例子:

#include <stdio.h>class Foo final {
public:Foo();void Say();
};inline Foo::Foo() {printf("%s\n", ".ctor");
}inline void Foo::Say() {printf("%s\n", "hello world!");
}int main() {Foo foo;foo.Say(); return 0;
}

在未打开优化的情况下:

内链函数不会被编译器优化

.LC0:.string ".ctor"
Foo::Foo() [base object constructor]:push    rbpmov     rbp, rspsub     rsp, 16mov     QWORD PTR [rbp-8], rdimov     edi, OFFSET FLAT:.LC0call    putsnopleaveret
.LC1:.string "hello world!"
Foo::Say():push    rbpmov     rbp, rspsub     rsp, 16mov     QWORD PTR [rbp-8], rdimov     edi, OFFSET FLAT:.LC1call    putsnopleaveret
main:push    rbpmov     rbp, rspsub     rsp, 16lea     rax, [rbp-1]mov     rdi, raxcall    Foo::Foo() [complete object constructor]lea     rax, [rbp-1]mov     rdi, raxcall    Foo::Say()mov     eax, 0leaveret

在打开优化的情况下:

内链函数被优化掉到调用方函数之中了

main:                                   # @mainpush    raxmov     edi, offset .L.str.1call    putsmov     edi, offset .L.str.2call    putsxor     eax, eaxpop     rcxret
.L.str.1:.asciz  ".ctor".L.str.2:.asciz  "hello world!"

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

相关文章:

  • 做网络推广阿里巴巴还是网站好品牌推广策划营销策划
  • 衡水移动网站建设报价免费制作网站平台
  • php在线做网站注册一个域名需要多少钱
  • 西安网站建设公司云网软文的本质是什么
  • 建筑工程防护网肇庆seo
  • 抖音电脑网页版入口佛山seo代理计费
  • 网站上面图片上传尺寸网站权重怎么看
  • 个人网站建设方案书例文外链发布的平台最好是
  • 做网站的版式会侵权吗网页设计制作网站
  • 成都网站建设公司有哪些wordpress seo教程
  • 各网站的风格及特点网站维护
  • 智慧团建pc网页版百度seo刷排名网址
  • 柳州做网站的建立网站平台需要多少钱
  • 做网站营销公司网络营销课程有哪些
  • 网络网站建设推广首页图片点击率如何提高
  • 郑州seo优化公司南宁seo怎么做优化团队
  • 惠州网站推广东莞网站推广技巧
  • 南开网站建设公司临沂seo推广外包
  • 生成论坛网站百度云搜索引擎入口百度网盘
  • 11个免费网站空间2022磁力链接搜索引擎推荐
  • 用r语言 做网站点击热力图建设公司网站大概需要多少钱?
  • 足球外围网站怎么做seo的收费标准
  • 建设旅游业网站目的搜一搜搜索
  • 南宁网站建设哪家网络营销典型案例
  • 公司管理系统框架seo对网络推广的作用是什么?
  • 易语言如何做网站吗网络营销概念是什么
  • 网站可以做哪些广告语汕头网站建设优化
  • 绍兴网站建设优化seo网站
  • 重庆seo网站建设快速排名提升
  • wordpress集成qq登录seo技术顾问阿亮