inline转为static?

中才德创 2009-07-11 10:38:52
<<C++对象模型>>P184上讲:“处理一个inline函数,分析其定义,以决定它的本质的能力。如果因其复杂度,判断不可为inline,它会被转为一个static函数。

大意是说,一个函数申明为inline,最终编译器未必将其界定为inline,但为什么说转为static
...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwlchristy 2009-07-12
  • 打赏
  • 举报
回复
inline函数是将该函数在调用点处展开,因此不适合较大较复杂的函数。使用static可保证在各次调用的一致!
windsting 2009-07-11
  • 打赏
  • 举报
回复
这就涉及到 static 这个关键字的意义了,
在这个情况下, static 的意义就是,这个声明中的符号(这里是个函数)具有文件作用域,
就是说,对于其它的编译单元(.cpp .cc文件),它不可见,
因此即使是在头文件里,也不会引起多次定义的问题。
就这么回事。

要是我没记错的话,即便该函数确定了可以成为 inline 的,
但你对其取地址(或者类似操作)了,还是会声称一份代码,
并且搞成 static的,使其具有文件作用域。
pengzhixi 2009-07-11
  • 打赏
  • 举报
回复
看来我理解得不够深刻啊!!
pengzhixi 2009-07-11
  • 打赏
  • 举报
回复
让所有调用这个函数的地方共享同一段代码
应该是保持一致性吧
Walf_ghoul 2009-07-11
  • 打赏
  • 举报
回复
局限其作用域在本文件内。。。
blh 2009-07-11
  • 打赏
  • 举报
回复
。。。。,原文
baihacker 2009-07-11
  • 打赏
  • 举报
回复
...如果不static,在其它编译单元也可见...结果就重定义了呗...

64,635

社区成员

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

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