Структура SDL_WINDOWEVENT_ROTATE

Код, который я пытаюсь скомпилировать, использует структуру с именем SDL_WINDOWEVENT_ROTATE. Я не могу найти эту структуру в SDL API, и компилятор выдает мне необъявленное (первое использование в этой функции) сообщение об ошибке.

Скорее всего, разработчик написал ложный код?

2 ответа

Решение

Соглашения об именах

Прежде всего SDL_WINDOWEVENT_ROTATE это не структура, а значение перечисления. Перечисления в SDL все заглавные буквы в то время как структуры, а структуры и функции приведены в форме SDL + имя, начинающееся с заглавной буквы т.е. SDL_Surface


SDL_WindowEventID

Я просмотрел документацию и не нашел ссылок на SDL_WINDOWEVENT_ROTATE, Но есть перечисление под названием [SDL_WindowEventID][1] который имеет такие значения, как SDL_WINDOWEVENT_MOVED


SDL_WINDOWEVENT_ROTATE

После быстрого поиска я нашел этот кусок кода в репозитории Github:

typedef enum
{
    SDL_WINDOWEVENT_NONE,           /**< Never used */

    // ....
    // Lots of enum values
    // ....

    SDL_WINDOWEVENT_ROTATE          /**< New event type for rotation of iOS */
} SDL_WindowEventID;

Посмотрев на вину за этот конкретный файл, я обнаружил коммит, который добавил эту строку.

53b2576b "new299 2013-04-06 исправлена ​​локальная проблема изменения размера

Итак, без дополнительной информации, я предполагаю, что создатель этого проекта отредактировал SDL_video.h файл, и вы пытаетесь скомпилировать этот проект или проект, основанный на нем. я

SDL_WINDOWEVENT_ROTATE - это тип события, которое находится в перечислении. Структура, которую вы хотите, это SDL_WindowEvent. Он содержит тип, отметку времени и два целых числа, которые являются data1 и data2, их содержимое зависит от типа события окна.

Для получения дополнительной информации посетите: http://wiki.libsdl.org/SDL_WindowEvent

Кстати, какую версию SDL вы используете? Я притворяюсь, что вы используете SDL-2.0

Другие вопросы по тегам