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

用source insigt 看Linux0.11内核完全注释中的内核源码时,发现了一个有关c语言语法的奇怪现象。大虾请进,帮小弟解解惑。有重谢!

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

    本文导语:  现象如下: 我先用source insight打开了源码,找到了fs/buffer.c ,然后看到了函数int sys_sync (void) ->sync_inodes() ->wait_on_inode() ->sleep_on()->panic()->sys_sync() (这里说明一下'->'符号表示函数调用)。注意到函数sys_sync (void)最后...

现象如下:
我先用source insight打开了源码,找到了fs/buffer.c ,然后看到了函数int sys_sync (void) ->sync_inodes() ->wait_on_inode() ->sleep_on()->panic()->sys_sync()
(这里说明一下'->'符号表示函数调用)。注意到函数sys_sync (void)最后又调回到自己。有必要提出的就是在panic()函数所在的文件中在它之前还有这么一条语句void sys_sync(void); 。

请教:
这属不属于c语言中所说的递归调用?如果不是又做何解释呢?再有,在c语言语法中是否可以实现两函数互调,如两个函数A,B,A调用B,然后B再调用A?


|
int sys_sync (void) ->sync_inodes() ->wait_on_inode() ->sleep_on()->panic()->sys_sync() 

你这条路里肯定发生过条件跳转,不可能所有的sys_sync 都走回来吧。
可能是某些条件下又走回来而已。

|

完全可以。
而且,从语法上来说,只要调用的函数存在、调用的方式和函数声明一致,就没有问题。
谁调用谁都可以,即使形成了死循环,也完全符合语法。

|
有什么关系呢?只要不变成死循环
c语言是灵活的。
不要只关注书本上的例子。

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












  • 相关文章推荐
  • java命名空间java.lang.annotation枚举retentionpolicy的类成员方法: source定义及介绍
  • source命令的问题
  • java命名空间javax.tools枚举javafileobject.kind的类成员方法: source定义及介绍
  • 关于linux source命令的问题
  • java命名空间javax.tools枚举standardlocation的类成员方法: source_output定义及介绍
  • source
  • java命名空间javax.tools枚举standardlocation的类成员方法: source_path定义及介绍
  • 源码分析工具 Source Navigator NG
  • java命名空间javax.management类notification的类成员方法: source定义及介绍
  • jQuery Annotated Source
  • java命名空间java.awt.image.renderable类parameterblock的类成员方法: sources定义及介绍
  • 数据库 iis7站长之家
  • java命名空间javax.swing.plaf.basic类basictreeui.mouseinputhandler的类成员方法: source定义及介绍
  • shell脚本中执行source命令
  • java命名空间java.util类eventobject的类成员方法: source定义及介绍
  • shell脚本中source问题
  • java命名空间javax.xml.transform接口source成员方法: getsystemid定义参考
  • 源代码管理分析工具 Source Navigator
  • java命名空间javax.xml.transform接口source成员方法: setsystemid定义参考
  • 无法source hosts文件
  • CSS3 border-image-source 属性
  • 请教一个shell中source使用问题


  • 站内导航:


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

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

    浙ICP备11055608号-3