2011-12-17 78 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.

我不建议写这种类型的声明,因为它是完全过时,很可能会迷惑人阅读你的代码是谁不熟悉的语法。