我是一名研究生程序员,在谈到C ++时,我希望每次都有main()
函数。
但是我得到了一个用C ++编写的Visual Studio 6.0项目,它没有main()
函数。我真的无法弄清楚这个程序是如何执行的或它开始的地方。
我见过可以用来更改main()
函数名称的宏示例,但是这段代码没有显示出这种做法的迹象。
有人可以建议我应该寻找什么吗?
答案 0 :(得分:14)
首先,它可以是库,DLL或静态库,而不是main()
。第二,它可以是一个具有另一个入口点的Windows应用程序,例如WinMain()
。同样在Visual Studio中有一个_tmain()
函数或其他函数,它是main()
答案 1 :(得分:14)
也许主函数在库中,程序以静态对象上的虚函数调用开始。这就是MFC应用程序中发生的情况。
该程序从CWinApp派生一个类,并将其作为静态变量实例化一次。 MFC然后知道一个指针(由CWinApp的构造函数设置,并在该指针上调用虚函数InitInstance()。
请参阅,这是程序中的软件接管的地方......
答案 2 :(得分:3)
虽然标准规定程序必须具有main函数,但如果链接的库具有在其中定义的main函数,则不必由应用程序开发人员编写。此外,一些链接器允许您将入口点重新定义为main之外的其他内容。
是否有WinMain?
答案 3 :(得分:2)
如果您正在编写Win控制台应用程序 - 您需要一个main() 但如果你正在处理DLL,你期待一个DllMain() 对于窗口应用程序,您应该期望WinMain()
答案 4 :(得分:1)
仅供参考,因为这不是一般情况,所以在C中(我想在C ++中)可能有没有主要功能的程序。 (几年前我曾与之合作)。当然,这是一个嵌入式编程环境,而不是Windows。
窍门是,汇编程序中的启动代码执行完后调用了完全不同的函数。
因此,即使我们的老师教给我们有关C / C ++的知识总不是绝对的事实