帮我理解这个函数的标题。代码来自 FreeBSD 8 源代码 UFS 部分
/*
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 行的信息...这对我来说很奇怪..这个函数标题是什么意思? (我的意思是,什么是返回值,什么是输入参数?) 谢谢大家。
/*
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 }
Please help me to get information from line 182-189...this is strange for me.. What is this function title means? (I mean, what is return value, what is input parameter?)
Thank you all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
返回类型为
int
,它采用一个参数,即名为ap
的struct vop_create_args*
。这是 K&R 表示法。The return type is
int
and it takes one argument, astruct vop_create_args*
namedap
. This is K&R notation.这是一个旧式(前原型)函数声明。该函数是当前翻译单元的本地函数,返回一个
int
,ap
是它接受的参数,其类型为:所有其他内容只是注释,大概是回显结构的实际定义,以便信息也保存在本地(因此懒惰的编码人员不必去寻找它,如果实际和本地定义超出了范围,这是一种有点危险的做法步)。
它相当于:
It's an old-style (pre-prototype) function declaration. The function is local to the current translation unit, returns an
int
,ap
is the parameter it accepts and it's of the type:All that other stuff is just comments, presumably echoing the actual definition of the structure so that the information is held locally as well (so a lazy coder doesn't have to go looking for it, a somewhat dangerous practice if the actual and local definitions get out of step).
It's equivalent to: