Я пытаюсь изучить простой способ создания управляемого окна в Linux, и исследования привели меня к использованию SDL. Я был на второй части http://lazyfoo.net/tutorials/SDL, где загружал изображение на экран. Я скопировал их код и создал пользовательские значения. Это мой код:C Ошибка между объявлением определения define и 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», то первая ошибка, я получаю:
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 не найден.
Что я делаю неправильно?
У вас был '# define's right в первый раз. Я предполагаю, что он не знает о типе 'SDL_Window', хотя я не уверен, почему, поскольку я думаю, что он должен быть включен в заголовок SDL. – 0x5453
Кажется, что у вас есть заголовок 'SDL/SDL.h', который является пустым или иным образом действительным, но не релевантным в каталоге, где ищет компилятор, и он не находит« официальную »версию. Поскольку вы используете '-Wall', вы должны добавить' -H' тоже, что скажет вам, какой файл включен для 'SDL/SDL.h'. И, хорошие шансы, что знание того, какой файл включен, покажет, что происходит не так. По сути, в первой версии тип 'SDL_Window' неизвестен, поэтому заголовок' SDL/SDL.h', по-видимому, не выполняет свою работу. –