C,C++,Java,C#中的main()

use*_*312 5 c c# c++ java program-entry-point

main()(或Main())是C,C++,Java或C#,用户定义的函数还是内置函数?

geo*_*wa4 13

它是用户定义的函数,是程序执行所必需的.当您使用编译语言运行程序时,该main函数就是执行的功能.例如,在Java中,如果您public static void main(String ... args)在类中具有签名功能,则可以执行该类,因为JVM将执行该main方法的内容.

Java中的示例:

public class Test {
  public static void main(String ... args) { 
    System.out.println("Hello World");
  }
}
Run Code Online (Sandbox Code Playgroud)

...

javac Test.java
Run Code Online (Sandbox Code Playgroud)

...

java Test
Run Code Online (Sandbox Code Playgroud)

将"Hello World"打印到控制台的结果.

  • 如果您告诉链接器使用另一个函数作为入口点,则不需要它. (4认同)
  • @Ryan - 如果我们不需要,我们中的一些人(*咳嗽*我*咳嗽*)不喜欢与链接器战斗;) (4认同)
  • @Ryan - 我们中的一些人(*咳嗽*Java*咳嗽*)不喜欢拥有链接器的甜蜜特权. (3认同)

And*_*ott 5

我不确定内置与用户定义的含义.几乎没有任何语言能够为您的用户定义函数提供成为程序真正入口点的特权.C++,任何.NET语言和Java都有隐藏的(内置)入口点方法,这些方法又调用用户定义的Main方法(或者调用该语言的入口点方法 - 在.NET中它可以命名什么,虽然C#和VB.NET强迫它被称为Main).

所以是的,几乎每种语言都有一个自动调用的方法概念,这种方法是用户定义的方法,通常是强制性的.但实际上每种语言都有一个内置的入口点方法,它实际上在调用用户定义的"入口点"函数之前为进程设置框架和/或内存管理.

  • 很好的答案.我只想补充一点,'main'这个名称并不重要,因为大多数合适的链接器都允许你手动指定入口点.(例如/ ENTRY) (2认同)