erro de namespace em compilacao [RESOLVIDO]

1. erro de namespace em compilacao [RESOLVIDO]

Alex Fernando Ferreira
staltux

(usa Slackware)

Enviado em 21/02/2009 - 05:06h

eu estou tentando compilar uma classe, que nem usa namespace, e o compilador esta acusando erro de sintax no namespace que eu nao estou usando...
detalhe...eu ja tentei colocar explicitamente "using namespace std;"
mas nao adiantou...fora que eu nem sei oque é ou pra que serve esse namespace...nunca usei...
vai o erro completo:

#########################################
make all
Building file: ../src/animacao.cpp
Invoking: GCC C++ Compiler
g++ -O3 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/animacao.d" -MT"src/animacao.d" -o"src/animacao.o" "../src/animacao.cpp"
In file included from ../src/animacao.cpp:2:
../src/animacao.h:7:17: warning: SDL.h: No such file or directory
In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/iostream.h:31,
from ../src/animacao.cpp:3:
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
../src/animacao.cpp:58:2: warning: no newline at end of file
In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/iostream:44,
from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/iostream.h:32,
from ../src/animacao.cpp:3:
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/i486-slackware-linux/bits/c++config.h:149: error: expected unqualified-id before 'namespace'
../src/animacao.cpp: In constructor 'Animacao::Animacao(char)':
../src/animacao.cpp:27: warning: array subscript has type 'char'
../src/animacao.cpp:28: warning: array subscript has type 'char'
../src/animacao.cpp:23: warning: unused variable 'quadros'
../src/animacao.cpp:24: warning: unused variable 'fps'
../src/animacao.cpp: In member function 'void Animacao::addQuadro(SDL_Surface*, char)':
../src/animacao.cpp:44: warning: array subscript has type 'char'
../src/animacao.cpp:45: warning: array subscript has type 'char'
../src/animacao.cpp: In member function 'SDL_Surface* Animacao::getQuadro()':
../src/animacao.cpp:57: warning: array subscript has type 'char'
make: *** [src/animacao.o] Error 1
###################################################33

e como eu faço pra que a parte acima fique em destaque, amarelo como eu vejo em outros posts?



  


2. MELHOR RESPOSTA

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 21/02/2009 - 09:49h

há um 'combo' de erros e advertências aqui, então vamos por partes:

* In file included from ../src/animacao.cpp:2:
../src/animacao.h:7:17: warning: SDL.h: No such file or directory

* o sdl está instalado corretamente?

** In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/iostream.h:31,
from ../src/animacao.cpp:3:
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

** evite usar a terminação .h ao incluir headers c++, em especial as headers padrão da libstdc++

*** ../src/animacao.cpp:58:2: warning: no newline at end of file

*** nada comprometedor, apenas deixe uma linha vazia no fim do arquivo fonte para o gcc não encher o saco

**** In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/iostream:44,
from /usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/backward/iostream.h:32,
from ../src/animacao.cpp:3:
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../include/c++/4.2.4/i486-slackware-linux/bits/c++config.h:149: error: expected unqualified-id before 'namespace'

**** aqui o problema de sua questão. uma causa provável é a ausência de um ; após fechar a classe - } ao invés de };

***** ../src/animacao.cpp: In constructor 'Animacao::Animacao(char)':
../src/animacao.cpp:27: warning: array subscript has type 'char'
../src/animacao.cpp:28: warning: array subscript has type 'char'
../src/animacao.cpp:23: warning: unused variable 'quadros'
../src/animacao.cpp:24: warning: unused variable 'fps'
../src/animacao.cpp: In member function 'void Animacao::addQuadro(SDL_Surface*, char)':
../src/animacao.cpp:44: warning: array subscript has type 'char'
../src/animacao.cpp:45: warning: array subscript has type 'char'
../src/animacao.cpp: In member function 'SDL_Surface* Animacao::getQuadro()':
../src/animacao.cpp:57: warning: array subscript has type 'char'

***** essa sequencia provavelmente são warnings decorrentes da 1a e da última, ou a somatória delas. sem o código fonte é difícil dar um veredito, mas é provável que desapareçam por encanto após a correção dos itens acima.

caso o problema persista, poste o código. nesses erros em cascata as causas normalmente vêm de porções de código aparentemente inocentes.

3. Re: erro de namespace em compilacao [RESOLVIDO]

Alex Fernando Ferreira
staltux

(usa Slackware)

Enviado em 21/02/2009 - 12:55h

ta vamo lá...
o erro estava mesmo no "};" na declaração da classe Animacao dentro do header...eu nao sabia que precisava disso...em java só sou obrigado a colocadar ";" em metodos e atributos...nao no ";" da classe...
agora respondendo as outras coisas

* o sdl está instalado corretamente?
R: nao liga pra isso nao...esta sim, e funcionando,ele ta enchendo pq, bom nem sei pq, isso ta dentro de um ifndef:
#ifdef __APPLE__
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
mas nao tenho problemas, todas as funções SDL entao ok!

** evite usar a terminação .h ao incluir headers c++, em especial as headers padrão da libstdc++
R: eu achei que era exatamente o contrario...aprendi em c# a colocar os .h da vida...ok entao...

***** essa sequencia provavelmente são warnings decorrentes da 1a e da última, ou a somatória delas. sem o código fonte é difícil dar um veredito, mas é provável que desapareçam por encanto após a correção dos itens acima.
R: eu estou usando um array de char, foi o tipo primitivo que menos ocupa memoria que eu encontrei...
ele guarda o tempo em fps que um quadro de animação fica na tela...
nao pode ser negativo e nao vai ser maior que 255, dai a escolha pelo char...

é isso ai...to apanhando pacas em C++, ainda acho java bem mais facil para outras coisas!XD
mas C++/SDL é mais facil para gerenciar interações com o usuario...ficar usando os listeners do java é um s***...principalmente quando vc fica com uma tecla pressionada e ele fica retornando:
apertou
soltou
apertou
soltou........ ao envez de fazer isso apenas uma vez quando aperta, e outra quando solta...

mais uma vez obrigado...

# editado
eu retirei os ".h" nos header e o compilador nao encontra mais nada...vou colocar dnovo e ignorar esses warning






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts