2009-10-08 22 views

Respuesta

14

Es una función definida por el usuario que es necesario para un programa a ejecutar. Cuando vaya a ejecutar su programa en el idioma compilado, la función main es lo que se ejecuta. Por ejemplo, en Java, si tiene una función de la firma public static void main(String ... args) en una clase, entonces esa clase se puede ejecutar, ya que la JVM ejecutará los contenidos de ese método main.

Ejemplo en Java:

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

...

javac Test.java 

...

java Test 

Resultados en "Hello World" que se imprime en la consola.

+4

No es necesario si le dice al vinculador que use otra función como punto de entrada. –

+3

@Ryan - algunos de nosotros (* tos * Java * tos *) no disfrutan el dulce privilegio de tener un enlazador. – ChssPly76

+4

@Ryan - Algunos de nosotros (* tos * me * tos *) no me gusta pelear con un enlazador si no es necesario;) – aperkins

0

En C/C++, es un estándar por lo que está integrado y reconfigurado.

Java, no está seguro, sin experiencia

C# - Es una parte de una clase por lo que su definida por usted.

Todo esto lo define usted: le dice qué hacer.

3

Es una función determinada definida por el usuario (el punto de entrada para ejecutables) ...

3

No está "incorporado" en ningún idioma, en el sentido de que no hay ningún estándar implementado, para usted main() disponible.

Para C/C++/Java, es una función con una propiedad especial, es decir, la función que se llamará al inicio de su programa después de que se haya realizado toda la configuración estática. P.ej. ruta de ejecución de todo el programa C es:

  1. Haga un poco de código de inicialización

  2. llamada main()

  3. Salir.

Como tal, tiene una declaración estándar (número de parámetros pasados ​​desde la línea de comandos + serie de "cadenas" - sin embargo el lenguaje implementa esa - que son los argumentos reales de línea de comandos)

+0

Solo FYI - "Principal" está prácticamente incorporado en VB.NET. En realidad, tiene que trabajar para exponerlo y poner su propia implementación en su lugar ... –

+0

VB tiene main()? (Sorpresa honesta: mi última exposición a cualquier básico en absoluto fue en los días de la propiedad de una PC Sinclair Z80 ... – DVK

0

Es una función definida por el usuario que es llamada por la biblioteca de tiempo de ejecución del lenguaje. Por ejemplo, una biblioteca de tiempo de ejecución de C captará los argumentos de la línea de comandos y, a veces, las variables de entorno del sistema operativo y las pasará a su función main().

Los tiempos de ejecución de idioma diferentes suelen realizar la misma operación de una forma u otra, y arrojarán algún tipo de error si la función a la que intenta llamar no existe.

5

No estoy seguro de lo que quiere decir con "built-in" contra "definido por el usuario". Casi ningún idioma le otorga a su función definida por el usuario el privilegio de ser el verdadero punto de entrada al programa. C++, cualquiera.El lenguaje NET y Java tienen métodos de punto de entrada ocultos (incorporados) que a su vez llaman a su método principal definido por el usuario (o cualquiera que sea el método de punto de entrada para ese idioma; en .NET puede llamarse cualquier cosa, aunque C# y VB.NET lo fuerza a llamarse Principal).

Así que sí, prácticamente todos los idiomas tienen un concepto de un método que se llama automáticamente, y este método es un método definido por el usuario y generalmente obligatorio. Pero prácticamente todos los idiomas también tienen un método de punto de entrada integrado que realmente configura el marco y/o la administración de memoria para el proceso antes de invocar la función de "punto de entrada" definida por el usuario.

+2

Buena respuesta. Simplemente agregaría que el nombre 'principal' no es realmente importante, ya que la mayoría de los vinculadores decentes permitirán usted puede especificar su punto de entrada manualmente. (ej./ENTRY para VS) – NewbiZ

0

Su declaración está incorporada. Su definición es proporcionada por el usuario, o en algunos casos proporcionada por un marco de aplicación que tiene algún otro punto de entrada, o en el caso de la mayoría de los marcos de GUI controlados por eventos, no hay un solo punto de entrada definido por el usuario.

4

Presupuesto de la Norma C (énfasis es mío):

5.1.2.1 entorno independiente

  1. En un entorno independiente (en que puede tomar lugar de ejecución del programa C sin cualquier beneficio de un sistema operativo ), el nombre y el tipo de la función llamada en el inicio del programa es implementación definida. Cualquier instalación de biblioteca disponible para un programa independiente , que no sea el conjunto mínimo requerido por la cláusula 4, están definidos por la implementación.

main(), en un entorno independiente, es en gran medida una función definida por el usuario.

0

En Java main (String [] args) es el punto de entrada para las aplicaciones por convención (para hacer que los programadores C++ sean cómodos). Para applets o servlets, la invocación del código ocurre de manera diferente. Tenga en cuenta que un jar puede contener uno o ninguno de estos puntos de entrada y que cada clase puede contener un main, por lo que un jar dado puede ser invocado de muchas maneras diferentes como una aplicación si así lo desea.

Cuestiones relacionadas