diff --git a/src/os_win32.c b/src/os_win32.c
index a55f46c..82a3ce0 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -300,8 +300,7 @@
     }
 
     /* The bind_textdomain_codeset() function is optional. */
-    (FARPROC)dyn_libintl_bind_textdomain_codeset =
-					  (FARPROC)GetProcAddress(hLibintlDLL,
+    dyn_libintl_bind_textdomain_codeset = (void *)GetProcAddress(hLibintlDLL,
 						   "bind_textdomain_codeset");
     if (dyn_libintl_bind_textdomain_codeset == NULL)
 	dyn_libintl_bind_textdomain_codeset =
@@ -322,18 +321,21 @@
     dyn_libintl_bind_textdomain_codeset = null_libintl_bind_textdomain_codeset;
 }
 
+/*ARGSUSED*/
     static char *
 null_libintl_gettext(const char *msgid)
 {
     return (char*)msgid;
 }
 
+/*ARGSUSED*/
     static char *
 null_libintl_bindtextdomain(const char *domainname, const char *dirname)
 {
     return NULL;
 }
 
+/*ARGSUSED*/
     static char *
 null_libintl_bind_textdomain_codeset(const char *domainname,
 							  const char *codeset)
@@ -341,6 +343,7 @@
     return NULL;
 }
 
+/*ARGSUSED*/
     static char *
 null_libintl_textdomain(const char *domainname)
 {
@@ -446,6 +449,7 @@
 static int old_num_windows;
 static int num_windows;
 
+/*ARGSUSED*/
     static BOOL CALLBACK
 win32ssynch_cb(HWND hwnd, LPARAM lparam)
 {
@@ -762,6 +766,7 @@
  * For the GUI the mouse handling is in gui_w32.c.
  */
 # ifdef FEAT_GUI_W32
+/*ARGSUSED*/
     void
 mch_setmouse(int on)
 {
@@ -2211,6 +2216,7 @@
 /*
  * Do we have an interactive window?
  */
+/*ARGSUSED*/
     int
 mch_check_win(
     int argc,
@@ -3444,6 +3450,7 @@
 
 
 #ifdef FEAT_GUI_W32
+/*ARGSUSED*/
     void
 mch_write(
     char_u  *s,
@@ -4099,6 +4106,7 @@
 /*
  * Delay for half a second.
  */
+/*ARGSUSED*/
     void
 mch_delay(
     long    msec,
@@ -4716,7 +4724,7 @@
 		/* Advance to the next stream.  We might try seeking too far,
 		 * but BackupSeek() doesn't skip over stream borders, thus
 		 * that's OK. */
-		(void)BackupSeek(sh, sid.Size.LowPart, sid.Size.u.HighPart,
+		(void)BackupSeek(sh, sid.Size.u.LowPart, sid.Size.u.HighPart,
 							  &lo, &hi, &context);
 	    }
 
