【问题标题】:Help me understand this function title. Code from FreeBSD 8 source code UFS part帮助我理解这个函数标题。代码来自 FreeBSD 8 源代码 UFS 部分
【发布时间】:2011-02-17 02:40:21
【问题描述】:
 /*
  180  * Create a regular file
  181  */
  182 static int
  183 ufs_create(ap)
  184         struct vop_create_args /* {
  185                 struct vnode *a_dvp;
  186                 struct vnode **a_vpp;
  187                 struct componentname *a_cnp;
  188                 struct vattr *a_vap;
  189         } */ *ap;
  190 {
  191         int error;
  192 
  193         error =
  194             ufs_makeinode(MAKEIMODE(ap->a_vap->va_type, ap->a_vap->va_mode),
  195             ap->a_dvp, ap->a_vpp, ap->a_cnp);
  196         if (error)
  197                 return (error);
  198         return (0);
  199 }

请帮我从第 182-189 行获取信息...这对我来说很奇怪.. 这个函数标题是什么意思? (我的意思是,什么是返回值,什么是输入参数?) 谢谢大家。

【问题讨论】:

    标签: c unix kernel freebsd


    【解决方案1】:

    返回类型是int,它有一个参数,一个名为apstruct vop_create_args*。这是 K&R 表示法。

    【讨论】:

      【解决方案2】:

      这是一个旧式(原型前)函数声明。该函数是当前翻译单元的本地函数,返回一个intap 是它接受的参数,它的类型:

      struct vop_create_args *
      

      所有其他东西都只是 cmets,大概是与结构的 实际 定义相呼应,以便信息也保存在本地(因此懒惰的编码人员不必去寻找它,如果实际定义和本地定义不一致,这是一种有点危险的做法)。

      相当于:

      static int ufs_create (struct vop_create_args *ap) { ...
      

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多