Ajuda compilador GNU [RESOLVIDO]

1. Ajuda compilador GNU [RESOLVIDO]

diego
spork1on

(usa Ubuntu)

Enviado em 11/10/2013 - 16:48h

Olá!
recentemente comecei a estudar C pelo livro 'Linguagem C' de Luís Damas.

Minha pergunta pode ser bem simples, mas pelo que aprendi até então eu não consegui resolver a situação. Então aí vai:

Eu sempre escrevi os programas do livro no notepad++ e compilava com o gcc (MinGW), porque eu utilizava windows.
Recentemente mudei para o Ubuntu, então passei a utilizar o gedit e compilar com o GNU.

Aí é que vem o problema...

O exercício é o seguinte: "Escreva um programa que solicite um inteiro (entre 0 e 255) ao usuário e mostre o inteiro seguinte e o caractere correspondente.

O código ficou assim(como demonstrado no livro):
--------------------------------------------------------------------------------------------------
#include <stdio.h>
main()
{
int num;
printf("Introduza um Inteiro: "); scanf("%d", &num);

printf("Foi introduzido %d cujo caractere = '%c'\n", num, (char) num);
printf("O caractere seguinte = '%c' e tem o ASCII n. '%d'\n", (char) num + 1, num + 1);
}
---------------------------------------------------------------------------------------------------
No windows, com o MinGW, a compilação ocorria normalmente e era gerado o executável que rodava perfeitamente. (gcc -o prog prog.c)

No Ubuntu, por sua vez, o compilador acusa esta série de erros:

gcc -o prog0214 prog0214gedit.c
prog0214gedit.c: Na função ‘main’:
prog0214gedit.c:5:2: erro: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
prog0214gedit.c:5:49: erro: ‘num’ undeclared (first use in this function)
prog0214gedit.c:5:49: nota: each undeclared identifier is reported only once for each function it appears in.

Como assim é necessário um caractere daqueles antes do printf?
Porque ele não aceita que a variável 'num' seja indefinida? (porque será captada pelo scanf)

O que está acontecendo de errado?!

VALE RESSALTAR QUE EU ESTOU ESTUDANDO C, E NÃO C++. E que eu sou muito novato ainda hahhaa


  


