inline函数怎么调用?

pywepe 2009-11-13 09:33:10
是不是跟静态一样

又:: 调用呢?

...全文
273 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghost0088 2009-11-13
  • 打赏
  • 举报
回复
有些情况编译器无法内联,如:递归
老邓 2009-11-13
  • 打赏
  • 举报
回复
切记:inline 只是建议编译器将该函数内联!
不要假定inline声明的函数,都会成为内联函数!!


inline的作用既然如此,那楼主的问题就不是问题了。
  • 打赏
  • 举报
回复
内联就是在每个调用处,编译器预展开,省去了函数调用的入栈处理。
Caballeroo 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ghost0088 的回复:]
不是,跟正常函数一样调用。
inline  (_forceinline)这个关键字只是告诉编译器,这个函数申请内联,具体是否编译成内联是编译器决定的。
你没有理解内联的含义吧,正常的函数调用是将指令指针指向函数地址来执行函数内部的代码,执行完后后在返回调用函数的地方,内联后编译器直接把函数内部代码拷贝到调用内联函数的地方,少做了一些call,ret时需要做的工作,但代码量可能变大(每个调用内联函数的地方都把这部分代码拷贝过来,相比普通函数只有一份代码)。
[/Quote]


调用是一样的,但是内联函数直接将函数部分的代码拷贝到被调用的位置,这样就减小了函数调用时候的开销,提高了效率。

但是内联函数的调用和普通函数一样,首先也要进行参数类型检查,正确合法之后才进行一系列的检查。
ghost0088 2009-11-13
  • 打赏
  • 举报
回复
不是,跟正常函数一样调用。
inline (_forceinline)这个关键字只是告诉编译器,这个函数申请内联,具体是否编译成内联是编译器决定的。
你没有理解内联的含义吧,正常的函数调用是将指令指针指向函数地址来执行函数内部的代码,执行完后后在返回调用函数的地方,内联后编译器直接把函数内部代码拷贝到调用内联函数的地方,少做了一些call,ret时需要做的工作,但代码量可能变大(每个调用内联函数的地方都把这部分代码拷贝过来,相比普通函数只有一份代码)。
ZXW0521 2009-11-13
  • 打赏
  • 举报
回复
调用方法和是否内联没有关系
zdeepblue 2009-11-13
  • 打赏
  • 举报
回复
和调用函数一样啊
只有编译器知道是否真的要inline,你不用太关心
wuyu637 2009-11-13
  • 打赏
  • 举报
回复
正常调用
jenf 2009-11-13
  • 打赏
  • 举报
回复
和静态函数不一样,如果是成员内联函数,是需要通过对象或对象指针想普通成员函数一样调用的。
phpjspasp 2009-11-13
  • 打赏
  • 举报
回复
和普通的函数一样调用。

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