Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 主方法执行_Java_C++_C_Execution - Fatal编程技术网

Java 主方法执行

Java 主方法执行,java,c++,c,execution,Java,C++,C,Execution,嗨 我们通常看到程序执行以C语言、C++语言、java语言为主(我熟悉这些)。我想知道编译器如何知道程序中存在MAIN方法 代码>主代码方法,除了它是程序执行的入口点外……这些准则对于C、C++、如何不同? 提供您认为有用的任何链接…在windows上,所有链接都以可移植可执行文件格式开始: 可以通过链接器指定条目地址: 托管应用程序在其程序集元数据中具有对静态main方法的引用。这也是编译器的一个命令行选项:在windows上,它都以可移植可执行文件格式开始: 可以通过链接器指定条目地址: 托

<>我们通常看到程序执行以C语言、C++语言、java语言为主(我熟悉这些)。我想知道编译器如何知道程序中存在
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()
注册函数。