Main()

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ROMARIO
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 06 Jul 2004 11:25
Localização: AGUDO - RS

Main()

Mensagem por ROMARIO »

Em tópicos anteriores vi referência à Function Main().
Alguém poderia me explicar o que significa esse Main.

Obrigado.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

Todo programa principal em xHarbour deve se chamar MAIN(), é só isso, é uma praxe do xHarbour para criar uma referência. Exemplo :

Seu programa principal chama-se CONTABIL.PRG

No inicio dele deve estar assim...

Function Main()
cls
@ 00,00 say padc("Sistema Contabil",80)
...
...
...

No clipper isso não é obrigatório mas funciona também...

Eu mesmo não uso...

Até logo.

Marcelo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Clipper escreveu:Todo programa principal em xHarbour deve se chamar MAIN()
Me permita uma correção:
Tanto para Clipper quanto para o xHarbour, Main é um nome simbólico qualquer. Não é como na linguagem C, onde o "starting point" do programa obrigatoriamente precisa ser main() (em minúscula). Tampouco uma função inicial é obrigatória em Clipper ou xHarbour. O início do programa é suposto. Inclusive, o xHarbour também dispõe de um switch /n, com opções acerca de como ele deve encarar a "starting procedure". O default é tipo 0, que significa que nenhuma procedure (function) inicial será exigida. Ou seja, se não tiver uma function inicial, não fará falta. Se tiver, o efeito será o mesmo.

Mas se quiser, faça um rápido teste compilando o seguinte fonte:

Código: Selecionar todos

?? "Hello, world!"
?
quit
Não há a informação explícita de função. Ainda assim, seu executável será montado.
Note: admiti-se que é conveniente que cada bloco de código seja formalmente iniciado por uma function, com um nome qualquer. Mas não necessariamente Main().

Pergunta decorrente: "mas como o compilador vai saber, num projeto grande, onde está o início do programa?". Resposta (idêntica para o caso do Clipper): "pela ordem de compilação/encadeamento, o primeiro código do primeiro arquivo fonte encontrado será o início do programa". Se não fosse assim, o xHarbour não teria os aclamados 100% de retro-compatibilidade.
Em suma: function explícita não é obrigatória, mas opcional. Porém, a boa prática recomenda que se use.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Boa essa...

Eu sabia que no Clipper não era preciso, mas como não conheço de xHarbour (apesar de achar que não era preciso) fui pela cabeça dos que conhecem e como piolho me dei mal, bem feito para mim que fui responder uma coisa do qual não domino plenamente, mas fui induzido ao erro porque acreditei na resposta de um colega....

Vivendo e aprendendo...

Até logo.

Marcelo
Responder