В конце концов, программист действительно определяет, что происходит внутри main()
.
Итак, следует ли считать ее определяемой пользователем функцией?
В конце концов, программист действительно определяет, что происходит внутри main()
.
Итак, следует ли считать ее определяемой пользователем функцией?
В стандарте C++ нет понятия пользовательских функций. Вместо этого в нем используется понятие библиотечных функций. main не является библиотечной функцией. Однако стандарт также налагает некоторые требования на его сигнатуру, а также на то, что он не должен быть перегружен или объявлен статическим или встроенным. В частности, его нельзя использовать, что означает, что вы не можете его вызывать.
Изменить: изначально я проверял только стандарт C. Теперь я также проверил стандарт С++, и он использует «определяемый пользователем» в следующих контекстах: операторы, типы, преобразования и библиотеки. Он также имеет объявленные пользователем пространства имен, объявленные пользователем конструкторы (по умолчанию и копирование) и написанные пользователем конструкторы по умолчанию. У него есть «пользовательские функции» в 27.1.1.
main()
? Где это сказано?
- person fuz; 11.12.2014
Yes-main — это определяемая пользователем функция. Самый простой способ думать об этом — определить пользователем, но объявить стандартом.
Есть у него и другие ограничения, например, нерекурсивность. Однако в некоторых компиляторах, таких как MSVC, допускается рекурсия в main(). Я нахожу это довольно удобным.
Если это не определяемая пользователем функция, то что это будет? Явно не функция ядра или библиотеки? Не уверен, что понимаю, к чему ты клонишь...
Функция main
не является ни встроенной (предопределенной), ни определяемой пользователем функцией. Это исключение, и вы должны соблюдать связанные с ним требования, изложенные в стандарте C++ (например, о его наличии в программе, типе возвращаемого значения и аргументах).
main()
не является предопределенной или встроенной функцией. Это определяемая пользователем функция с предопределенным прототипом функции (также называемой сигнатурой функции). Пользователь пишет его функционал, но его объявление имеет определенные ограничения.
main()
не является ни определяемой пользователем, ни встроенной библиотечной функцией.
При попытке скомпилировать программу C в исполняемый файл компилятор ищет функцию с именем main
в вашем списке исходных кодов.
Однако создание библиотеки (либо в виде общего объекта, либо путем предоставления необходимых заголовочных файлов) имеет разные последствия.
Просто чтобы вы знали, GCC ищет main
с любой из следующих подписей:
int main(int, char **);
OR
int main();
main() — это предопределенная функция, с которой начинается выполнение кода. Если у вас нет основной функции, программа не запустится. Следовательно, main является отправной точкой программы.
user-defined function
, то я смогу его вызвать. Итак, можете ли вы сами вызватьmain()
в своем коде? - person Mahesh   schedule 15.01.2011warning C4717: 'main' : recursive on all control paths, function will cause runtime stack overflow
, Спасибо за информацию. - person Mahesh   schedule 15.01.2011main
. См. 3.6.1 в C++03. - person Lightness Races in Orbit   schedule 15.01.2011main
или даже в функцию, которую вызываетmain
, если только вы не поместите где-нибудь операторif
. - person Maxpm   schedule 15.01.2011