1
1
/* ignore a function return without a compiler warning
3
Copyright (C) 2008-2010 Free Software Foundation, Inc.
3
Copyright (C) 2008-2011 Free Software Foundation, Inc.
5
5
This program is free software: you can redistribute it and/or modify
6
6
it under the terms of the GNU General Public License as published by
15
15
You should have received a copy of the GNU General Public License
16
16
along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
/* Written by Jim Meyering. */
18
/* Written by Jim Meyering, Eric Blake and Pádraig Brady. */
20
/* Use these functions to avoid a warning when using a function declared with
20
/* Use "ignore_value" to avoid a warning when using a function declared with
21
21
gcc's warn_unused_result attribute, but for which you really do want to
22
22
ignore the result. Traditionally, people have used a "(void)" cast to
23
23
indicate that a function's return value is deliberately unused. However,
32
32
"copy.c:233: warning: ignoring return value of 'fchown',
33
33
declared with attribute warn_unused_result". */
35
static inline void ignore_value (int i) { (void) i; }
36
static inline void ignore_ptr (void* p) { (void) p; }
37
/* FIXME: what about aggregate types? */
35
#ifndef _GL_IGNORE_VALUE_H
36
# define _GL_IGNORE_VALUE_H
38
# ifndef _GL_ATTRIBUTE_DEPRECATED
39
/* The __attribute__((__deprecated__)) feature
40
is available in gcc versions 3.1 and newer. */
41
# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1)
42
# define _GL_ATTRIBUTE_DEPRECATED /* empty */
44
# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
48
/* The __attribute__((__warn_unused_result__)) feature
49
is available in gcc versions 3.4 and newer,
50
while the typeof feature has been available since 2.7 at least. */
51
# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
52
# define ignore_value(x) ((void) (x))
54
# define ignore_value(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
57
/* ignore_value works for scalars, pointers and aggregates;
58
deprecate ignore_ptr. */
59
static inline void _GL_ATTRIBUTE_DEPRECATED
60
ignore_ptr (void *p) { (void) p; } /* deprecated: use ignore_value */