c,结构后面的函数定义

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源代码。 这个function看起来很奇怪 在函数名之后,有一个结构被定义。 这是怎么回事? 谢谢

这是一种编写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 }