2011-02-17 46 views
1
/* 
    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行獲取信息......這對我來說很奇怪......這個函數標題的含義是什麼? (我的意思是什麼是返回值,輸入參數是什麼?) 謝謝大家。幫我理解這個函數標題。代碼來自FreeBSD 8源代碼UFS部分

回答

7

返回類型爲int,它需要一個參數,一個名爲struct vop_create_args*ap

到它等同。這是K & R表示法。

+0

謝謝。非常有幫助 – 2011-02-17 02:50:19

2

這是一種舊式(預原型)函數聲明。該功能是本地到當前轉換單元,返回intap是它接受的參數,它的類型:

struct vop_create_args * 

所有其他的東西只是評論,想必呼應的的實際定義結構,以便信息也在本地保存(所以懶惰的編碼器不必去尋找它,如果實際的和本地的定義不合適,這是一種有點危險的做法)。

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