2016 - 2024

感恩一路有你

内联函数调用前必须完整吗 为什么C 使用push函数?

浏览量:1854 时间:2023-04-20 10:19:49 作者:采采

为什么C 使用push函数?

c提供了一个内联函数来减少函数调用的开销。内联函数是被调用时在行中扩展的函数。

内联函数相比宏定义增加空间开销吗?

学习内联函数时,每次调用内联函数都要复制代码,这样会增加程序的总代码,消耗更多的内存空间。但是在定义宏的时候,调用代码会在预处理的时候被宏代替。因此,这里的空间开销也会增加。

为什么只说内联函数增加开销,而不说宏定义?

Inline function是C引入的一种机制,用来解决使用宏定义的一些缺点。

1.为什么要引入内联函数(内联函数的作用)?

用它来代替宏定义,消除宏定义的缺点。宏定义是由预处理器实现的,替换了一些简单的字符,无法测试参数的有效性。此外,它的返回值可以 t被强制转换成可转换类型,C引入了类和类的访问控制,所以它可以 当涉及到类的受保护成员和私有成员时,不要用宏定义操作。

与宏定义相比有什么优势?

(1)将1)内联函数代码放入符号表中,使用时像宏一样展开,无需调用的开销非常高效;

(2)内联函数是实函数,需要进行一系列的数据类型检查;

(3)作为类的成员函数,内联函数可以使用该类的受保护成员和私有成员;

使用函数的地方

(1)凡是使用宏定义的地方都可以使用inline函数;

(2)读写一个类的私有成员或保护成员作为类成员接口函数;

4.为什么可以 不是所有的函数都可以写成内联函数吗?

内联函数是以代码复杂度为代价的,节省了函数调用的开销,提高了执行效率。因此,一方面,它不 如果内联函数中的代码执行时间大于函数调用开销,这没有多大意义;另一方面,每次调用内联函数都需要复制代码,这会消耗更多的内存空间,因此在下列情况下不适合使用内联函数。

(1)函数体中的代码较长,会导致内存消耗的代价;

(2)函数体内有循环,函数的执行时间比函数调用的时间长;

另外,类的构造函数和析构函数不应该写成内联函数。

5.内联函数和宏定义的区别

(1)内联函数在编译时扩展,宏在预编译时扩展;

(2)内联函数直接嵌入目标代码,宏只是简单的做文本替换;

(3)内联函数有类型检测和语法判断功能,而宏没有;

(4)内联函数是函数,宏不是;

(5)定义宏时注意书写(参数要括起来),否则容易产生歧义,内联函数不会有歧义;

函数 开销 代码 函数调用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。