Движок с нуля
Справочник

Точка входа

Функция, с которой начинается твой код. В C++ это функция main: при запуске программы код запуска из стандартной библиотеки готовит программу и вызывает main.

Программа может состоять из сотен функций, но начать нужно с какой-то одной. В C++ это всегда main. Функцию main не вызывают из своего кода: когда ты запускаешь app.exe, Windows сначала выполняет код запуска из стандартной библиотеки. Линкер сам добавляет код запуска в каждую программу на C++. Код запуска готовит программу к работе, например настраивает std::cout, и вызывает main.

Когда main заканчивается, управление возвращается в код запуска: код запуска досылает в консоль остаток текста из std::cout и завершает программу. Всё, что программа должна сделать, — открыть окно, нарисовать кадры, закрыться — происходит внутри main или в функциях, которые main вызвала.

Поэтому main в программе ровно одна. Если функции main нет, линкер откажется собирать программу с ошибкой LNK2019: код запуска вызывает main из функции invoke_main, и линкер не находит, что подставить в этот вызов. Если функций main две, линкер тоже остановится: он не знает, какую из двух вызывать.

main возвращает число — код возврата, поэтому функция записана как int main().