principal() en C, C++, Java, C#

5 minutos de lectura

principal en C C Java C
usuario366312

¿Es main() (o Main()) en C, C++, Java o C#, una función definida por el usuario o una función integrada?

principal en C C Java C
geowa4

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

Ejemplo en Java:

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

javac Test.java

java Test

Da como resultado que se imprima “Hello World” en la consola.

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

    – Ryan Kearney

    8 de octubre de 2009 a las 17:59

  • @Ryan – algunos de nosotros (tos Java tos) no disfruta del dulce privilegio de tener un enlazador.

    – ChssPly76

    8 de octubre de 2009 a las 18:23

  • @Ryan – Algunos de nosotros (tos me tos) no me gusta pelear con un enlazador si no es necesario 😉

    – aperkins

    8 de octubre de 2009 a las 19:15

  • @Ryan: en Java no hay un enlazador, y se requiere que su método principal tenga la firma public static void main(String[] args) y no hay forma de que puedas cambiar eso.

    – Jesper

    9 de octubre de 2009 a las 13:09

No estoy seguro de lo que quiere decir con integrado frente a definido por el usuario. Casi ningún idioma le da a su función definida por el usuario el privilegio de ser el verdadero punto de entrada al programa. C++, cualquier 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 como se llame el método de punto de entrada para ese lenguaje; en .NET puede llamarse nada, aunque C# y VB.NET obligan a que se llame Main).

Entonces, sí, prácticamente todos los idiomas tienen un concepto de método que se llama automáticamente, y este método es un método definido por el usuario y, por lo general, obligatorio. Pero prácticamente todos los idiomas también tienen un método de punto de entrada incorporado que en realidad 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.

  • Buena respuesta. Solo agregaría que el nombre ‘principal’ no es realmente importante, ya que la mayoría de los enlazadores decentes le permitirán especificar su punto de entrada manualmente. (por ejemplo, /ENTRADA para VS)

    – NewbiZ

    8 de octubre de 2009 a las 18:07

Cita del estándar C (el énfasis es mío):

5.1.2.1 Entorno independiente

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

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

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

1646973789 88 principal en C C Java C
DVK

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

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

  1. Haz un código de inicialización

  2. Llamada main()

  3. Salida.

Como tal, tiene una declaración estándar (# de parámetros pasados ​​desde la línea de comando + matriz de “cadenas”; sin embargo, el lenguaje implementa eso, que son los argumentos reales de la línea de comando)

  • Solo para su información: “Principal” está prácticamente integrado en VB.NET. En realidad, tiene que trabajar para exponerlo y poner su propia implementación en su lugar…

    – Reed Copsey

    8 oct 2009 a las 17:55

  • VB tiene principal ()? (Sincera sorpresa: mi última exposición a un Basic fue en los días en que tuve la PC Sinclair Z80…

    – DVK

    8 oct 2009 a las 18:30

1646973789 668 principal en C C Java C
Daniel A. Blanco

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

Java, no estoy seguro, sin experiencia

C #: es parte de una clase, por lo que lo define usted.

Todo esto lo defines tú, tú le dices qué hacer.

  • Solo para su información: “Principal” está prácticamente integrado en VB.NET. En realidad, tiene que trabajar para exponerlo y poner su propia implementación en su lugar…

    – Reed Copsey

    8 oct 2009 a las 17:55

  • VB tiene principal ()? (Sincera sorpresa: mi última exposición a un Basic fue en los días en que tuve la PC Sinclair Z80…

    – DVK

    8 oct 2009 a las 18:30

1646973790 301 principal en C C Java C
Guillermo Casarín

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

Los tiempos de ejecución de diferentes idiomas generalmente realizan la misma operación de una forma u otra, y generarán algún tipo de error si la función que intenta llamar no existe.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad