2011-04-09 79 views
0

可能重複:
C function syntax, parameter types declared after parameter list
What is useful about this C syntax?
Why are declarations put between func() and {}?特殊參數聲明功能

嗨,大家好,

我下載glibc的。我想重用這個庫中的一些代碼部分,但是這個代碼中有些怪異的東西。實際上,參數聲明很奇怪。在que parantheses之後聲明的參數的類型。我以前從來沒有見過。這種聲明是什麼?我無法編譯它。

void 
_ufc_doit_r(itr, __data, res) 
    ufc_long itr, *res; 
    struct crypt_data * __restrict __data; 
{ 
/*CODE HERE */ 
} 

回答

2

這是爲參數聲明數據類型的舊風格。這是現代equivelent是:

void 
_ufc_doit_r(
    ufc_long itr, 
    struct crypt_data * __restrict __data, 
    ufc_long res 
) 
{ 
/*CODE HERE */ 
} 
4

這就是所謂的 「K & R」 風格,從Kernighan和Ritchie,誰寫的書The C Programming Language。在該書的第一版中,上面是只有方式來聲明參數的類型。我相信第二版使用標準的風格,類型和名稱都括號內:

void 
_ufc_doit_r(ufc_long itr, 
      struct crypt_data * __restrict __data, 
      ufc_long *res) 
{ 
/*CODE HERE */ 
} 

ķ& [R風格聲明參數的一個非常古老的風格,但有些人仍然使用它使他們的代碼可以編譯在很老的編譯器上。