diff --git a/src/ops.c b/src/ops.c
index 52794bd..e72774b 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -89,39 +89,39 @@
 };
 
 #ifdef FEAT_VISUALEXTRA
-static void shift_block __ARGS((oparg_T *oap, int amount));
-static void block_insert __ARGS((oparg_T *oap, char_u *s, int b_insert, struct block_def*bdp));
+static void shift_block(oparg_T *oap, int amount);
+static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def*bdp);
 #endif
-static int	stuff_yank __ARGS((int, char_u *));
-static void	put_reedit_in_typebuf __ARGS((int silent));
-static int	put_in_typebuf __ARGS((char_u *s, int esc, int colon,
-								 int silent));
-static void	stuffescaped __ARGS((char_u *arg, int literally));
+static int	stuff_yank(int, char_u *);
+static void	put_reedit_in_typebuf(int silent);
+static int	put_in_typebuf(char_u *s, int esc, int colon,
+								 int silent);
+static void	stuffescaped(char_u *arg, int literally);
 #ifdef FEAT_MBYTE
-static void	mb_adjust_opend __ARGS((oparg_T *oap));
+static void	mb_adjust_opend(oparg_T *oap);
 #endif
-static void	free_yank __ARGS((long));
-static void	free_yank_all __ARGS((void));
-static int	yank_copy_line __ARGS((struct block_def *bd, long y_idx));
+static void	free_yank(long);
+static void	free_yank_all(void);
+static int	yank_copy_line(struct block_def *bd, long y_idx);
 #ifdef FEAT_CLIPBOARD
-static void	copy_yank_reg __ARGS((struct yankreg *reg));
-static void	may_set_selection __ARGS((void));
+static void	copy_yank_reg(struct yankreg *reg);
+static void	may_set_selection(void);
 #endif
-static void	dis_msg __ARGS((char_u *p, int skip_esc));
+static void	dis_msg(char_u *p, int skip_esc);
 #if defined(FEAT_COMMENTS) || defined(PROTO)
-static char_u	*skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
+static char_u	*skip_comment(char_u *line, int process, int include_space, int *is_comment);
 #endif
-static void	block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
-static int	do_addsub __ARGS((int op_type, pos_T *pos, int length, linenr_T Prenum1));
+static void	block_prep(oparg_T *oap, struct block_def *, linenr_T, int);
+static int	do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1);
 #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL)
-static void	str_to_reg __ARGS((struct yankreg *y_ptr, int yank_type, char_u *str, long len, long blocklen, int str_list));
+static void	str_to_reg(struct yankreg *y_ptr, int yank_type, char_u *str, long len, long blocklen, int str_list);
 #endif
-static int	ends_in_white __ARGS((linenr_T lnum));
+static int	ends_in_white(linenr_T lnum);
 #ifdef FEAT_COMMENTS
-static int	same_leader __ARGS((linenr_T lnum, int, char_u *, int, char_u *));
-static int	fmt_check_par __ARGS((linenr_T, int *, char_u **, int do_comments));
+static int	same_leader(linenr_T lnum, int, char_u *, int, char_u *);
+static int	fmt_check_par(linenr_T, int *, char_u **, int do_comments);
 #else
-static int	fmt_check_par __ARGS((linenr_T));
+static int	fmt_check_par(linenr_T);
 #endif
 
 /*
@@ -689,7 +689,7 @@
     void
 op_reindent(oap, how)
     oparg_T	*oap;
-    int		(*how) __ARGS((void));
+    int		(*how)(void);
 {
     long	i;
     char_u	*l;
@@ -2276,7 +2276,7 @@
 }
 #endif
 
-static int swapchars __ARGS((int op_type, pos_T *pos, int length));
+static int swapchars(int op_type, pos_T *pos, int length);
 
 /*
  * Handle the (non-standard vi) tilde operator.  Also for "gu", "gU" and "g?".
@@ -6429,7 +6429,7 @@
     return MAUTO;
 }
 
-static char_u *getreg_wrap_one_line __ARGS((char_u *s, int flags));
+static char_u *getreg_wrap_one_line(char_u *s, int flags);
 
 /*
  * When "flags" has GREG_LIST return a list with text "s".
@@ -6905,7 +6905,7 @@
     vim_memset(oap, 0, sizeof(oparg_T));
 }
 
-static long	line_count_info __ARGS((char_u *line, long *wc, long *cc, long limit, int eol_size));
+static long	line_count_info(char_u *line, long *wc, long *cc, long limit, int eol_size);
 
 /*
  *  Count the number of bytes, characters and "words" in a line.
