diff --git a/procps/fuser.c b/procps/fuser.c
index 55f7917..8afa958 100644
--- a/procps/fuser.c
+++ b/procps/fuser.c
@@ -269,7 +269,7 @@
 }
 
 int fuser_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int fuser_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int fuser_main(int argc UNUSED_PARAM, char **argv)
 {
 	pid_list *plist;
 	inode_list *ilist;
diff --git a/procps/nmeter.c b/procps/nmeter.c
index 205cb82..8cff0b9 100644
--- a/procps/nmeter.c
+++ b/procps/nmeter.c
@@ -274,7 +274,7 @@
 S_STAT(s_stat)
 S_STAT_END(s_stat)
 
-static void collect_literal(s_stat *s ATTRIBUTE_UNUSED)
+static void collect_literal(s_stat *s UNUSED_PARAM)
 {
 }
 
@@ -293,7 +293,7 @@
 	return NULL;
 }
 
-static s_stat* init_cr(const char *param ATTRIBUTE_UNUSED)
+static s_stat* init_cr(const char *param UNUSED_PARAM)
 {
 	final_str = "\r";
 	return (s_stat*)0;
@@ -435,7 +435,7 @@
 	scale(data[0] - old);
 }
 
-static s_stat* init_ctx(const char *param ATTRIBUTE_UNUSED)
+static s_stat* init_ctx(const char *param UNUSED_PARAM)
 {
 	ctx_stat *s = xzalloc(sizeof(*s));
 	s->collect = collect_ctx;
@@ -477,7 +477,7 @@
 	scale(data[1]*512);
 }
 
-static s_stat* init_blk(const char *param ATTRIBUTE_UNUSED)
+static s_stat* init_blk(const char *param UNUSED_PARAM)
 {
 	blk_stat *s = xzalloc(sizeof(*s));
 	s->collect = collect_blk;
@@ -490,7 +490,7 @@
 	ullong old;
 S_STAT_END(fork_stat)
 
-static void collect_thread_nr(fork_stat *s ATTRIBUTE_UNUSED)
+static void collect_thread_nr(fork_stat *s UNUSED_PARAM)
 {
 	ullong data[1];
 
@@ -657,7 +657,7 @@
 S_STAT(swp_stat)
 S_STAT_END(swp_stat)
 
-static void collect_swp(swp_stat *s ATTRIBUTE_UNUSED)
+static void collect_swp(swp_stat *s UNUSED_PARAM)
 {
 	ullong s_total[1];
 	ullong s_free[1];
@@ -670,7 +670,7 @@
 	scale((s_total[0]-s_free[0]) << 10);
 }
 
-static s_stat* init_swp(const char *param ATTRIBUTE_UNUSED)
+static s_stat* init_swp(const char *param UNUSED_PARAM)
 {
 	swp_stat *s = xzalloc(sizeof(*s));
 	s->collect = collect_swp;
@@ -681,7 +681,7 @@
 S_STAT(fd_stat)
 S_STAT_END(fd_stat)
 
-static void collect_fd(fd_stat *s ATTRIBUTE_UNUSED)
+static void collect_fd(fd_stat *s UNUSED_PARAM)
 {
 	ullong data[2];
 
@@ -693,7 +693,7 @@
 	scale(data[0] - data[1]);
 }
 
-static s_stat* init_fd(const char *param ATTRIBUTE_UNUSED)
+static s_stat* init_fd(const char *param UNUSED_PARAM)
 {
 	fd_stat *s = xzalloc(sizeof(*s));
 	s->collect = collect_fd;
diff --git a/procps/pgrep.c b/procps/pgrep.c
index 336fa84..7b3cd8e 100644
--- a/procps/pgrep.c
+++ b/procps/pgrep.c
@@ -43,7 +43,7 @@
 }
 
 int pgrep_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int pgrep_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int pgrep_main(int argc UNUSED_PARAM, char **argv)
 {
 	unsigned pid = getpid();
 	int signo = SIGTERM;
diff --git a/procps/pidof.c b/procps/pidof.c
index 8ed5a21..2519473 100644
--- a/procps/pidof.c
+++ b/procps/pidof.c
@@ -17,7 +17,7 @@
 };
 
 int pidof_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int pidof_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int pidof_main(int argc UNUSED_PARAM, char **argv)
 {
 	unsigned first = 1;
 	unsigned opt;
diff --git a/procps/ps.c b/procps/ps.c
index cfca851..c5dff18 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -422,7 +422,7 @@
 }
 
 int ps_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int ps_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int ps_main(int argc UNUSED_PARAM, char **argv)
 {
 	procps_status_t *p;
 	llist_t* opt_o = NULL;
@@ -483,7 +483,7 @@
 
 
 int ps_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int ps_main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
+int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 {
 	procps_status_t *p = NULL;
 	int len;
diff --git a/procps/renice.c b/procps/renice.c
index d2dcf15..4c309e9 100644
--- a/procps/renice.c
+++ b/procps/renice.c
@@ -27,7 +27,7 @@
 void BUG_bad_PRIO_USER(void);
 
 int renice_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int renice_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int renice_main(int argc UNUSED_PARAM, char **argv)
 {
 	static const char Xetpriority_msg[] ALIGN1 = "%cetpriority";
 
diff --git a/procps/sysctl.c b/procps/sysctl.c
index 1995382..3607a23 100644
--- a/procps/sysctl.c
+++ b/procps/sysctl.c
@@ -57,7 +57,7 @@
 };
 
 int sysctl_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int sysctl_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int sysctl_main(int argc UNUSED_PARAM, char **argv)
 {
 	int retval;
 	int opt;
diff --git a/procps/top.c b/procps/top.c
index 0e1b333..e13cd15 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -519,7 +519,7 @@
 	}
 }
 
-static void sig_catcher(int sig ATTRIBUTE_UNUSED)
+static void sig_catcher(int sig UNUSED_PARAM)
 {
 	reset_term();
 	exit(EXIT_FAILURE);
@@ -739,7 +739,7 @@
 };
 
 int top_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int top_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int top_main(int argc UNUSED_PARAM, char **argv)
 {
 	int count;
 	int iterations;
diff --git a/procps/uptime.c b/procps/uptime.c
index b729055..d9aa1d0 100644
--- a/procps/uptime.c
+++ b/procps/uptime.c
@@ -26,7 +26,7 @@
 
 
 int uptime_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int uptime_main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
+int uptime_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 {
 	int updays, uphours, upminutes;
 	struct sysinfo info;
diff --git a/procps/watch.c b/procps/watch.c
index 7d8e0de..5fd0510 100644
--- a/procps/watch.c
+++ b/procps/watch.c
@@ -24,7 +24,7 @@
 // (procps 3.x and procps 2.x are forks, not newer/older versions of the same)
 
 int watch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int watch_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int watch_main(int argc UNUSED_PARAM, char **argv)
 {
 	unsigned opt;
 	unsigned period = 2;
