2011-12-17 70 views
3

當我瀏覽解壓的源代碼,我encoutered一個主要功能如下,這個特殊的主要功能有什麼特別的嗎?

int MAIN(argc, argv) /* return PK-type error code (except under VMS) */ 
    int argc; 
    char *argv[]; 
{ 
    int r; 

    CONSTRUCTGLOBALS(); 
    r = unzip(__G__ argc, argv); 
    DESTROYGLOBALS(); 
    RETURN(r); 
} 

我認爲在編譯這樣定義的主要功能將無法通過。但我的C編譯器不會抱怨它。爲什麼它在語法上是正確的?

謝謝。

+3

由於非常陳舊的語言規範原因,允許使用它,但我不知道任何人是否真正編碼,因此不使用此語法是個好主意 – shuttle87 2011-12-17 08:01:36

回答

6

這是舊的K & R風格函數聲明。所以,是的,它是有效的C,abeit 很老 C.

我不建議寫這種類型的聲明,因爲它是完全過時,很可能會迷惑人閱讀你的代碼是誰不熟悉的語法。