C 和 C++ 中的mian函数解析

来源:互联网 发布:js阻止a标签1次跳转 编辑:程序博客网 时间:2024/04/28 02:35

main函数的返回值:

    return返回的数值由程序的作者自定。返回不同的值可以代表不同的含义,一般是代表出错的原因,传统上返回0代表程序正常结束。
    main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出,否则代表程序异常退出。
    在C89(C语言的早期标准)中,main()是可以接受void返回值的。Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是void main()。不过在最新的C99标准中,只有以下两种定义方式是正确的:

int main(void)int main(int argc, char *argv[])

    如果你不需要从命令行中获取参数,请用int main( void );否则请用int main(int argc, char *argv[])
    main函数的返回值类型必须是int,这样返回值才能传递给操作系统。
    如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中(如exe文件)加入return 0,表示程序正常退出。注意,vc6不会在生成的目标文件中加入return 0。不过,gcc3.2Linux下的 C 编译器)会在生成的目标文件中加入return 0
    C++98C++语言的一个标准)中定义了如下两种main函数的定义方式:

int main()int main(int argc, char *argv[])int main()//等同于C99中的int main(void);

    int main(int argc, char *argv[])的用法也和C99中定义的一样。同样,main函数的返回值类型也必须是int。如果main函数的末尾没写return 语句,C++98规定编译器要自动在生成的目标文件中加入return 0。同样,vc6也不支持这个特性,但是g++3.2Linux下的C++编译器)支持。
    在CC++中,不接收任何参数也不返回任何信息的函数原型为void foo(void);main函数的返回值应该定义为int类型,CC++标准中都是这样规定的。虽然在一些编译器中,void main可以通过编译(如vc6),但并非所有编译器都支持void main,因为标准中从来没有定义过void maing++3.2中如果main函数的返回值不是int类型,就根本通不过编译。而gcc3.2则会发出警告。所以,如果你想你的程序拥有很好的可移植性,请一定要用int main
    main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出,否则代表程序异常退出。
    任何一个C++程序都必须定义一个main函数,它的返回类型总是int类型。这个函数由操作系统来调用,在main函数执行完以后,程序也就终止了。main也可以使用return向操作系统返回一个值,使用操作系统的命令可以检测main的返回值。一般约定在main返回0时,表示程序运行过程中没有出现错误,其它非零值表示程序出现异常情况。
    在大多数系统中,main函数的返回值是一个状态指示器。返回值0往往表示main函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户main函数返回什么内容。