Página 1 de 1

Main()

Enviado: 06 Out 2004 18:33
por ROMARIO
Em tópicos anteriores vi referência à Function Main().
Alguém poderia me explicar o que significa esse Main.

Obrigado.

Enviado: 06 Out 2004 19:00
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

Enviado: 07 Out 2004 05:26
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

Enviado: 07 Out 2004 10:16
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