main () в C, C ++, Java, C # - PullRequest
       14

main () в C, C ++, Java, C #

5 голосов
/ 08 октября 2009

Является ли main () (или Main ()) в C, C ++, Java или C # пользовательской или встроенной функцией?

Ответы [ 9 ]

13 голосов
/ 08 октября 2009

Это пользовательская функция, необходимая для выполнения программы. Когда вы запускаете программу на скомпилированном языке, выполняется функция main. Например, в Java, если у вас есть функция подписи public static void main(String ... args) в классе, тогда этот класс может быть выполнен, поскольку JVM выполнит содержимое этого метода main.

Пример на Java:

public class Test {
  public static void main(String ... args) { 
    System.out.println("Hello World");
  }
}

...

javac Test.java

...

java Test

Результат «Hello World» выводится на консоль.

5 голосов
/ 08 октября 2009

Я не уверен, что вы подразумеваете под встроенным или определенным пользователем. Практически ни один язык не дает вашей пользовательской функции привилегию быть истинной точкой входа в программу. C ++, любой язык .NET и Java имеют скрытые (встроенные) методы точки входа, которые, в свою очередь, вызывают пользовательский метод Main (или любой другой метод, который вызывается для этого языка - в .NET его можно назвать что угодно, хотя C # и VB.NET заставляют его называться Main).

Так что да, практически каждый язык имеет концепцию метода, который вызывается автоматически, и этот метод является определяемым пользователем методом и обычно является обязательным. Но практически в каждом языке также есть встроенный метод точки входа, который фактически настраивает структуру и / или управление памятью для процесса перед вызовом пользовательской функции «точки входа».

4 голосов
/ 08 октября 2009

Цитата из стандарта C (акцент мой):

5.1.2.1 Отдельно стоящая среда

  1. В автономной среде (в какое выполнение программы C может занять место без какой-либо выгоды от операционной системы), имя и тип функции, вызываемой в запуск программы от реализации . любой библиотеки, доступные для отдельно стоящая программа, кроме минимальный набор, требуемый пунктом 4, определяются реализацией.

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

3 голосов
/ 08 октября 2009

Он не является "встроенным" ни в одном языке, в том смысле, что не существует стандартного реализованного для вас main () avialable.

Для C / C ++ / Java это функция со специальным свойством, а именно, функцией, которая будет вызываться в начале вашей программы после выполнения всех статических настроек. Например. Весь путь выполнения C-программы:

  1. Выполнить код инициализации

  2. Звоните main()

  3. Выход.

Как таковой, он имеет стандартное объявление (количество параметров, переданных из командной строки + массив «строк» ​​- однако язык реализует это - которые являются фактическими аргументами из командной строки)

3 голосов
/ 08 октября 2009

Это обязательная пользовательская функция (точка входа для исполняемых файлов) ...

0 голосов
/ 09 октября 2009

В Java main (String [] args) является точкой входа для приложений по соглашению (для удобства программистов на C ++). Для апплетов или сервлетов вызов кода происходит иначе. Обратите внимание, что jar может содержать любую из этих точек входа или не иметь их, и что каждый класс может содержать main, поэтому данный jar может вызываться различными способами в качестве приложения, если это необходимо.

0 голосов
/ 08 октября 2009

Это объявление встроено. Это определение предоставляется пользователем или в некоторых случаях предоставляется прикладной средой, которая имеет какую-то другую точку входа, или в случае большинства управляемых событиями структур графического интерфейса нет единой пользовательской точки входа.

0 голосов
/ 08 октября 2009

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

Различные языковые среды выполнения обычно выполняют одну и ту же операцию в той или иной форме и выдают какую-то ошибку, если функция, которую он пытается вызвать, не существует.

0 голосов
/ 08 октября 2009

В C / C ++ это стандарт, поэтому он встроен и переработан.

Java, не уверен, нет опыта

C # - это часть класса, поэтому он определен вами.

Все это определяется вами - вы говорите ему, что делать.

...