2012-02-01 10 views
3

私はC++プログラミングが新しくなっていますが、私はPythonとFreeBASICでSDLを広く使用しています。私はここに何か愚かな行方不明だと確信していますが、何を試しても私はエラーを取得し続けます "error:期待される初期化子の前に 'namespace'"私の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 { 
    ... 

ここで、 'struct 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