关于Inline函数的问题

xiang1358 2008-07-03 09:26:36
我在一个编码规范文档中看到说
不要在return语句中使用Inline函数。

为什么?
...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
clannad2 2008-07-03
  • 打赏
  • 举报
回复
不是很懂!
simo110 2008-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iu_81 的回复:]
一个内联函数有多条return语句
[/Quote]

恐怕不是这个原因吧?

楼主说的是这个意思吧
:

inline int max(int a, int b)
{
return (a > b) ? a : b;
}

int fun()
{
..........
return max(xx, xxx);
}


成功的inline函数都会在其调用处展开
macfan 2008-07-03
  • 打赏
  • 举报
回复
内联函数实际上是一种用空间换时间的方案,至于LZ说的那句没看明白.

在内联函数扩展时也进行了实参与形参结合的过程,先将实参名(而不是实参值)与函数体中的形参处处替换,然后搬到调用处,从用户角度看,调用内联函数和一般没有任何区别.
lionc650 2008-07-03
  • 打赏
  • 举报
回复
学习~
iu_81 2008-07-03
  • 打赏
  • 举报
回复
class FooClass {

...

int fooMethod(char* p) {

if (p[0] == '\0')

return -1;



doSomething();

return 0;

}

...

};

iu_81 2008-07-03
  • 打赏
  • 举报
回复
class FooClass {

...

int fooMethod(char* p) {

int return_value;



if (p[0] == '\0') {

return_value = -1;

} else {

doSomething();

return_value = 0;

}

return return_value;

}

...

}; //return语句集合成一条

K行天下 2008-07-03
  • 打赏
  • 举报
回复
inline函数的规则如下:
规则一、一个函数可以自已调用自已,称为递归调用(后面讲到),含有递归调用的函数不能设置为inline;
规则二、使用了复杂流程控制语句:循环语句和switch语句,无法设置为inline;
规则三、由于inline增加体积的特性,所以建议inline函数内的代码应很短小。最好不超过5行。
规则四、inline仅做为一种“请求”,特定的情况下,编译器将不理会inline关键字,而强制让函数成为普通函数。出现这种情况,编译器会给出警告消息。
规则五、在你调用一个内联函数之前,这个函数一定要在之前有声明或已定义为inline,如果在前面声明为普通函数,而在调用代码后面才定义为一个inline函数,程序可以通过编译,但该函数没有实现inline。


有时候是可以用的,比如
inline int max(int a, int b)

{

if(a>b)
return a;
else
return b;

}

int max1(int a,int b)
{return max(a,b);}

只是打个比方, 不用的原因是inline函数会在代码处展开
Yoon_EunHae 2008-07-03
  • 打赏
  • 举报
回复
... 听不懂
xiang1358 2008-07-03
  • 打赏
  • 举报
回复
一个内联函数有多条return语句
===============================
不太明白,能不能说清楚一点,谢谢!
lionc650 2008-07-03
  • 打赏
  • 举报
回复
为啥ls两位说的我都听不懂呢。。能否举例呢?
iu_81 2008-07-03
  • 打赏
  • 举报
回复
一个内联函数有多条return语句

64,686

社区成员

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

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