为什么main在它面前有一个int,为什么我的教授可以排除它?

时间:2013-04-21 21:47:11

标签: c++ c visual-studio-2010 visual-c++

所以在我教授的幻灯片中,他只是给出了一些例子:

main()
{...
}

右?但是,当我把它放在visual studio中时,它会给出一个错误,当我把int放在main的前面时它会起作用。 为什么我的教授不会把主人放在主人面前? 可以主要是任何其他类型的变量? 另外我看到很多int main(void)。为什么这有必要?可以将任何其他内容作为参数放入吗?

3 个答案:

答案 0 :(得分:6)

main返回int。在旧版本的C中,您可以省略int,编译器会假装您说int。在C ++中,如果'main'没有显式返回值,它会神奇地返回0.您可以从main返回三个值:0,EXIT_SUCCESS和EXIT_FAILURE。 0相当于EXIT_SUCCESS。这两个命名值在<stdlib.h>中定义,如果您使用<cstdlib>中的C ++进行编码。

void是一个C风格的声明,函数不带参数。在C ++中你不需要它;一个在声明中没有参数的函数不带参数。

一般而言,main有两个参数:

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

这些是命令行参数。 argc是参数的数量,argv是指向包含参数的C风格字符串的指针数组。第一个字符串(argv[0])是程序的名称。

答案 1 :(得分:2)

因为您使用的是:C ++或C99或C11。

C89有一个隐含的int规则,使main()等同于int main()。这在C ++中不存在,自C99以来不再存在。

正如您所提到的,您使用的是Visual Studio并且它不支持C99和C11,您可能正在使用C ++编译器而不是C编译器编译您的程序。

答案 2 :(得分:1)

main函数的标准形式,传统上是

int main(int argc, char **argv)

前面的int表示main函数返回int,这是main的退出代码。操作系统argcargv传入的边界与命令行参数相关。 argcint,表示传入程序的参数数量,包括程序名称。 argv指向个别论点。您可以使用argv[index]来访问它们。有几个方便的库用于解析参数,例如getopt。