[FUG-BR] RES: C/C++
Nilton Jose Rizzo
rizzo em i805.com.br
Sábado Fevereiro 24 17:56:56 BRT 2007
On Sat, 24 Feb 2007 08:40:25 -0300, Anderson P. Matos - LINHARES ON LINE wrote
> Paulo, a função main nem sempre deve retorna um valor, somente se
> você quiser, quando a função começa com void, significa que não
> retorna valor nenhum, e ainda você falou que a função main DEVE
> retornar um valor inteiro, isso também esta errado, a função pode
> retornar um char, float, double, usigned float...e mais um monte...
Essa exigencia é da linguagem c++ faça esse exemplo e veja
que o erro persiste
#include <stdio.h>
void main (void);
void main (void)
{
printf ("teste");
}
>g++ -o teste teste.cpp
teste.cpp: In function `int main(...)':
teste.cpp:8: declaration of C function `int main(...)' conflicts with
teste.cpp:4: previous declaration `void main()' here
>
> Att.
>
> Anderson P. Matos
> Analista de Suporte
> Linhares Serviços On-Line
> Tel: (27) 2103-8100
> E-mail: suporte at linharesonline.com.br
> ---------------------------------------------------------
> Tel.: (27) 2103-8105
> Cel: (27) 9936-4186
> E-mail: anderson at linharesonline.com.br
> Messenger: modelobesta at hotmail.com
> Skype: andersonpmatos
>
> -----Mensagem original-----
> De: freebsd-bounces at fug.com.br [mailto:freebsd-bounces at fug.com.br] Em
> nome de Paulo Pires
> Enviada em: sexta-feira, 23 de fevereiro de 2007 08:00
> Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
> Assunto: Re: [FUG-BR] C/C++
>
> On 2/21/07, Rodrigo Ferreira <rsferreira at vipway.com.br> wrote:
> > Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c
> e
> > .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu
> > utilizava o turbo c++ no win, e agora no Free estou tentando usar o
> > gcc/g++, só que no programa mais simples que estou tentando fazer
> > aparece erro.
> >
> > Programa teste:
> >
> > #include "/usr/include/stdio.h"
> > #include "/usr/include/conio.h"
> >
> > void main (void)
> > {
> > puts ("Alo Mundo");
> > getch();
> > }
> >
> > dai quando eu dou g++ teste.cpp, aparece esses erros:
> > teste.cpp:2:32: /usr/include/conio.h: No such file or directory
> > teste.cpp:5: error: `main' must return `int'
> > teste.cpp: In function `int main(...)':
> > teste.cpp:7: error: `getch' undeclared (first use this function)
> > teste.cpp:7: error: (Each undeclared identifier is reported only once
> > for each function it appears in.)
>
> Um dos erros que eu ia apontar já foi apontado pelo compilador C++
> (em C não seria indicado como erro): a função main() deve retornar
> um valor inteiro (int), de modo que tem que ser declarada como "int
> main()" ou "int main(int argc, char **argv)" (ou ainda "int main(int
> argc, char *argv[])"). A isso está ligado ou outro erro no seu
> programa, mas que não está indicado acima: para sair da função que
> retorna int, você tem obrigatoriamente que ter um comando "return
> valor;", onde "valor" é uma expressão com valor inteiro (geralmente -
> - especialmente no UNIX -- main() retorna 0 quando é bem sucedido),
> ou uma chamada "exit(valor);", onde "valor" também é inteiro.
>
> Quando você está incluindo arquivos de cabeçalho da biblioteca
> padrão, a convenção é usar '#include <cabeçalho.h>', ao invés de '#include
> "cabeçalho.h"'. Esta última forma, usando aspas, é usada para
> arquivos de cabeçalho criados pelo próprio programador, para
> distingüi-los dos cabeçalhos padronizados. Também não é usual
> colocar o caminho completo dos arquivos, especialmente quando se
> está usando cabeçalhos da biblioteca padrão (com <>, e não com aspas,
> pois o compilador sabe como encontrá-los).
Só um parentses nesse bapo, se me permite PAPiris...
o include com <> significa que o compilador irar procurar pelo arquivo
nos PATH padrão de pesquisa (INCLUDE) e com "" só irá pesquisar no
diretório atual
por exemplo:
#include <stdio.h>
ele irá procurar em /usr/include e /usr/X11R6/include. Essa procura
é feita adicionando o PATH ao nome do arquivo e o compilador tenta abri-lo
caso vc precise de arquivos system net ou outro qualquer
deve ser feito da forma:
#include <sys/time.h>
caso voce queira incluir ou modificar a pesquisa olhe as opções -I (include)
e -L (lib) do gcc
e veja também sobre variáveis de ambiente (INCLUDE/LIB/CC e outras)
>
> Como outros já disseram, conio.h não é um cabeçalho padrão e a função
> getch(), que seria declarada nesse cabeçalho específico dos
> compiladores da Borland, também não é comumente aceita no UNIX (pelo
> menos não com o mesmo sentido que teria no compilador da Borland).
> Principalmente enquanto você está aprendendo, procure aprender a
> linguagem padrão, ao invés de uma implementação específica.
>
> Outra coisa: seu arquivo indica programa em C++, mas o código que
> você escreveu é C. Não que esteja estritamente errado, mas a minha
> recomendação pessoal é que se você vai usar apenas C em um módulo de
> programa, use o compilador C (costuma ser mais rápido) e coloque nos
> arquivos a extensão ".c", ao invés de ".cpp" ou ".cc". Ou, então,
> aprenda logo C++ através de exemplos usando recursos próprios do C++,
> se quiser usar os recursos que essa linguagem oferece antes de
> ficar "viciado" em C puro e simples.
>
> --
> Um abraço.
> Paulo A. P. Pires
>
> ... Qui habet aurem audiat quid Spiritus dicat ecclesiis.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
--
Nilton José Rizzo
805 Informatica
Disseminado tecnologias
021 2413 9786
Mais detalhes sobre a lista de discussão freebsd