为什么所有的c程序都应该以一个返回`int`的main()开头?

时间:2014-09-21 23:58:30

标签: c

我想知道所有C程序应该从 " int main()" 的标准功能开始的主要原因是什么?为什么它应该 " int" ?谢谢

7 个答案:

答案 0 :(得分:2)

并非所有C“程序”都以“int main”开头。我将程序放在引号中以突出显示您可以拥有不具有main的c文件的事实,例如类定义。基本上主要是代码段告诉计算机要做什么,以什么顺序 - 所有其他文件可以被认为是帮助文件,它们对代码进行分区以使其更具可读性和可维护性。 Main有一个int类型,因为程序将返回一个整数值,描述程序是否执行没有问题,对应于0的返回,或出错的地方,这可能是任何非零数字,通常有文件告诉你在失败方面对应的数字意味着什么。

答案 1 :(得分:1)

执行程序时,首先要运行的是C库中的初始化代码。完成后,它会使用已解析的命令行参数调用标准入口点main。 main的int返回值是程序的返回值。

答案 2 :(得分:1)

实际上,所有C程序都必须有main。 ISO C标准支持两种类型的环境。第一个是托管的,而 是需要main特定格式的(来自几个允许的格式)。

独立式环境(第二种类型)没有这样的要求,事实上,标准中许多其他方面的独立行为也有很大的余地。

这就是为什么你仍然可以认为Linux内核是一个C程序,尽管事实上看不到main


至于为什么托管环境有这个要求,这就是C最初写在70年代的方式,当ANSI开始做标准时,他们的主要内容是编纂现有的做法,创造一种新语言。

标准委员会之后的长链,ISO C89 / 90,C99和C11要么不确定是否需要改变它,或者他们的贡献者没有提出这个想法。

答案 3 :(得分:0)

程序必须开始在某处运行 ;这被称为"入口点"。 C程序的标准入口点称为" main"因为那是很久以前人们选择的东西,并没有真正的理由将其改为其他名称。但是,一些编译器(实际上是链接器)可以选择使用其他函数名作为入口点来构建程序。

main函数返回int以提供有关其是否成功运行的反馈。按照惯例,返回0表示程序成功,返回一些其他值表示失败。例如,您可以使用$? shell中的bash环境变量检查此结果。

答案 4 :(得分:0)

这是因为你的代码被调用的方式和标准说明它应该如何发生。至于返回值,有一条规则说 main 函数必须在调用调用者时返回整数 - 它应该指示程序是如何退出的。

答案 5 :(得分:0)

  

为什么所有c程序都应以int main ()开头?

这是because

  

当操作系统在C中运行程序时,它会将计算机的控制权传递给该程序。这就像一艘巨大的远洋轮船的船长递给你的车轮。除了可能引起的任何担忧之外,关键点在于操作系统需要知道程序内部需要传递控件的位置。对于C语言程序,它是操作系统正在寻找的main()函数。


  

为什么它应该是“int”?

5.1.2.2.1程序启动:

  

程序启动时调用的函数名为main。实施宣布否   这个功能的原型。 应使用int [...]

的返回类型进行定义

答案 6 :(得分:0)

这是标准问题,请查看ansi C标准,它指出main函数应该返回int值。另外从操作系统的角度来看,如果程序正确结束,则返回主函数的值只是指示。