2012-02-01 2 views
3

저는 C++ 프로그래밍을 처음 접했지만 파이썬과 FreeBASIC에서 광범위하게 SDL을 사용했습니다. 나는 바보 같은 뭔가를 놓치고있다. 그러나 나는 무엇을 시도하든 계속 오류가 발생한다. "오류 : 예상되는 이니셜 라이저가 '네임 스페이스'보다 먼저 내 video.h 파일에있다. 그것은 나를 조금 미치게합니다.네임 스페이스 이전에 예상되는 초기화 프로그램

#include "SDL/SDL.h" 
#include <iostream> 

namespace video { 
// This is here because like video, everything uses it and the players should never be able to touch it. 
int rolldice(int minimumroll, int maximumroll, int numberofdice); 
// Same Here. 
char* charraystring(std::string prestring); 
// Now we're in video proper 
// This function loads an image, checks to make sure it works, returns the image, and unloads the testing surface. 
SDL_Surface* loadimage(std::string path); 
// This is an optimized blitter that will exit with a signal if it encounters an error. 
void oblit(SDL_Surface* pic, SDL_Rect frame, SDL_Surface* screen, SDL_Rect location); 
} 
+0

오류는 무엇입니까? –

+0

Line 4. 실제 오류 메시지는 /home/dyngar/Workspace/C/CLAIR/video.h:4:1입니다. 오류 : 'namespace'이전의 예상 초기화 프로그램입니다. 죄송합니다. 이전 버전의 파일에서 오류를 복사했습니다. – Jsmith

+0

전체 파일이 확실합니까? 해당 오류의 줄 번호가 일치하지 않습니다 –

답변

10

당신이 제안하는 오류는 error: expected initializer before ‘namespace’은 구조 또는 종료되지 변수 선언이 있음을 시사한다. 뭔가가 같은 : 여기

struct foo { 
    ... 
} 

namespace video { 
    ... 

의 '구조체 foo는'선언은 세미콜론으로 종료되지 않습니다.

struct foo { 
    ... 
}; 

namespace video { 
    ... 

이 (#INCLUDE 사용) 관련된 전처리를 얻기 추적하기 위해 조금 더 열심히 일의이 유형을 만드는이 읽어야합니다. 예를 들어, 구조 정의를 종료하지 않는 헤더 (예 : namespace video 선언을 작성하기 전에)를 포함 할 수 있습니다.

가서 structclass의 헤더와 소스 파일에 닫는 중괄호 다음에 세미콜론이 있는지 확인하십시오. 비슷하게 모든 변수 선언.

int value // <-- oops, forgot the ';' 

namespace video { 
    ... 
+0

그건 내가 처음에 생각한 것이지만, 나는 그것을 찾을 수 없었다. SDL/SDL.h 파일을 통해 무엇이 있는지 확인하겠습니다. 관련이 있는지 모르겠지만 g ++ -I/home/dyngar/Workspace/C/CLAIR -std = gnu ++ 0x video.cpp -o video.o -lSDL을 사용하여 컴파일하려고하면 그냥 작동합니다. 벌금. 정말 이상하게 보이지만 제가 말했듯이 저는 C++을 처음 접했습니다. – Jsmith

관련 문제