C程序只是源代码,具体是否需要 main 取决于您要编译成什么样的可执行文件。在Windows平台上,这包括:是直接可执行文件(exe)还是动态连接库(dll,ocx...),是控制台程序(像DOS窗口的那种)还是GUI程序(像Internet Explorer那种),是 unicdoe (wmain) 还是 MBCS (main),是否使用了标准C语言运行时(C runtime) 编译程序时,入口点是可以通过编译器指定的,如果你不指定,它的默认值是调用 C runtime 的入口点,而不是 main,C runtime 的入口函数执行完它自己的工作后会调用你的 main,所以是 C runtime 要求你的程序必须写 main。你也可以通过参数告诉编译器直接拿你的任何一个函数作为入口点,这样程序启动后第一个被执行的就不再是 main 了,因为连 C runtime 都没机会执行了。不过这样一来很多 C 标准函数也不能用了,因为它们需要 C runtime 的入口函数为它们做一些初始化工作。