社区
C语言
帖子详情
关于内联函数
flycat1
2002-07-17 03:06:44
小弟对内联函数的作用不是很明白,为什么要使用内联函数以及在什么情况下需要使用它呢,希望各位大侠能帮帮我。
...全文
39
22
打赏
收藏
关于内联函数
小弟对内联函数的作用不是很明白,为什么要使用内联函数以及在什么情况下需要使用它呢,希望各位大侠能帮帮我。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangcanhui
2002-07-18
打赏
举报
回复
内联函数主要是在编译时将函数调用指针与函数体相连接,提高运行的效率,但以
占用内存为代价
born_in70s
2002-07-18
打赏
举报
回复
>> you can get address of an inline function.
的确, 因为被inline 的函数体仍作为一个编译单位存在. 编译器视
情况决定是否在函数调用处将其inline 进来. 如果我们通过函数指针
来调用这个函数, 那这个调用肯定不会被inline 了.
elvahuang
2002-07-18
打赏
举报
回复
gz
ajoo
2002-07-18
打赏
举报
回复
No, you can get address of an inline function.
It is only a suggestion to the compiler, not a command.
hellwolf
2002-07-18
打赏
举报
回复
编译器看情况
如果出现递归的话,编译器可不会知道函数何时结束,所以就避开内联即使用inline关键字
bestone
2002-07-18
打赏
举报
回复
需要取函数的地址时也不可以用内联函数。
inevity
2002-07-18
打赏
举报
回复
inline函数确实比c中的宏好。他既有类型检查,有没有函数调用的堆栈的建立与返回的开销。编译器不过是copy了一份inline代码。当然若这个line函数过大,会占据很大的内存,得不偿失。在类中的成员函数,编译器已默认为inline的了。
maoxianwang
2002-07-18
打赏
举报
回复
有收获
ajoo
2002-07-18
打赏
举报
回复
don't have to use inline. Compiler can do inlining better than you can.
So why bother?
glassshark
2002-07-17
打赏
举报
回复
1。在速度要求比较快的场合使用,但要求函数规模比较小,使用比较频繁。
2。编译器将去掉出入栈的调用及清理代码,加快函数调用。
3。在利用合理时将减少代码规模,如代码量小于出入栈及清理代码时。
4。在循环及递归中最好不要使用,而且递归中不可能是内联的,因为递归的规模(即函数调用次数)在编译时是无法确定的,所以不可能将其替换成确定次数的函数体代码。
5。是否实现内联全由编译器最终决定,你的说明只是一个“建议”,编译器将根据其内在规则(取决于具体编译器的具体实现)来确定是否实现内联。
6。比宏定义好,可以真正实现类型检查,而且不会有宏调用参数的副作用。
7。在类中使用比较多,如果在类说明中直接定义函数体,编译器即视你说明了一个内联函数,但有关规则同上。
8。其它,记不起了。
born_in70s
2002-07-17
打赏
举报
回复
inline 尤其对 C++ 代码的优化有好处.
fanqing
2002-07-17
打赏
举报
回复
内联函数就是使每个对象都有内联函数的一个副本,非内联就是当对象用这个函数通过连接连接此函数.
rediori
2002-07-17
打赏
举报
回复
不过inline大部分是由编译器决定的
编译器一般不会允许一个很大的函数内联,即使你声明了是inline
但一些没有声明的函数, 但是调用了次数很多的情况下编译器会设置为内联
司马青衫依旧
2002-07-17
打赏
举报
回复
前面两位virginsoldier(北欧野马——哈根) 和 fangrk(加把油,伙计!)老兄说得很对!
内联函数,常常用于该函数代码短小,而经常被调用;这样每次调用的花销很大(虽然函数很小,但是调用时要保存此时的环境如堆栈等,而函数返回又要恢复)。为了避免这种不协调,才有了内联函数。
我觉得他似乎就像“宏”,只是把函数的代码插入的调用的地方,并不是真正的函数调用。(这种比喻不知道妥当否)
Faccey
2002-07-17
打赏
举报
回复
内联函数确实可以提高效率,因为和一般的函数调用相比,省去了调用和返回的时间,但是它不能在需要被频繁调用的场合下使用,那会使程序大小急速膨胀,比如在递归调用中
司马青衫依旧
2002-07-17
打赏
举报
回复
前面两位virginsoldier(北欧野马——哈根) 和 fangrk(加把油,伙计!)老兄说得很对!
内联函数,常常用于该函数代码短小,而经常被调用;这样每次调用的花销很大(虽然函数很小,但是调用时要保存此时的环境如堆栈等,而函数返回又要恢复)。为了避免这种不协调,才有了内联函数。
我觉得他似乎就像“宏”,只是把函数的代码插入的调用的地方,并不是真正的函数调用。(这种比喻不知道妥当否)
Faccey
2002-07-17
打赏
举报
回复
内联函数确实可以提高效率,因为和一般的函数调用相比,省去了调用和返回的时间,但是它不能在需要被频繁调用的场合下使用,那会使程序大小急速膨胀,比如在递归调用中
Hmilu
2002-07-17
打赏
举报
回复
我也来学学!
bluedodo
2002-07-17
打赏
举报
回复
到底是用"宏"还是用"INLINE",其实我认为都有它的好处,但我还是认为少用为好,除非它给你带来的益处能抵消因内联函数所带来体积增大的开销.
earthharp
2002-07-17
打赏
举报
回复
inline 函数有一套复杂的运作,我正有意思看看。
加载更多回复(2)
叙述讲解C++编程
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、
内联函数
、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。
C++
内联函数
详解
这里写目录标题
内联函数
内联函数
和宏
内联函数
的定义将
内联函数
的定义放入头文件慎用内联递归函数和虚函数的内联
内联函数
在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) { return a > b ? a : b; } 为这么一个小的操作定义一个函数的好处有: 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多。 如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多。 使用函数可以确保统一的行为,每个测试
《C经典面试》编译链接、指针、内存bug、函数、其它
课程内容: 1.编译链接:编译链接过程、预...函数:自定义函数、
内联函数
、回调函数、变参函数、递归函数、库函数等 5.其它:自动类型转换、数据溢出、结构体对齐、volatile、typedef、assert宏、逗号表达式、++/--等
关于
内联函数
的优点以及跟宏相比存在的优势
内联函数
相对于普通的函数存在的好处: 消除函数调用时的时间开销,
内联函数
从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。因为函数调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行。
内联函数
相比于宏定义的的好处: 1.
内联函数
在运行时可调试,而宏定义不可以; 2.编译器会对
内联函数
的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.
内联函数
可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为
内联函数
...
关于
内联函数
inline
c++中关于
内联函数
: 我不知道AS中是否存在默认的
内联函数
??即AS3.0类中定义的函数都是类联函数?? 否则那效率就是相当的低了!!在C++中,定义在类体中的函数都是
内联函数
!! 在c++类外部定义的函数!分两种情况:: 1: 在类体中声明该函数为 inline 在在类外中定义 2: 在类中声明函数时不加上inline 在类外定义函数时加上inline
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章