С++ Нет функции main()?
Я выпускник программиста, и когда дело доходит до С++, я ожидаю, что функция main()
будет выполняться каждый раз.
Однако мне был предоставлен проект, написанный на С++ с Visual Studio 6.0, и он не имеет функции main()
. Я действительно не могу понять, как эта программа выполняется или где она начинается.
Я видел примеры макросов, которые можно использовать для изменения имени функции main()
, однако этот код не показывает никаких признаков этой практики.
Может ли кто-нибудь предложить то, что я должен искать?
Ответы
Ответ 1
Возможно, основная функция находится в библиотеке, и программа запускается с вызовом виртуальной функции на статическом объекте. Что происходит в MFC-приложениях.
Программа выводит класс из CWinApp и инициализирует его один раз как статическую переменную. Затем MFC знает указатель (который был сконструирован конструктором CWinApp и вызывает на нем этот указатель InitInstance().
См. здесь, где программное обеспечение из программы берет на себя...
Ответ 2
Во-первых, это может быть библиотека, DLL или статическая библиотека и не иметь main()
. Во-вторых, это может быть приложение Windows, которое имеет другую точку входа, например WinMain()
. Также в Visual Studio есть функция _tmain()
или другая, которая является своего рода оберткой вокруг main()
Ответ 3
Хотя в стандарте указано, что программа должна иметь основную функцию, это не обязательно должно быть написано разработчиком приложения, если библиотеки, которые связаны с основной функцией, определены в них. Кроме того, некоторые линкеры позволяют вам переопределить точку входа в нечто иное, чем основное.
Есть ли WinMain вообще?
Ответ 4
Если вы пишете консольное приложение Win - вам нужен основной()
но если вы имеете дело с DLL, вы ожидаете, что DllMain()
для оконного приложения вы должны ожидать WinMain()