diff --git a/include/SDL_audio.h b/include/SDL_audio.h
index fa934763f1cd0f2e7738691ad359d58b7bfa8f5a..41873e24c0202f221fc0336b2152f4bb904c7305 100644
--- a/include/SDL_audio.h
+++ b/include/SDL_audio.h
@@ -45,7 +45,7 @@ extern "C" {
 #endif
 
 /* The calculated values in this structure are calculated by SDL_OpenAudio() */
-typedef struct {
+typedef struct SDL_AudioSpec {
 	int freq;		/* DSP frequency -- samples per second */
 	Uint16 format;		/* Audio data format */
 	Uint8  channels;	/* Number of channels: 1 mono, 2 stereo */
diff --git a/include/SDL_cdrom.h b/include/SDL_cdrom.h
index ceb3b0c37dc533f711213209d64ef0d44e2f0c3f..bd415e78e04285472870085c443b5edcbfd80114 100644
--- a/include/SDL_cdrom.h
+++ b/include/SDL_cdrom.h
@@ -62,7 +62,7 @@ typedef enum {
 /* Given a status, returns true if there's a disk in the drive */
 #define CD_INDRIVE(status)	((int)status > 0)
 
-typedef struct {
+typedef struct SDL_CDtrack {
 	Uint8 id;		/* Track number */
 	Uint8 type;		/* Data or audio track */
 	Uint16 unused;
diff --git a/include/SDL_events.h b/include/SDL_events.h
index e3f5301b3d811ae055eea248199c92633d811712..880a3754012d8179b9f5262e0f5743b4ac75d465 100644
--- a/include/SDL_events.h
+++ b/include/SDL_events.h
@@ -106,14 +106,14 @@ enum {
 #define SDL_ALLEVENTS		0xFFFFFFFF
 
 /* Application visibility event structure */
-typedef struct {
+typedef struct SDL_ActiveEvent {
 	Uint8 type;	/* SDL_ACTIVEEVENT */
 	Uint8 gain;	/* Whether given states were gained or lost (1/0) */
 	Uint8 state;	/* A mask of the focus states */
 } SDL_ActiveEvent;
 
 /* Keyboard event structure */
-typedef struct {
+typedef struct SDL_KeyboardEvent {
 	Uint8 type;	/* SDL_KEYDOWN or SDL_KEYUP */
 	Uint8 which;	/* The keyboard device index */
 	Uint8 state;	/* SDL_PRESSED or SDL_RELEASED */
@@ -121,7 +121,7 @@ typedef struct {
 } SDL_KeyboardEvent;
 
 /* Mouse motion event structure */
-typedef struct {
+typedef struct SDL_MouseMotionEvent {
 	Uint8 type;	/* SDL_MOUSEMOTION */
 	Uint8 which;	/* The mouse device index */
 	Uint8 state;	/* The current button state */
@@ -131,7 +131,7 @@ typedef struct {
 } SDL_MouseMotionEvent;
 
 /* Mouse button event structure */
-typedef struct {
+typedef struct SDL_MouseButtonEvent {
 	Uint8 type;	/* SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */
 	Uint8 which;	/* The mouse device index */
 	Uint8 button;	/* The mouse button index */
@@ -140,7 +140,7 @@ typedef struct {
 } SDL_MouseButtonEvent;
 
 /* Joystick axis motion event structure */
-typedef struct {
+typedef struct SDL_JoyAxisEvent {
 	Uint8 type;	/* SDL_JOYAXISMOTION */
 	Uint8 which;	/* The joystick device index */
 	Uint8 axis;	/* The joystick axis index */
@@ -148,7 +148,7 @@ typedef struct {
 } SDL_JoyAxisEvent;
 
 /* Joystick trackball motion event structure */
-typedef struct {
+typedef struct SDL_JoyBallEvent {
 	Uint8 type;	/* SDL_JOYBALLMOTION */
 	Uint8 which;	/* The joystick device index */
 	Uint8 ball;	/* The joystick trackball index */
@@ -157,7 +157,7 @@ typedef struct {
 } SDL_JoyBallEvent;
 
 /* Joystick hat position change event structure */
-typedef struct {
+typedef struct SDL_JoyHatEvent {
 	Uint8 type;	/* SDL_JOYHATMOTION */
 	Uint8 which;	/* The joystick device index */
 	Uint8 hat;	/* The joystick hat index */
@@ -170,7 +170,7 @@ typedef struct {
 } SDL_JoyHatEvent;
 
 /* Joystick button event structure */
-typedef struct {
+typedef struct SDL_JoyButtonEvent {
 	Uint8 type;	/* SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
 	Uint8 which;	/* The joystick device index */
 	Uint8 button;	/* The joystick button index */
@@ -181,24 +181,24 @@ typedef struct {
    When you get this event, you are responsible for setting a new video
    mode with the new width and height.
  */
-typedef struct {
+typedef struct SDL_ResizeEvent {
 	Uint8 type;	/* SDL_VIDEORESIZE */
 	int w;		/* New width */
 	int h;		/* New height */
 } SDL_ResizeEvent;
 
 /* The "screen redraw" event */
-typedef struct {
+typedef struct SDL_ExposeEvent {
 	Uint8 type;	/* SDL_VIDEOEXPOSE */
 } SDL_ExposeEvent;
 
 /* The "quit requested" event */
-typedef struct {
+typedef struct SDL_QuitEvent {
 	Uint8 type;	/* SDL_QUIT */
 } SDL_QuitEvent;
 
 /* A user-defined event type */
-typedef struct {
+typedef struct SDL_UserEvent {
 	Uint8 type;	/* SDL_USEREVENT through SDL_NUMEVENTS-1 */
 	int code;	/* User defined event code */
 	void *data1;	/* User defined data pointer */
@@ -208,7 +208,7 @@ typedef struct {
 /* If you want to use this event, you should include SDL_syswm.h */
 struct SDL_SysWMmsg;
 typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-typedef struct {
+typedef struct SDL_SysWMEvent {
 	Uint8 type;
 	SDL_SysWMmsg *msg;
 } SDL_SysWMEvent;
diff --git a/include/SDL_keyboard.h b/include/SDL_keyboard.h
index b45080ed3961eb0250b6514ba5726fa142ac7ca3..263d198ac9c358ae9a58bac74081fda6f986fa70 100644
--- a/include/SDL_keyboard.h
+++ b/include/SDL_keyboard.h
@@ -55,7 +55,7 @@ extern "C" {
 		An international character..
 	}
  */
-typedef struct {
+typedef struct SDL_keysym {
 	Uint8 scancode;			/* hardware specific scancode */
 	SDLKey sym;			/* SDL virtual keysym */
 	SDLMod mod;			/* current key modifiers */
diff --git a/include/SDL_mouse.h b/include/SDL_mouse.h
index 0ab31e3c021c546c561e2f06440c80c96874d559..3ab745bb6db42b677df010b2b4f56698987f7ed1 100644
--- a/include/SDL_mouse.h
+++ b/include/SDL_mouse.h
@@ -40,7 +40,7 @@ extern "C" {
 #endif
 
 typedef struct WMcursor WMcursor;	/* Implementation dependent */
-typedef struct {
+typedef struct SDL_Cursor {
 	SDL_Rect area;			/* The area of the mouse cursor */
 	Sint16 hot_x, hot_y;		/* The "tip" of the cursor */
 	Uint8 *data;			/* B/W cursor data */
diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h
index 41c7c4e45a7363aa246fb5bc85af55984a8a2f72..4db13d4c5a02763ec683e3f3dafa1ae54a3310bc 100644
--- a/include/SDL_syswm.h
+++ b/include/SDL_syswm.h
@@ -74,7 +74,7 @@ struct SDL_SysWMmsg {
    When this structure is returned, it holds information about which
    low level system it is using, and will be one of SDL_SYSWM_TYPE.
  */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version;
 	SDL_SYSWM_TYPE subsystem;
 	union {
@@ -106,7 +106,7 @@ struct SDL_SysWMmsg {
 };
 
 /* The windows custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version ;
 	GR_WINDOW_ID window ;	/* The display window */
 } SDL_SysWMinfo;
@@ -125,7 +125,7 @@ struct SDL_SysWMmsg {
 };
 
 /* The windows custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version;
 	HWND window;			/* The Win32 display window */
 	HGLRC hglrc;			/* The OpenGL context, if any */
@@ -141,7 +141,7 @@ struct SDL_SysWMmsg {
 };
 
 /* The RISCOS custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version;
 	int wimpVersion;    /* Wimp version running under */
 	int taskHandle;     /* The RISCOS task handle */
@@ -159,7 +159,7 @@ struct SDL_SysWMmsg {
 };
 
 /* The QNX custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version;
 	int data;
 } SDL_SysWMinfo;
@@ -173,7 +173,7 @@ struct SDL_SysWMmsg {
 };
 
 /* The generic custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
 	SDL_version version;
 	int data;
 } SDL_SysWMinfo;
diff --git a/include/SDL_version.h b/include/SDL_version.h
index 41469835df63c20a968e996131f511b24b75099f..0b1d16d9586bb23d4e1cb5bad8d38ddbb74290e3 100644
--- a/include/SDL_version.h
+++ b/include/SDL_version.h
@@ -44,7 +44,7 @@ extern "C" {
 #define SDL_MINOR_VERSION	2
 #define SDL_PATCHLEVEL		8
 
-typedef struct {
+typedef struct SDL_version {
 	Uint8 major;
 	Uint8 minor;
 	Uint8 patch;
diff --git a/include/SDL_video.h b/include/SDL_video.h
index 3c18aa41c348dd626faca95f30afd0622f2772a7..d820e27e4756d897530307422d76609b39987c82 100644
--- a/include/SDL_video.h
+++ b/include/SDL_video.h
@@ -47,12 +47,12 @@ extern "C" {
 #define SDL_ALPHA_TRANSPARENT 0
 
 /* Useful data types */
-typedef struct {
+typedef struct SDL_Rect {
 	Sint16 x, y;
 	Uint16 w, h;
 } SDL_Rect;
 
-typedef struct {
+typedef struct SDL_Color {
 	Uint8 r;
 	Uint8 g;
 	Uint8 b;
@@ -60,7 +60,7 @@ typedef struct {
 } SDL_Color;
 #define SDL_Colour SDL_Color
 
-typedef struct {
+typedef struct SDL_Palette {
 	int       ncolors;
 	SDL_Color *colors;
 } SDL_Palette;
@@ -154,7 +154,7 @@ typedef struct SDL_Surface {
 
 
 /* Useful for determining the video hardware capabilities */
-typedef struct {
+typedef struct SDL_VideoInfo {
 	Uint32 hw_available :1;	/* Flag: Can you create hardware surfaces? */
 	Uint32 wm_available :1;	/* Flag: Can you talk to a window manager? */
 	Uint32 UnusedBits1  :6;
diff --git a/src/SDL_error_c.h b/src/SDL_error_c.h
index b08613683178042f55e699d47ac3ac4ce12f6db1..ef4eb89fa0157129b19040920cf0e68fd1fe603b 100644
--- a/src/SDL_error_c.h
+++ b/src/SDL_error_c.h
@@ -35,7 +35,7 @@ static char rcsid =
 #define ERR_MAX_STRLEN	128
 #define ERR_MAX_ARGS	5
 
-typedef struct {
+typedef struct SDL_error {
 	/* This is a numeric value corresponding to the current error */
 	int error;