리눅스에서 제어 가능한 창을 만드는 간단한 방법을 배우려고하고 있으며, 연구를 통해 SDL을 사용하게되었습니다. 나는 화면의 이미지를로드하는 http://lazyfoo.net/tutorials/SDL의 두 번째 부분에있었습니다. 코드를 복사하고 사용자 정의 정의 값을 만들었습니다. 이건 내 코드입니다 :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"매개 변수 내가 얻을 첫 번째 오류가 추가로 그것을 컴파일 :
#include <SDL/SDL.h>
#define SDL_WINDOWPOS_UNDEFINED=0
#define SCREEN_WIDTH=800
#define SCREEN_HEIGHT=600
#define SDL_WINDOW_SHOWN=1
다시 컴파일을 시도, 내가 볼 :
program.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
은 그때 내가 바보 같은 짓을 생각하고 정의에 동일, 나의 처음 몇 줄은 이제이 있습니다 추가 진행
warning: missing whitespace after the macro name
및 그에 대한 내용은 내가 입력 한 등호와 관련되어 있으며 위와 같은 오류가 표시됩니다.
SDL.h에 대해 불평하지 않았습니다.
내가 뭘 잘못하고 있니?
첫 번째로'# define'을 올바르게했습니다. 내 추측에 의하면 SDL 헤더에 SDL_Window 타입이 포함되어 있어야한다고 생각하기 때문에 SDL_Window 타입에 대해 알지 못한다. – 0x5453
비어 있거나 유효하지만 컴파일러가 찾고있는 디렉토리와 관련이없는'SDL/SDL.h' 헤더가있는 것처럼 들리며 '공식'버전을 찾지 못했습니다. '-Wall'을 사용하고 있기 때문에,'-H'를 추가해야합니다 - 그러면'SDL/SDL.h '에 어떤 파일이 포함되어 있는지 알려줄 것입니다. 그리고 어떤 파일이 포함되어 있는지 아는 것이 잘못 될 수 있음을 보여주는 좋은 기회입니다. 근본적으로, 첫 번째 버전에서'SDL_Window' 타입은 알려지지 않았기 때문에'SDL/SDL.h' 헤더는 아마 그 일을하지 않을 것입니다. –