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