Подтвердить что ты не робот

С++ Нет функции main()?

Я выпускник программиста, и когда дело доходит до С++, я ожидаю, что функция main() будет выполняться каждый раз.

Однако мне был предоставлен проект, написанный на С++ с Visual Studio 6.0, и он не имеет функции main(). Я действительно не могу понять, как эта программа выполняется или где она начинается.

Я видел примеры макросов, которые можно использовать для изменения имени функции main(), однако этот код не показывает никаких признаков этой практики.

Может ли кто-нибудь предложить то, что я должен искать?

4b9b3361

Ответ 1

Возможно, основная функция находится в библиотеке, и программа запускается с вызовом виртуальной функции на статическом объекте. Что происходит в MFC-приложениях.

Программа выводит класс из CWinApp и инициализирует его один раз как статическую переменную. Затем MFC знает указатель (который был сконструирован конструктором CWinApp и вызывает на нем этот указатель InitInstance().

См. здесь, где программное обеспечение из программы берет на себя...

Ответ 2

Во-первых, это может быть библиотека, DLL или статическая библиотека и не иметь main(). Во-вторых, это может быть приложение Windows, которое имеет другую точку входа, например WinMain(). Также в Visual Studio есть функция _tmain() или другая, которая является своего рода оберткой вокруг main()

Ответ 3

Хотя в стандарте указано, что программа должна иметь основную функцию, это не обязательно должно быть написано разработчиком приложения, если библиотеки, которые связаны с основной функцией, определены в них. Кроме того, некоторые линкеры позволяют вам переопределить точку входа в нечто иное, чем основное.

Есть ли WinMain вообще?

Ответ 4

Если вы пишете консольное приложение Win - вам нужен основной() но если вы имеете дело с DLL, вы ожидаете, что DllMain() для оконного приложения вы должны ожидать WinMain()