I noticed the use of ignore-value() recently and was a little confused by it. How about the attached tweaks to make it explicit it doesn't handle all return types and also remove the use of __attribute__ ((__unused__)) which I don't think is required.
cheers, Pádraig.
>From c0cf06236aba3886d61272ad49d553e9ae4e3fac Mon Sep 17 00:00:00 2001 From: =?utf-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com> Date: Wed, 12 Aug 2009 09:37:56 +0100 Subject: [PATCH] ignore-value: support old compilers and pointer types * lib/ignore-value.h: Add a function to suppress warnings from fuctions that return pointers, and to make it explicit that one function doesn't handle all cases. Also don't use __attribute__ ((unused)) as it's too verbose/non standard --- lib/ignore-value.h | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/ignore-value.h b/lib/ignore-value.h index 5f97c91..b630a00 100644 --- a/lib/ignore-value.h +++ b/lib/ignore-value.h @@ -1,6 +1,6 @@ -/* ignore a value to quiet a compiler warning +/* ignore a function return without a compiler warning - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008,2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,13 +17,7 @@ /* Written by Jim Meyering. */ -#ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) -# define __attribute__(x) -# endif -#endif - -/* Use this function to avoid a warning when using a function declared with +/* Use these functions to avoid a warning when using a function declared with gcc's warn_unused_result attribute, but for which you really do want to ignore the result. Traditionally, people have used a "(void)" cast to indicate that a function's return value is deliberately unused. However, @@ -38,8 +32,6 @@ "copy.c:233: warning: ignoring return value of 'fchown', declared with attribute warn_unused_result". */ -static inline void -ignore_value (int i __attribute__ ((__unused__))) -{ - /* empty */ -} +static inline void ignore_value (int i) { (void) i; } +static inline void ignore_ptr (void* p) { (void) p; } +/* FIXME: what about aggregate types? */ -- 1.6.2.5