История изменений
Исправление safocl, (текущая версия) :
так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...
if (event.type == SDL_EVENT_MOUSE_MOTION)
auto i = event.motion.x;
тут ub либо на первой, либо на второй строке — поскольку это разные мемберы, и один из них не является активным.
но если сделать
struct GenericEvent{
Uint32 type;
};
typedef union SDL_Event
{
GenericEvent generic; /**< Event type, shared with all events */
SDL_MouseMotionEvent motion;
SDL_MouseButtonEvent button;
SDL_QuitEvent quit; /**< Quit request event data */
} SDL_Event;
то через
if (event.generic.type == SDL_EVENT_MOUSE_MOTION)
auto i = event.motion.x;
всё будет ок. (без UB)
Исправление safocl, :
так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...
if (event.type == SDL_EVENT_MOUSE_MOTION)
auto i = event.motion.x;
тут ub либо на первой, либо на второй строке — поскольку это разные мемберы, и один из них не является активным.
Исходная версия safocl, :
так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...