[FUG-BR] RES: C/C++

Anderson P. Matos - LINHARES ON LINE anderson em linharesonline.com.br
Sábado Fevereiro 24 08:40:25 BRT 2007


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...

Att. 

 
Anderson P. Matos              
Analista de Suporte
Linhares Serviços On-Line
Tel: (27) 2103-8100
E-mail: suporte em linharesonline.com.br
---------------------------------------------------------
Tel.: (27) 2103-8105                 
Cel: (27) 9936-4186
E-mail: anderson em linharesonline.com.br  
Messenger: modelobesta em hotmail.com
Skype: andersonpmatos

-----Mensagem original-----
De: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em 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 em 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).

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





Mais detalhes sobre a lista de discussão freebsd