diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index bc7193d..2c92096 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -14,7 +14,7 @@
 #include "vim.h"
 #include "version.h"
 
-static void	cmd_source __ARGS((char_u *fname, exarg_T *eap));
+static void	cmd_source(char_u *fname, exarg_T *eap);
 
 #ifdef FEAT_EVAL
 /* Growarray to store info about already sourced scripts.
@@ -562,8 +562,8 @@
 #define DBG_FUNC	1
 #define DBG_FILE	2
 
-static int dbg_parsearg __ARGS((char_u *arg, garray_T *gap));
-static linenr_T debuggy_find __ARGS((int file,char_u *fname, linenr_T after, garray_T *gap, int *fp));
+static int dbg_parsearg(char_u *arg, garray_T *gap);
+static linenr_T debuggy_find(int file,char_u *fname, linenr_T after, garray_T *gap, int *fp);
 
 /*
  * Parse the arguments of ":profile", ":breakadd" or ":breakdel" and put them
@@ -1133,8 +1133,8 @@
 /*
  * Functions for profiling.
  */
-static void script_do_profile __ARGS((scriptitem_T *si));
-static void script_dump_profile __ARGS((FILE *fd));
+static void script_do_profile(scriptitem_T *si);
+static void script_dump_profile(FILE *fd);
 static proftime_T prof_wait_time;
 
 /*
@@ -1757,7 +1757,7 @@
 		|| forceit);
 }
 
-static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr));
+static void add_bufnum(int *bufnrs, int *bufnump, int nr);
 
 /*
  * Add a buffer number to "bufnrs", unless it's already there.
@@ -1951,12 +1951,12 @@
  * Code to handle the argument list.
  */
 
-static char_u	*do_one_arg __ARGS((char_u *str));
-static int	do_arglist __ARGS((char_u *str, int what, int after));
-static void	alist_check_arg_idx __ARGS((void));
-static int	editing_arg_idx __ARGS((win_T *win));
+static char_u	*do_one_arg(char_u *str);
+static int	do_arglist(char_u *str, int what, int after);
+static void	alist_check_arg_idx(void);
+static int	editing_arg_idx(win_T *win);
 #ifdef FEAT_LISTCMDS
-static int	alist_add_list __ARGS((int count, char_u **files, int after));
+static int	alist_add_list(int count, char_u **files, int after);
 #endif
 #define AL_SET	1
 #define AL_ADD	2
@@ -2960,7 +2960,7 @@
     source_runtime(eap->arg, eap->forceit);
 }
 
-static void source_callback __ARGS((char_u *fname, void *cookie));
+static void source_callback(char_u *fname, void *cookie);
 
     static void
 source_callback(fname, cookie)
@@ -3224,11 +3224,11 @@
 }
 #endif
 
-static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+static char_u *get_one_sourceline(struct source_cookie *sp);
 
 #if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC)
 # define USE_FOPEN_NOINH
-static FILE *fopen_noinh_readbin __ARGS((char *filename));
+static FILE *fopen_noinh_readbin(char *filename);
 
 /*
  * Special function to open a file without handle inheritance.
@@ -4196,7 +4196,7 @@
  */
     int
 source_finished(fgetline, cookie)
-    char_u	*(*fgetline) __ARGS((int, void *, int));
+    char_u	*(*fgetline)(int, void *, int);
     void	*cookie;
 {
     return (getline_equal(fgetline, cookie, getsourceline)
@@ -4232,7 +4232,7 @@
 #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
 	&& (defined(FEAT_EVAL) || defined(FEAT_MULTI_LANG))
 # define HAVE_GET_LOCALE_VAL
-static char *get_locale_val __ARGS((int what));
+static char *get_locale_val(int what);
 
     static char *
 get_locale_val(what)
@@ -4353,7 +4353,7 @@
 	|| ((defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
 		&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) \
 		&& !defined(LC_MESSAGES))
-static char_u *get_mess_env __ARGS((void));
+static char_u *get_mess_env(void);
 
 /*
  * Get the language used for messages from the environment.
@@ -4555,8 +4555,8 @@
 static char_u	**locales = NULL;	/* Array of all available locales */
 static int	did_init_locales = FALSE;
 
-static void init_locales __ARGS((void));
-static char_u **find_locales __ARGS((void));
+static void init_locales(void);
+static char_u **find_locales(void);
 
 /*
  * Lazy initialization of all available locales.
