主要方法执行

时间:2010-09-09 18:35:41

标签: java c++ c execution

Hii,

我们通常会看到程序执行开始于C,C ++,Java等语言的main方法(我熟悉这些)。我想知道编译器如何知道程序中是否存在MAIN方法。

除了main方法是程序执行的入口点之外,{{1}}方法的含义是什么...这些标准对于C,C ++有何不同......

提供您认为有用的任何链接......

3 个答案:

答案 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