Acqua Posted September 10, 2006 at 12:21 AM Report Share #49376 Posted September 10, 2006 at 12:21 AM boas! tava eu entretido a fazer os exemplos do livro "linguagem c" quando me deparo com uma situação estranha: chego ao capitulo das funções e procedimentos e nos 2 primeiros exemplos que dão sobre funções (para quem tem o livro, prog0503 e prog0504) e dá-me um erro igual em ambos. Aqui vai um exemplo: Exercicio: que apareça o output *** ***** ******* ***** *** Código: #include <stdio.h> linha3x() { int i; for (i=1 ; i<=3 ; i++) putchar('*'); putchar('\n'); } linha5x() { int i; for (i=1 ; i<=5 ; i++) putchar('*'); putchar('\n'); } linha7x() { int i; for (i=1 ; i<=7 ; i++) putchar('*'); putchar('\n'); } main() { linha3x(); linha5x(); linha7x(); linha5x(); linha3x(); } erro: linha 4,12 e 20 - ISO C++ forbids declaration of `linha' with no type pergunta: qual a razão para este erro? desde já obrigado. Link to comment Share on other sites More sharing options...
Acqua Posted September 10, 2006 at 12:37 AM Author Report Share #49379 Posted September 10, 2006 at 12:37 AM Problem resolvido! parece k o erro é do livro... Link to comment Share on other sites More sharing options...
Saco Posted September 10, 2006 at 02:05 AM Report Share #49392 Posted September 10, 2006 at 02:05 AM Não é erro do livro, o problema são as regras usadas na compilação do código. A razão do erro é que o ISO C++ não permite que as funções não tenham um tipo de retorno definido, nem que seja void. Se declarares linha3x, etc como void linha3x etc o erro desaparece... Link to comment Share on other sites More sharing options...
Warrior Posted September 10, 2006 at 09:07 AM Report Share #49401 Posted September 10, 2006 at 09:07 AM Ou então remove toda as flags de compilação. Se estiveres a usar o gcc compila somente como "gcc prog0503.c -o prog0503". Ou então uma boa ideia seria alterar o teu código para: #include <stdio.h> void linha3x() { int i; for (i=1 ; i<=3 ; i++) putchar('*'); putchar('\n'); } void linha5x() { int i; for (i=1 ; i<=5 ; i++) putchar('*'); putchar('\n'); } void linha7x() { int i; for (i=1 ; i<=7 ; i++) putchar('*'); putchar('\n'); } int main() { linha3x(); linha5x(); linha7x(); linha5x(); linha3x(); return 0; } Um bom hábito de programação é compilar sempre com todos os warnings ligados (os avisos -> o programa funciona, mas recebes um aviso de que algo que fizeste é menos correcto). Eu compilo sempre com "gcc prog0503.c -Wall -pedantic -O2 -o prog0503" Wall = Warnings all (todos os avisos) pedantic = seguir as normas do ANSI C O2 = optimizações de velocidade. O compilador optimiza o programa para velocidade, mesmo que para isso fique ligueiramente maior. Link to comment Share on other sites More sharing options...
Acqua Posted September 10, 2006 at 09:36 AM Author Report Share #49403 Posted September 10, 2006 at 09:36 AM O que eu fiz foi exactamente isso, adicionar o "void". Ainda programo com o Dev-C++... 😛 Link to comment Share on other sites More sharing options...
Warrior Posted September 10, 2006 at 10:34 AM Report Share #49408 Posted September 10, 2006 at 10:34 AM O Dev-C++ utiliza o gcc para compilar, e nas opções podes definir as flags de compilação (não estou em windows por isso não te posso dizer o sitio exacto, mas se nao encontrares avisa que eu ou alguem te dizemos) Link to comment Share on other sites More sharing options...
Triton Posted September 10, 2006 at 11:02 AM Report Share #49415 Posted September 10, 2006 at 11:02 AM Warrior, sabes se é possível actualizar o GCC para a última versão dentro do Dev-C++ ? É que estou a tentar aprender as normas do C99 e a versão que traz ainda é antiga. Tenho aqui ao lado Linux por isso talvez mais vale seguir por aí. 😁 <3 life Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now