2017-01-23 11 views
1

私はLinuxで制御可能なウィンドウを作成する簡単な方法を学びたいと思っています。私はhttp://lazyfoo.net/tutorials/SDLの2番目の部分にあり、画面に画像をロードします。コードをコピーしてカスタム定義値を作成しました。これは私のコードです:C定義とcharポインタ宣言との間のエラー

#include <SDL/SDL.h> 
#define SDL_WINDOWPOS_UNDEFINED 0 
#define SCREEN_WIDTH 800 
#define SCREEN_HEIGHT 600 
#define SDL_WINDOW_SHOWN 1 

SDL_Window* gWindow; 
SDL_Surface* gScreenSurface; 
SDL_Surface* gHelloWorld; 

int init(){ 
int success = 1; 
if(SDL_Init(SDL_INIT_VIDEO) < 0) 
{ 
    printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); 
    success = 0; 
} 
else 
{ 
    gWindow = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); 
    if(gWindow == NULL) 
    { 
    printf("Window could not be created! SDL_Error: %s\n", SDL_GetError()); 
    success = 0; 
    } 
    else 
    { 
    gScreenSurface = SDL_GetWindowSurface(gWindow); 
    } 
} 
return success; 
} 

int loadMedia(){ 
int success = 1; 
gHelloWorld = SDL_LoadBMP("/circuit.png"); 
if(gHelloWorld == NULL) 
{ 
    printf("Unable to load image! SDL Error: %s\n", SDL_GetError()); 
    success = 0; 
} 
return success; 
} 

void close() 
{ 
SDL_FreeSurface(gHelloWorld); 
gHelloWorld = NULL; 
SDL_DestroyWindow(gWindow); 
gWindow = NULL; 
    SDL_Quit(); 
} 

int main(int argc, char* args[]){ 
    init(); 
    loadMedia(); 
    close(); 
    return 0; 
} 

でも「-Wall」と「-Wextra」コンパイラフラグをオンと「-lSDL」パラメータは、私が得る最初のエラーがあり、追加して、それをコンパイル:

私はその後、追加を進め01​​
program.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token  

は、私は愚かな何かをした思考定義に等しいので、私の最初の数行は今、このです:再コンパイルしようとすると、私は見

#include <SDL/SDL.h> 
#define SDL_WINDOWPOS_UNDEFINED=0 
#define SCREEN_WIDTH=800 
#define SCREEN_HEIGHT=600 
#define SDL_WINDOW_SHOWN=1 

warning: missing whitespace after the macro name 

これは、私が入力した等号と関連しており、私も上記と同じエラーが表示されます。

SDL.hが見つかりませんでした。

私は間違っていますか?

+0

最初に '#define'を正しく実行しました。私の推測では、SDLヘッダにSDL_Window型が含まれているとは思えない理由は分かりませんが、SDL_Window型についてはわかりません。 – 0x5453

+0

'SDL/SDL.h'ヘッダが空であるか、そうでなければ有効ですが、コンパイラが探しているディレクトリには関係なく、公式のバージョンが見つからないかのように聞こえます。 '-Wall'を使っているので、' -H'を追加すると、 'SDL/SDL.h 'にどのファイルが含まれているかがわかります。そして、どのファイルが含まれているか知っていると、何がうまくいかないのかが分かるでしょう。基本的に、最初のバージョンでは、 'SDL_Window'タイプは知られていないので、' SDL/SDL.h'ヘッダはおそらくその仕事をしていません。 –

答えて

2

#define=を使用しないでください。あなたのプログラムはまだ宣言されていないので、SDL_Windowを認識していません。 SDL 2のコードを1.2ヘッダーでコンパイルしようとしていると思われます。

関連する問題