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