当前位置:  技术问答>linux和unix

求助:驱动中看到一种平常没有见到的RETURN方法:return 判断语句

    来源: 互联网  发布时间:2016-11-05

    本文导语:  static inline int is_lastmsg(struct s3c24xx_i2c *i2c) { return i2c->msg_idx >= (i2c->msg_num - 1); } 请教高手:           这种return的具体是什么意思?这样写只为了使程序简练还是有别的用途? ps:    我百度过这个问题,...

static inline int is_lastmsg(struct s3c24xx_i2c *i2c)
{
return i2c->msg_idx >= (i2c->msg_num - 1);
}

请教高手:
          这种return的具体是什么意思?这样写只为了使程序简练还是有别的用途?
ps:
   我百度过这个问题,没有查到结果,不得已才来请教,谢谢啦。

|
这个可能是C语言标准里面有定义的了的吧,从bool到 int的转换,可以找下标准来看看。

我记得c语言一开始好像说是没有bool类型的,所以以前那些人写一些库的时候都是自己定义了TRUE和FALSE的。bool是后来标准里面才加的。

关于这种转换估计各个编译器也都肯定有定义的吧,就像楼上各位所说的 0或者1,不过可个编译器有没有不同的支持就不知道了,比如bool在C++ 里面是一个char的大小,到 int是要扩展转换的。

如果楼主把代码改为

if( i2c->msg_idx >= (i2c->msg_num - 1))
     return 1;
else 
     return 0;

那也是一种很好的写法,至少可以确保程序像自己想要的那样工作。

不过别人确定这个语言或者平台有定义(方正我是不是很确定)这种转换就是返回0或者1,那么写也是无所谓的。

===============我来写个gcc的代码,可以看一下=============
int test(int i)
{
  return i >30;
}

int main(void)
{
  
  printf ("%dn", test(2));
 return 0;
}



080483c4 :
 80483c4: 55                    push   %ebp
 80483c5: 89 e5                 mov    %esp,%ebp
 80483c7: 83 7d 08 1e           cmpl   $0x1e,0x8(%ebp)
 80483cb: 0f 9f c0              setg   %al
 80483ce: 0f b6 c0              movzbl %al,%eax
 80483d1: 5d                    pop    %ebp
 80483d2: c3                    ret    


==============
iintel 手册上关于setg的指令的解释。
      Sets the byte in the operand to 1 if the Sign Flag equals the
      Overflow Flag, otherwise sets the operand to 0.


可以知道确实不是返回0就是返回到1的,
从movzbl %al,%eax 我们也可以知道,bool类型确实当作一个char大小来处理,然后会有个从char到int的转换的。




    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助shell 如何判断目录是否空,或者不为空?
  • 新手求助:如何判断串口数据已结束
  • 求助:如何用javascript 判断 表单中 单选项目 是否被选择了?
  • 求助!JSP判断查询出的数据库记录数的问题!
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3