В С ++ основная функция является точкой входа в программу, как я могу изменить ее на другую функцию? - PullRequest
28 голосов
/ 20 октября 2010

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

Ответы [ 13 ]

1 голос
/ 20 октября 2010

В Windows есть другой (довольно неортодоксальный) способ изменить точку входа в программу: TLS. Смотрите это для более подробных объяснений: http://isc.sans.edu/diary.html?storyid=6655

0 голосов
/ 26 октября 2018

Изменение значения в настройках компоновщика переопределит точку входа.то есть приложения MFC используют значение «Windows (/ SUBSYSTEM: WINDOWS)», чтобы изменить точку входа с main () на CWinApp :: WinMain ().

Right clicking on solution > Properties > Linker > System > Subsystem > Windows (/SUBSYSTEM:WINDOWS)

...

Практическое преимущество для изменения точки входа:

MFC - это среда, которой мы пользуемся для написания приложений Windows на C ++.Я знаю, что он древний, но моя компания поддерживает его по наследству!Вы не найдете main () в коде MFC. MSDN говорит, что точка входа - это WinMain ().Таким образом, вы можете переопределить WinMain () вашего базового объекта CWinApp.Или, большинство людей переопределяют CWinApp :: InitInstance (), потому что базовая WinMain () будет вызывать его.

Отказ от ответственности: я использую пустые скобки для обозначения метода, не заботясь о количестве аргументов.

0 голосов
/ 31 мая 2013

Да, мы можем изменить имя основной функции на любое другое имя, например.Start, bob, rem и т. Д.

Откуда компилятор знает, что он должен искать main () во всем коде?

В программировании нет ничего автоматическогокто-то проделал некоторую работу, чтобы он выглядел автоматически для нас.

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

...