c,结构后面的函数定义

时间:2014-04-10 16:05:01

标签: c freebsd

  675  * Check the validity of an ACL for a file.
  676  */
  677 int
  678 ufs_aclcheck(ap)
  679         struct vop_aclcheck_args /* {
  680                 struct vnode *vp;
  681                 acl_type_t type;
  682                 struct acl *aclp;
  683                 struct ucred *cred;
  684                 struct thread *td;
  685         } */ *ap;
  686 {
  687 
  688         if ((ap->a_vp->v_mount->mnt_flag & (MNT_ACLS | MNT_NFS4ACLS)) == 0)
  689                 return (EOPNOTSUPP);
  690 
  691         if (ap->a_type == ACL_TYPE_NFS4)
  692                 return (ufs_aclcheck_nfs4(ap));
  693 
  694         return (ufs_aclcheck_posix1e(ap));
  695 }
  696 
  697 #endif /* !UFS_ACL */

此代码来自Freebsd UFS源代码。 这个功能很奇怪。 在函数名之后,有一个结构被定义。这是怎么回事? 感谢

1 个答案:

答案 0 :(得分:6)

这是一种编写C函数的旧方式,您可以在其中定义如下函数:

void foo(a)  /* Function and its arguments */
   int a; /* Define the type of the arguments */
{
  // Function body
}

删除评论后,您在函数中拥有的内容:

int ufs_aclcheck(ap)
    struct vop_aclcheck_args * ap;
{
   // Function body
}