2. Re: Ajuda compilador GNU [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 11/10/2013 - 17:05h

bleft escreveu:

Olá!
recentemente comecei a estudar C pelo livro 'Linguagem C' de Luís Damas.

Minha pergunta pode ser bem simples, mas pelo que aprendi até então eu não consegui resolver a situação. Então aí vai:

Eu sempre escrevi os programas do livro no notepad++ e compilava com o gcc (MinGW), porque eu utilizava windows.
Recentemente mudei para o Ubuntu, então passei a utilizar o gedit e compilar com o GNU.

Aí é que vem o problema...

O exercício é o seguinte: "Escreva um programa que solicite um inteiro (entre 0 e 255) ao usuário e mostre o inteiro seguinte e o caractere correspondente.

O código ficou assim(como demonstrado no livro):
--------------------------------------------------------------------------------------------------
#include <stdio.h>
main()
{
int num;
printf("Introduza um Inteiro: "); scanf("%d", &num);

printf("Foi introduzido %d cujo caractere = '%c'\n", num, (char) num);
printf("O caractere seguinte = '%c' e tem o ASCII n. '%d'\n", (char) num + 1, num + 1);
}
---------------------------------------------------------------------------------------------------
No windows, com o MinGW, a compilação ocorria normalmente e era gerado o executável que rodava perfeitamente. (gcc -o prog prog.c)

No Ubuntu, por sua vez, o compilador acusa esta série de erros:

gcc -o prog0214 prog0214gedit.c
prog0214gedit.c: Na função ‘main’:
prog0214gedit.c:5:2: erro: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
prog0214gedit.c:5:49: erro: ‘num’ undeclared (first use in this function)
prog0214gedit.c:5:49: nota: each undeclared identifier is reported only once for each function it appears in.

Como assim é necessário um caractere daqueles antes do printf?
Porque ele não aceita que a variável 'num' seja indefinida? (porque será captada pelo scanf)

O que está acontecendo de errado?!

VALE RESSALTAR QUE EU ESTOU ESTUDANDO C, E NÃO C++. E que eu sou muito novato ainda hahhaa


Faltou completar o #include <stdio.h>

Erro muito primário, sem essa biblioteca, nada funciona.


3. Re: Ajuda compilador GNU [RESOLVIDO]

diego
spork1on

(usa Ubuntu)

Enviado em 11/10/2013 - 17:17h

rei_astro escreveu:

bleft escreveu:

Olá!
recentemente comecei a estudar C pelo livro 'Linguagem C' de Luís Damas.

Minha pergunta pode ser bem simples, mas pelo que aprendi até então eu não consegui resolver a situação. Então aí vai:

Eu sempre escrevi os programas do livro no notepad++ e compilava com o gcc (MinGW), porque eu utilizava windows.
Recentemente mudei para o Ubuntu, então passei a utilizar o gedit e compilar com o GNU.

Aí é que vem o problema...

O exercício é o seguinte: "Escreva um programa que solicite um inteiro (entre 0 e 255) ao usuário e mostre o inteiro seguinte e o caractere correspondente.

O código ficou assim(como demonstrado no livro):
--------------------------------------------------------------------------------------------------
#include <stdio.h>
main()
{
int num;
printf("Introduza um Inteiro: "); scanf("%d", &num);

printf("Foi introduzido %d cujo caractere = '%c'\n", num, (char) num);
printf("O caractere seguinte = '%c' e tem o ASCII n. '%d'\n", (char) num + 1, num + 1);
}
---------------------------------------------------------------------------------------------------
No windows, com o MinGW, a compilação ocorria normalmente e era gerado o executável que rodava perfeitamente. (gcc -o prog prog.c)

No Ubuntu, por sua vez, o compilador acusa esta série de erros:

gcc -o prog0214 prog0214gedit.c
prog0214gedit.c: Na função ‘main’:
prog0214gedit.c:5:2: erro: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
prog0214gedit.c:5:49: erro: ‘num’ undeclared (first use in this function)
prog0214gedit.c:5:49: nota: each undeclared identifier is reported only once for each function it appears in.

Como assim é necessário um caractere daqueles antes do printf?
Porque ele não aceita que a variável 'num' seja indefinida? (porque será captada pelo scanf)

O que está acontecendo de errado?!

VALE RESSALTAR QUE EU ESTOU ESTUDANDO C, E NÃO C++. E que eu sou muito novato ainda hahhaa


Faltou completar o #include <stdio.h>

Erro muito primário, sem essa biblioteca, nada funciona.


Hahaha eu colei errado aqui... no programa ele está certinho: #include <stdio.h>

então o problema continua...

Mas como assim completar o #include <stdio.h>, rei_astro?



4. Re: Ajuda compilador GNU [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 11/10/2013 - 17:32h

Rapaz, eu compilei aqui e não deu erro algum. Tente mudar o comando:

gcc codigo.c -o executavel


5. Re: Ajuda compilador GNU [RESOLVIDO]

diego
spork1on

(usa Ubuntu)

Enviado em 11/10/2013 - 17:50h

rei_astro escreveu:

Rapaz, eu compilei aqui e não deu erro algum. Tente mudar o comando:

gcc codigo.c -o executavel



Esquisito!!

aqui continua dando erro! tem algum outro compilador? ou alguma atualização que possa corrigir isso?

vale ressaltar que sou novato no linux tb! HAHAH

Muito obrigado por estar respondendo rei_astro


6. Re: Ajuda compilador GNU [RESOLVIDO]

diego
spork1on

(usa Ubuntu)

Enviado em 11/10/2013 - 18:16h

alguem tem alguma ideia?


7. Re: Ajuda compilador GNU [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 11/10/2013 - 23:11h

tentou usar codeblocks eu sempre usava ele tem ele no repositorio do ubuntu da uma pesquisada la
e quando você for instalar maquie todas as opções de plugins e tente rodar o seu programa vou deixar o site alguns sites aqui

http://www.sempreupdate.com.br/2013/04/instalando-versao-atualizada-do.html

http://www.codeblocks.org/


8. Re: Ajuda compilador GNU [RESOLVIDO]

diego
spork1on

(usa Ubuntu)

Enviado em 12/10/2013 - 02:07h

josh escreveu:

tentou usar codeblocks eu sempre usava ele tem ele no repositorio do ubuntu da uma pesquisada la
e quando você for instalar maquie todas as opções de plugins e tente rodar o seu programa vou deixar o site alguns sites aqui

http://www.sempreupdate.com.br/2013/04/instalando-versao-atualizada-do.html

http://www.codeblocks.org/


Vou testar! Valeu josh!


9. Re: Ajuda compilador GNU [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 12/10/2013 - 02:10h

bleft escreveu:

josh escreveu:

tentou usar codeblocks eu sempre usava ele tem ele no repositorio do ubuntu da uma pesquisada la
e quando você for instalar maquie todas as opções de plugins e tente rodar o seu programa vou deixar o site alguns sites aqui

http://www.sempreupdate.com.br/2013/04/instalando-versao-atualizada-do.html

http://www.codeblocks.org/


Vou testar! Valeu josh!


de nada se isso resolver o seu problema marque como Resolvido e escolha a melhor resposta


10. Re: Ajuda compilador GNU [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/10/2013 - 07:56h

bleft escreveu:

Olá!
recentemente comecei a estudar C pelo livro 'Linguagem C' de Luís Damas.

Minha pergunta pode ser bem simples, mas pelo que aprendi até então eu não consegui resolver a situação. Então aí vai:

Eu sempre escrevi os programas do livro no notepad++ e compilava com o gcc (MinGW), porque eu utilizava windows.
Recentemente mudei para o Ubuntu, então passei a utilizar o gedit e compilar com o GNU.

Aí é que vem o problema...

O exercício é o seguinte: "Escreva um programa que solicite um inteiro (entre 0 e 255) ao usuário e mostre o inteiro seguinte e o caractere correspondente.

O código ficou assim(como demonstrado no livro):

#include <stdio.h>
main()
{
int num;
printf("Introduza um Inteiro: "); scanf("%d", &num);

printf("Foi introduzido %d cujo caractere = '%c'\n", num, (char) num);
printf("O caractere seguinte = '%c' e tem o ASCII n. '%d'\n", (char) num + 1, num + 1);
}


No windows, com o MinGW, a compilação ocorria normalmente e era gerado o executável que rodava perfeitamente. (gcc -o prog prog.c)

No Ubuntu, por sua vez, o compilador acusa esta série de erros:

gcc -o prog0214 prog0214gedit.c
prog0214gedit.c: Na função ‘main’:
prog0214gedit.c:5:2: erro: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
prog0214gedit.c:5:49: erro: ‘num’ undeclared (first use in this function)
prog0214gedit.c:5:49: nota: each undeclared identifier is reported only once for each function it appears in.

Como assim é necessário um caractere daqueles antes do printf?
Porque ele não aceita que a variável 'num' seja indefinida? (porque será captada pelo scanf)

O que está acontecendo de errado?!

VALE RESSALTAR QUE EU ESTOU ESTUDANDO C, E NÃO C++. E que eu sou muito novato ainda hahhaa


Como você está estudando, então vou lhe fazer logo de cara uma recomendação muito importante: troque de livro, pois esse que você disse estar usando (que eu não conheço) está lhe ensinando a usar uma forma de programar que está obsoleta.

As mensagens de erro que você recebe ao tentar compilar são típicas de quando o compilador encontra algum caráter inesperado ao longo do arquivo, que confundem o analisador gramatical não apenas naquele ponto, mas dali para frente.

Eu consigo obter as mesmas mensagens que você se eu remover o ponto-e-vírgula depois da declaração de num. Na postagem que você colocou acima, esse ponto-e-vírgula existe, mas tem certeza de que existe também no seu arquivo original? Se o ponto-e-vírgula estiver lá, experimente rodar o comando "hexdump -C prog0214gedit.c", e veja se o caráter que segue int num é realmente um ponto-e-vírgula (";", código hexadecimal 3B).


11. Re: Ajuda compilador GNU [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 12/10/2013 - 09:42h

paulo1205 escreveu:

bleft escreveu:

Olá!
recentemente comecei a estudar C pelo livro 'Linguagem C' de Luís Damas.

Minha pergunta pode ser bem simples, mas pelo que aprendi até então eu não consegui resolver a situação. Então aí vai:

Eu sempre escrevi os programas do livro no notepad++ e compilava com o gcc (MinGW), porque eu utilizava windows.
Recentemente mudei para o Ubuntu, então passei a utilizar o gedit e compilar com o GNU.

Aí é que vem o problema...

O exercício é o seguinte: "Escreva um programa que solicite um inteiro (entre 0 e 255) ao usuário e mostre o inteiro seguinte e o caractere correspondente.

O código ficou assim(como demonstrado no livro):

#include <stdio.h>
main()
{
int num;
printf("Introduza um Inteiro: "); scanf("%d", &num);

printf("Foi introduzido %d cujo caractere = '%c'\n", num, (char) num);
printf("O caractere seguinte = '%c' e tem o ASCII n. '%d'\n", (char) num + 1, num + 1);
}


No windows, com o MinGW, a compilação ocorria normalmente e era gerado o executável que rodava perfeitamente. (gcc -o prog prog.c)

No Ubuntu, por sua vez, o compilador acusa esta série de erros:

gcc -o prog0214 prog0214gedit.c
prog0214gedit.c: Na função ‘main’:
prog0214gedit.c:5:2: erro: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
prog0214gedit.c:5:49: erro: ‘num’ undeclared (first use in this function)
prog0214gedit.c:5:49: nota: each undeclared identifier is reported only once for each function it appears in.

Como assim é necessário um caractere daqueles antes do printf?
Porque ele não aceita que a variável 'num' seja indefinida? (porque será captada pelo scanf)

O que está acontecendo de errado?!

VALE RESSALTAR QUE EU ESTOU ESTUDANDO C, E NÃO C++. E que eu sou muito novato ainda hahhaa


Como você está estudando, então vou lhe fazer logo de cara uma recomendação muito importante: troque de livro, pois esse que você disse estar usando (que eu não conheço) está lhe ensinando a usar uma forma de programar que está obsoleta.

As mensagens de erro que você recebe ao tentar compilar são típicas de quando o compilador encontra algum caráter inesperado ao longo do arquivo, que confundem o analisador gramatical não apenas naquele ponto, mas dali para frente.

Eu consigo obter as mesmas mensagens que você se eu remover o ponto-e-vírgula depois da declaração de num. Na postagem que você colocou acima, esse ponto-e-vírgula existe, mas tem certeza de que existe também no seu arquivo original? Se o ponto-e-vírgula estiver lá, experimente rodar o comando "hexdump -C prog0214gedit.c", e veja se o caráter que segue int num é realmente um ponto-e-vírgula (";", código hexadecimal 3B).


Só uma pequena correção: não é caráter, mas sim caractere.

Quanto ao código, removendo o ; depois da declaração do num realmente o erro ocorre, mas com o ; não dá erro. Verifique o seu código original.


12. Re: Ajuda compilador GNU [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/10/2013 - 17:33h

rei_astro escreveu:

Só uma pequena correção: não é caráter, mas sim caractere.

Quanto ao código, removendo o ; depois da declaração do num realmente o erro ocorre, mas com o ; não dá erro. Verifique o seu código original.


Errado, rei_astro. "Caractere" até é aceito hoje em dia porque, de tanto os maus tradutores de livros de informática errarem, o mau uso que eles faziam da língua acabou "pegando" entre os pobres e também ignorantes leitores dos livros por eles traduzidos.

A forma original em língua portuguesa da palavra cujo plural é "caracteres" é "caráter". E não é uma variante de acordo com a acepção: usa-se "caráter" tanto para descrever os seus traços pessoais quanto para os entalhes das moedas e sinais tipográficos. Aliás, a palavra chegou ao Português e ao Inglês através do Latim "character", a partir do grego "&#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;".

Em tempo: eu sou um filologista que valoriza a origem etimológica. Eu realmente não gosto de que a Língua Portuguesa, em sua evolução, tenha decidido que transformar "act" em "át", após decretar que o "c" era mudo. Há exemplos mais gritantes até, em que a desfiguração das raízes originais das palavras produzem uma confusão danada entre palavras irmãs (um exemplo que me ocorre agora é a palavra latina "exceptio", que deu origem, em Português, a formas distintas em "exceto" (sem o "p" e com o "t" original mantido), "exceção" (sem o "p" e com o "t" trocado por "ç") e "excepcional" (com o "p", e com o "t" trocado por "c"). Outro exemplo aberrante é o substantivo "Egito" que faz par com o adjetivo "egípcio", tudo por causa de derivações divergentes do original "Aegyptum".

Ao mesmo tempo, porém, eu "cultuo" a normal culta, mesmo sem gostar dela. Dois caracteres são sempre e exclusivamente a composição de um caráter com outro caráter. Mas quem sabe se, daqui a algum tempo, o "act" que virou "át" não volta a ser oficialmente "act"? Só espero que não mudem a sílaba tônica de lugar (i.e. que seja "carácter", não "caractér(e)"). ;)



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts