Java 主方法执行
嗨 <>我们通常看到程序执行以C语言、C++语言、java语言为主(我熟悉这些)。我想知道编译器如何知道程序中存在Java 主方法执行,java,c++,c,execution,Java,C++,C,Execution,嗨 我们通常看到程序执行以C语言、C++语言、java语言为主(我熟悉这些)。我想知道编译器如何知道程序中存在MAIN方法 代码>主代码方法,除了它是程序执行的入口点外……这些准则对于C、C++、如何不同? 提供您认为有用的任何链接…在windows上,所有链接都以可移植可执行文件格式开始: 可以通过链接器指定条目地址: 托管应用程序在其程序集元数据中具有对静态main方法的引用。这也是编译器的一个命令行选项:在windows上,它都以可移植可执行文件格式开始: 可以通过链接器指定条目地址: 托
MAIN
方法
<>代码>主代码方法,除了它是程序执行的入口点外……这些准则对于C、C++、如何不同?
提供您认为有用的任何链接…在windows上,所有链接都以可移植可执行文件格式开始: 可以通过链接器指定条目地址:
托管应用程序在其程序集元数据中具有对静态main方法的引用。这也是编译器的一个命令行选项:在windows上,它都以可移植可执行文件格式开始: 可以通过链接器指定条目地址:
托管应用程序在其程序集元数据中具有对静态main方法的引用。这也是编译器的命令行选项:,通常,在每个C或C++程序的开始执行的代码(通常由编译器/链接器默认)执行一些初始化,然后调用名为“代码>主< /COD>的函数。如果此函数不存在,则在链接程序时将导致无法解析名称(其中必须解析所有名称)。如果存在,程序初始化代码将调用它
初始化代码执行一些内部操作(例如,将主函数的返回值转换为程序的退出代码等)
,通常,在每个C或C++程序的开始执行的代码(通常由编译器/链接器默认)执行一些初始化,然后调用名为
main
的函数。如果此函数不存在,则在链接程序时将导致无法解析名称(其中必须解析所有名称)。如果存在,程序初始化代码将调用它
初始化代码执行一些内务处理(例如,将主函数的返回值转换为程序的退出代码等)什么都不做。这只是程序起点的一个常规名称 在
C
中,main()
是与sin()
或任何其他函数一样正常的函数。托管实现中唯一的要求是它符合其中一个原型
int main(void);
int main(int, char **);
编辑 您甚至可以自己从代码中调用
main()
)
#包括
int main(int argc,字符**argv){
printf(“使用%d个参数调用main()。\n”,argc);
如果(argc){
main(0,空);
}
返回0;
}
什么都没有。这只是程序起点的一个常规名称
在C
中,main()
是与sin()
或任何其他函数一样正常的函数。托管实现中唯一的要求是它符合其中一个原型
int main(void);
int main(int, char **);
编辑 您甚至可以自己从代码中调用
main()
)
#包括
int main(int argc,字符**argv){
printf(“使用%d个参数调用main()。\n”,argc);
如果(argc){
main(0,空);
}
返回0;
}
在C/C++中,它不会链接到没有out main的可执行文件中,因为运行时调用函数main()来启动程序。在Java中,它基本上是相同的过程,但在启动时执行;链接加载器可以任意指定任何函数名作为入口点。记住,在C++中,全局变量的构造函数将在<代码>主()>代码>之前执行。我认为这个主题以前有过问题。相当好的欺骗,相关。这方面的其他有趣内容:[是程序还是负责设置堆栈的操作系统]()。在C/C++中,它不会链接到没有out main的可执行文件,因为运行时调用函数main()来启动程序。在Java中,它基本上是相同的过程,但在启动时执行;链接加载器可以任意指定任何函数名作为入口点。记住,在C++中,全局变量的构造函数将在<代码>主()>代码>之前执行。我认为这个主题以前有过问题。相当好的欺骗,相关。这方面的其他有趣内容:[是负责设置堆栈的程序还是操作系统]()。-1为平台无关问题提供特定于平台的答案耶!Alex因为提供了一个糟糕的答案而获得+8分,-1因为提供了一个平台不可知问题的平台特定答案耶!亚历克斯获得8的ReP,提供了一个错误的答案。正如你所说的,C是真的。C++中,<代码>主< /代码>有点特别;它不能直接调用,不能重载,等等。嗯,好的。我不知道。谢谢你的提示:(代码<主代码)(/>)也与<代码> SN()/Cube >(至少在C++中)不同,因为在从初始调用返回到代码>主()/代码> <代码> ATEXIT()/CARD>注册函数被调用。它不能直接调用,不能重载,等等。嗯,好的。我不知道。感谢您的提醒:)main()
与sin()
(至少在C中)也有很大不同,在从最初调用main()
返回后,将调用atexit()
注册函数。