(C ++) Функция не объявляется

0

Я новичок в SDL, и у меня есть функция bool init(). Я изучаю SDL 2.0 от lazyfoot.net в течение нескольких дней без проблем. Я по сути копировал их код, и сегодня я пытался сделать свое. (EDIT: Я знаю, что кто-то сказал, что у меня устаревший заголовочный файл. Это не тот случай, потому что с тех пор, как я установил библиотеку, я смог использовать SDL_WINDOWPOS_UNDEFINED и другие функции 2.0). По какой-то причине это не сработает.

Я использую Windows 7 Starter с кодом :: Blocks (MinGW как мой компилятор)

Когда я (пытаюсь) построить и запустить, есть красный флаг рядом с строкой 17, что и есть.

bool init() {

Вот весь исходный код.

#include <iostream>
#include <SDL.h>

const int SCREEN_WIDTH = 500;
const int SCREEN_HEIGHT = 500;

bool init();
bool loadMedia();
void quit();

int time = 5000;

SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
SDL_Surface* topImage = NULL;

bool init() {
    bool success = true;
    if(SDL_Init(SDL_INIT_VIDEO) < 0) {
        std::cout << SDL_GetError() << std::endl;
        success = false;
    }
    else{
        SDL_CreateWindow("My Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
        if(window == NULL) {
            std::cout << SDL_GetError() << std::endl;
            success = false;
        }
    }
    return success;
}

bool loadMedia() {
    bool success = true;
    surface = SDL_GetWindowSurface(window);
    if(surface == NULL) {
        std::cout << SDL_GetError() << std::endl;
        success = false;
    }
    else {
        topImage = SDL_LoadBMP("image.bmp");
        if(topImage = NULL) {
            std::cout << SDL_GetError() << std::endl;
            success = false;
        }
        else {
            SDL_BlitSurface(topImage, NULL, surface, NULL);
            SDL_UpdateWindowSurface(window);
            SDL_Delay(time);
        }
    }
    return success;
}

void quit() {
    SDL_FreeSurface(topImage);
    topImage = NULL;

    SDL_DestroyWindow(window);
    window = NULL;
    surface = NULL;

    SDL_Quit();
}

int main(int argc, char* args[]) {
if(init() == true) {
    init();
        if(loadMedia() == true) {
            loadMedia();
        }
    }
quit();
return 0;
}
  • 0
    Попробуйте переименовать init в другое. Может быть, это имя уже используется где-то в SDL.h
  • 1
    Что на самом деле говорит ошибка?
Показать ещё 5 комментариев
Теги:
sdl

1 ответ

2

Вы получаете эту ошибку:

error: 'SDL_WINDOWPOS_UNDEFINED' was not declared in this scope

что означает, что вы включаете заголовки для более старой версии SDL. но SDL_WINDOWPOS_UNDEFINED определяется в версии SDL 2.0.

Просто включите правильные заголовки, которые вы можете загрузить с официального сайта библиотеки: http://www.libsdl.org/download-2.0.php

  • 0
    Извините, но это не так. Я должен был быть немного более конкретным. (Я просто добавил информацию в мой первый абзац). У меня есть SDL 2.0, и SDL_WINDOWPOS_UNDEFINED всегда работал для меня. Мои файлы SDL определенно не устарели
  • 0
    Так что именно сгенерированная ошибка?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню