如果我在C中有一个int main(void)
函数,它应该有return 0
吗?如果是,为什么?
int main(void) {
printf("Does this function require return value");
return 0; // is this correct?
}
返回0通常表示成功。
这里有一篇有趣的文章讨论这个问题:http://www.eskimo.com/~scs/reads/voidmain.960823.html
C编程语言允许退出或从主函数返回的程序通过返回整数或返回宏EXIT_success和EXIT_failure来表示成功或失败。在类Unix系统上,它们分别等于0和1。C程序也可以使用exit()函数指定整数状态或退出宏作为第一个参数。http://en.wikipedia.org/wiki/Exit_status#C_language
是的,在C89下,main()是可以接受的,尽管建议使用C99标准,在C99标准下只有这些是可以接受:
int main ( void )
int main ( int argc, char *argv[] )
上面的一些细微变化是可以接受的,其中int可以被定义为int的typedef名称所取代,或者argv的类型可以写成char**argv,依此类推
第一个选项用于不需要访问命令行参数的情况。
名称argc和argv是可以根据需要更改的标识符,但坚持使用argc/argv是惯例。
main()的返回类型必须始终是int,这允许将返回代码传递给调用程序。
在C89中,main()末尾的return语句是必需的,而在C99中,如果不存在return语句,则隐含返回0。然而,始终使用return语句是一种很好的编程实践,即使您不必这样做。