Pergunta

Main() (ou Main()) em C, C++, Java ou C# é uma função definida pelo usuário ou uma função interna?

Foi útil?

Solução

É uma função definida pelo usuário necessária para que um programa seja executado. Quando você vai para executar seu programa no idioma compilado, o main função é o que é executado. Por exemplo, em Java, se você tem uma função da assinatura public static void main(String ... args) em uma classe, então essa classe pode ser executada, pois a JVM executará o conteúdo disso main método.

Exemplo em Java:

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

...

javac Test.java

...

java Test

Resulta em "Hello World" sendo impresso no console.

Outras dicas

Não tenho certeza do que você quer dizer com embutido versus usuário definido. Quase nenhum idioma realmente oferece à sua função definida pelo usuário o privilégio de ser o verdadeiro ponto de entrada no programa. C ++, qualquer idioma .NET e Java têm métodos de ponto de entrada (interno) que chamam seu método principal definido pelo usuário (ou qualquer que o método de entrada para esse idioma seja chamado-no .NET, pode ser nomeado Qualquer coisa, embora C# e VB.NET o forçam a ser chamado de principal).

Então, sim, praticamente todo idioma tem um conceito de método que é chamado automaticamente, e esse método é um método definido pelo usuário e geralmente obrigatório. Mas praticamente todo idioma também possui um método de ponto de entrada interno que realmente configura a estrutura e/ou gerenciamento de memória para o processo antes de invocar sua função "ponto de entrada" definido pelo usuário.

Citação do padrão C (ênfase é minha):

5.1.2.1 Ambiente independente

  1. Em um ambiente independente (no qual a execução do programa C pode ocorrer sem nenhum benefício de um sistema operacional), O nome e o tipo da função chamada na inicialização do programa são definidos pela implementação. Quaisquer instalações de biblioteca disponíveis para um programa independente, exceto o conjunto mínimo exigido pela cláusula 4, são definidas pela implementação.

main(), em um ambiente independente, é uma função definida pelo usuário.

É uma função definida pelo usuário necessária (o ponto de entrada para executáveis) ...

Não é "integrado" em nenhuma linguagem, no sentido de que não existe um padrão implementado para você main() disponível.

Para C/C++/Java, é uma função com uma propriedade especial, ou seja, a função que será chamada no início do seu programa após toda a configuração estática ser concluída.Por exemplo.todo o caminho de execução do programa C é:

  1. Faça algum código de inicialização

  2. Chamar main()

  3. Saída.

Como tal, possui uma declaração padrão (# de parâmetros passados ​​​​da linha de comando + matriz de "strings" - no entanto, a linguagem implementa isso - que são os argumentos reais da linha de comando)

Em C/C ++, é um padrão para ser incorporado e reconizado.

Java, não tenho certeza, sem experiência

C# - faz parte de uma classe, então é definido por você.

Tudo isso é definido por você - você diz o que fazer.

É uma função definida pelo usuário chamada pela biblioteca de tempo de execução da linguagem.Por exemplo, uma biblioteca de tempo de execução C irá capturar os argumentos da linha de comando e, às vezes, variáveis ​​de ambiente do sistema operacional e passá-los para sua função main().

Diferentes tempos de execução de linguagem geralmente executam a mesma operação de uma forma ou de outra e gerarão algum tipo de erro se a função que ele tenta chamar não existir.

Sua declaração está embutida. Sua definição é fornecida pelo usuário ou em alguns casos fornecidos por uma estrutura de aplicativo que possui outro ponto de entrada ou no caso da maioria das estruturas de GUI orientadas a eventos, nenhum ponto de entrada definido pelo usuário.

No Java Main (String [] args) é o ponto de entrada para aplicações por convenção (para tornar os programadores C ++ confortáveis). Para applets ou servlets, a invocação do código acontece de maneira diferente. Observe que um frasco pode conter qualquer um ou nenhum desses pontos de entrada e que cada classe pode conter um principal para que um determinado frasco possa ser chamado de muitas maneiras diferentes como aplicação, se desejar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top