2016-03-08 71 views
0

我最近在C中看到了下面的代碼,據說這是有效的,但我不確定。聲明這個規範的功能

int max(x,y) 
    int x,y; 
    { 
    return (x>y)?x:y; 
    } 

這種函數原型是否有效?如果是這樣,請給出一些參考,以更多地瞭解這一點。

+0

[見這也(http://stackoverflow.com/questions/1630631/alterna TE-C-語法換函數聲明-使用情況)。這個問題之前已經被問過很多次了。 – Lundin

回答

5

這是舊式的「K & R」定義功能的方式。新的方式更好,所以不要自己寫這樣的代碼。

+0

哦,我明白了。謝謝。 –

2

此代碼是有效的,它只是一個很老的標準。

如今在函數聲明中的參數類型聲明這些參數名稱的前面:

int main(int argc, char **argv) 

但多年以前,有另一個標準在句法是不同的:你必須指定類型像這樣:

int main(argc, argv) 
    int argc; char **argv; 

所以,沒有什麼奇怪在這裏,不同的標準提供不同的語法