2012-02-01 58 views
3

所以,我對C++編程相當陌生,但我已經廣泛地使用了SDL和python和FreeBASIC。我敢肯定,我在這裏錯過了一些愚蠢的東西,但不管我嘗試了什麼,我一直在我的video.h文件中收到錯誤「error:'namespace'之前的預期初始化器」。這讓我有點瘋狂。命名空間前的預期初始化器

#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

錯誤在哪一行? – 2012-02-01 21:16:02

+0

第4行。實際的錯誤消息是/home/dyngar/Workspace/C/CLAIR/video.h:4:1:錯誤:'namespace'之前的預期初始化程序對不起,我從舊版本的文件複製錯誤。 – Jsmith 2012-02-01 21:17:06

+0

你確定這是你的整個文件嗎?該錯誤中的行號不匹配 – 2012-02-01 21:18:06

回答

10

您提供的錯誤,error: expected initializer before ‘namespace’表明存在未終止的結構或變量聲明。例如:

struct foo { 
    ... 
} 

namespace video { 
    ... 

這裏,'struct foo'聲明不以分號結尾。這應該閱讀:

struct foo { 
    ... 
}; 

namespace video { 
    ... 

獲取(使用#include)所涉及的預處理使得這種類型的追查事情有點困難。例如,可能是您包含一個標題(就在做出namespace video聲明之前),該標題不會終止結構定義。

請檢查您的所有struct s和class es在您的標題和源文件中的大括號之後是否有分號。類似地,任何變量聲明,例如

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 2012-02-01 21:43:48

相關問題