Является ли main () определяемой пользователем функцией? - PullRequest
2 голосов
/ 15 января 2011

Программист определяет , что, в конце концов, происходит внутри main().

Итак, следует ли считать пользовательскую функцию?

Ответы [ 7 ]

7 голосов
/ 15 января 2011

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

Редактировать : Первоначально я проверял только стандарт Си. Теперь я также проверил стандарт C ++, и он использует «пользовательский» в следующих контекстах: операторы, типы, преобразования и библиотеки. Он также имеет объявленные пользователем пространства имен, объявленные пользователем конструкторы (по умолчанию и копии) и пользовательские конструкторы по умолчанию. Он имеет «пользовательские функции» в 27.1.1.

2 голосов
/ 15 января 2011

Да - main является определяемой пользователем функцией. Самый простой способ думать об этом - это пользовательский, но объявленный стандартом.

Он также имеет другие ограничения, например, нерекурсивный. Однако на некоторых компиляторах, таких как MSVC, разрешено использовать rec в main (). Я нахожу это довольно удобным.

1 голос
/ 15 января 2011

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

1 голос
/ 15 января 2011

Если бы это не определяемая пользователем функция, что бы это было? Понятно, не функция ядра или библиотеки? Не уверен, что я понимаю, что ты здесь делаешь ...

0 голосов
/ 02 сентября 2017

main() не является ни пользовательской, ни встроенной библиотечной функцией.

При попытке скомпилировать программу на C в исполняемый файл, компилятор ищет функцию с именем main в вашем списке источников.

Однако создание библиотеки (как общего объекта или просто путем выдачи необходимых заголовочных файлов) имеет разные последствия.

Как вы знаете, GCC ищет main с одной из следующих подписей:

int main(int, char **);

ИЛИ

int main();

0 голосов
/ 23 февраля 2014

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

0 голосов
/ 10 сентября 2011

Main () в предопределенной функции, с которой начинается выполнение кода в программе. Если у вас нет основной функции, программа не запустится. Следовательно, Манин является отправной точкой программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...