Autor Tópico: Iniciar Conhecimentos Sobre C  (Lida 2551 vezes)

Offline Codeas

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Iniciar Conhecimentos Sobre C
« em: Novembro 12, 2008, 05:43:58 pm »
Como tenho algum tempo livre decidi tentar iniciar alguns conhecimentos sobre C ou C++, li umas coisas usei o Kwrite do Mandriva e tentei o programa básico.

#include<stdio.h>

int main()
{
printf ("Olá Amigo! \n");
return (0);
{

criei a pasta ProjectosC e guardei lá o meu programa ola.c, a indicação do tuturial diz para usar o comando gcc -c ola.c
Abri a consola e...

[daddy@localhost ProjectosC]$ gcc -c ola.c
ola.c: In function ‘main’:
ola.c:7: error: expected declaration or statement at end of input
ola.c:7: error: expected declaration or statement at end of input
[daddy@localhost ProjectosC]$

Na minha ignorância deve faltar-me alguma coisa. O que será?
Obrigado.

Offline HBK

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Iniciar Conhecimentos Sobre C
« Responder #1 em: Novembro 19, 2008, 12:45:10 pm »
Citação de: Codeas
Como tenho algum tempo livre decidi tentar iniciar alguns conhecimentos sobre C ou C++, li umas coisas usei o Kwrite do Mandriva e tentei o programa básico.

#include<stdio.h>

int main()
{
printf ("Olá Amigo! \n");
return (0);
{
troca o ultimo { por }
<a href="http://twitter.com/pm201" target="_blank" rel="nofollow"][/url]


mas que raio?

Offline DiogoOliveira

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Iniciar Conhecimentos Sobre C
« Responder #2 em: Novembro 19, 2008, 04:32:18 pm »
Pois.

{ para abrir e } para fechar

Offline southafrikanse

  • A noob in a geek world
  • Administrator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://www.tugatronica.com
Iniciar Conhecimentos Sobre C
« Responder #3 em: Novembro 20, 2008, 02:22:24 am »
Porque tens a função main a retornar um int?

Todos os códigos que vi, o main nunca retorna nada (deveria ser void). Podes me explicar qual é a vantagem?
Blog Pessoal | Tugatrónica | Fórum Webtuga
"Knowledge is knowing that a tomato is a fruit, but Wisdom is knowing not to put it in a fruit salad."

Offline KTachyon

  • Global Moderator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://twitter.com/KTachyon
Iniciar Conhecimentos Sobre C
« Responder #4 em: Novembro 20, 2008, 04:03:27 am »
Normalmente tem que se retornar um int, caso contrário o compilador dá um warning que informa que o código não está de acordo com o C99. O int serve para o processo comunicar ao processo mãe em que condições terminou.
My Q4 estimate: Macs: 5.89M; iPods: 4.19M; iPhones: 30.0M; iPads: 18.05M; Revenue: 37.00B; EPS: 9.50
AAPL Q3 result: Macs: 4.02M; iPods: 6.80M; iPhones: 26.0M; iPads: 17.04M; Revenue: 35.02B; EPS: 9.32

Offline southafrikanse

  • A noob in a geek world
  • Administrator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://www.tugatronica.com
Iniciar Conhecimentos Sobre C
« Responder #5 em: Novembro 20, 2008, 10:41:07 am »
Se tu o dizes KTachyon.

Mas nos casos em que estás a programar em C para microcontroladores como não há a tal classe "Mãe" que falas deve ser por isso que é void.
Blog Pessoal | Tugatrónica | Fórum Webtuga
"Knowledge is knowing that a tomato is a fruit, but Wisdom is knowing not to put it in a fruit salad."

Offline KTachyon

  • Global Moderator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://twitter.com/KTachyon
Iniciar Conhecimentos Sobre C
« Responder #6 em: Novembro 20, 2008, 12:14:41 pm »
É uma coisa que se deve a como o C começou a ser desenvolvido.

No início o C não tinha void, logo todas as funções retornavam qualquer coisa (normalmente um int), mesmo que esse valor não fosse utilizado. Quando o void foi implementado, não foi feito sem valor de retorno, pelo contrário, continua a apontar para um espaço de memória que contém lá qualquer coisa, que não foi modificada.

Para um programa que vai criar um processo filho, o retorno desse processo será o retorno da função main, que se for void, vai ser um valor "aleatório", que por acaso se encontrava em memória naquela altura.

No caso de o sistema operativo lançar um programa que tenha sido programado com void main(), quando esse programa termina, o sistema operativo vai receber o valor, podendo considerar o retorno como erro, considerando que o programa falhou e registando nos logs, informando o utilizador,... Entre outras coisas "feias".

Por isso foi criado o standard C99, que "obriga" a que o main retorne um int. Os compiladores que seguem este standard (que são práticamente todos hoje em dia), dão warning quando encontram a função main a retornar void. Continuam a permitir, mas avisam que não deve ser feito.

Existem mais coisas que podem parecer "estranhas" neste standard. Por exemplo, um que eu nunca percebi muito bem é obrigar-nos a colocar uma linha em branco no final de cada ficheiro com código fonte.
« Última modificação: Novembro 20, 2008, 12:15:12 pm por KhAoTiK_TaChYoN »
My Q4 estimate: Macs: 5.89M; iPods: 4.19M; iPhones: 30.0M; iPads: 18.05M; Revenue: 37.00B; EPS: 9.50
AAPL Q3 result: Macs: 4.02M; iPods: 6.80M; iPhones: 26.0M; iPads: 17.04M; Revenue: 35.02B; EPS: 9.32

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49