我是一名应届程序员,对于C++,我希望每个程序都会有一个main()
函数。
然而,我收到了一个使用Visual Studio 6.0编写的C++项目,它没有main()
函数。我真的无法想象这个程序是如何执行的或从哪里开始的。
我已经看过使用宏来更改main()
函数名称的示例,但这段代码没有展示这种做法的任何迹象。
有人能够建议我该找什么吗?
我是一名应届程序员,对于C++,我希望每个程序都会有一个main()
函数。
然而,我收到了一个使用Visual Studio 6.0编写的C++项目,它没有main()
函数。我真的无法想象这个程序是如何执行的或从哪里开始的。
我已经看过使用宏来更改main()
函数名称的示例,但这段代码没有展示这种做法的任何迹象。
有人能够建议我该找什么吗?
首先,它可以是一个库、动态链接库或静态库,并且没有main()
函数。其次,它也可以是一个Windows应用程序,有另外一个入口点,例如WinMain()
函数。在Visual Studio中还有一个_tmain()
函数,或者其他的函数,它是对main()
函数的一种包装。
也许主函数在一个库中,程序从静态对象的虚拟函数调用开始。这就是 MFC 应用程序中发生的情况。
该程序从 CWinApp 派生一个类,并将其实例化为静态变量。然后 MFC 知道了一个指针(由 CWinApp 的构造函数设置),并在该指针上调用虚拟函数 InitInstance()。
可以看到,在此处,程序的软件接管了控制权......
如果你正在编写 Windows 控制台应用程序,你需要一个 main() 函数;但是如果你正在处理 DLL,则需要一个 DllMain() 函数。对于 Windows 应用程序,你应该期望一个 WinMain() 函数。
仅供参考,由于这不是一般情况,在C语言(我想在C++中也是如此)中可能存在没有主函数的程序。(我几年前就用过这样的程序)。虽然它是在嵌入式编程环境下而非Windows上运行的。
诀窍在于汇编语言中的启动代码在执行完后调用了一个完全不同的函数。
所以即使我们的老师教我们C/C++中总有main函数,这也不是绝对的真理。
main
。尽管Windows编译器在除了具有不同入口点之外的所有方面都像托管实现一样运行! - M.M