Hii,
我们通常会看到程序执行开始于C,C ++,Java等语言的main方法(我熟悉这些)。我想知道编译器如何知道程序中是否存在MAIN
方法。
除了main
方法是程序执行的入口点之外,{{1}}方法的含义是什么...这些标准对于C,C ++有何不同......
提供您认为有用的任何链接......
答案 0 :(得分:4)
通常,在每个C或C ++程序开头执行的代码(通常由编译器/链接器默认包含)执行一些初始化,然后调用名为main
的函数。如果此函数不存在,则在链接程序时将导致未解析的名称(其中必须解析所有名称)。如果它存在,它将由程序初始化代码调用。
初始化代码执行一些内务处理(例如,将main函数的返回值转换为程序的退出代码等)。
答案 1 :(得分:1)
无。这只是该计划起点的传统名称。
C
中的,main()
与sin()
或任何其他功能一样正常。托管实现中唯一的要求是它符合其中一个原型
int main(void);
int main(int, char **);
修改强>
您甚至可以从代码中致电main()
:)
#include <stdio.h>
int main(int argc, char **argv) {
printf("main() called with %d arguments.\n", argc);
if (argc) {
main(0, NULL);
}
return 0;
}
答案 2 :(得分:0)
在Windows上,它都以可移植可执行文件格式开始:http://en.wikipedia.org/wiki/Portable_Executable。
可以通过链接器指定输入地址:http://msdn.microsoft.com/en-us/library/y0zzbyt4.aspx
托管应用程序在其程序集元数据中引用了静态main方法。这也是编译器的命令行选项:http://msdn.microsoft.com/en-us/library/6s2x2bzy%28v=VS.71%29.aspx