From: Paul Eggert Date: Thu, 3 Feb 2011 21:38:34 +0000 (-0800) Subject: * lib/ignore-value.h: New file. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~1048 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5dc7a1d2c412fc485cca66a2be76f50bfa1f16d7;p=emacs.git * lib/ignore-value.h: New file. --- 5dc7a1d2c412fc485cca66a2be76f50bfa1f16d7 diff --cc ChangeLog index 7b693be0694,7b693be0694..df1d6bc2144 --- a/ChangeLog +++ b/ChangeLog @@@ -3,6 -3,6 +3,7 @@@ allow C code to suppress warnings about ignored return values * Makefile.in (GNULIB_MODULES): Add ignore-value. * configure, lib/Makefile.in, lib/gnulib.mk, m4/gl-comp.m4: Regenerate. ++ * lib/ignore-value.h: New file. 2011-01-31 Chong Yidong diff --cc lib/ignore-value.h index 00000000000,00000000000..5e683bbb533 new file mode 100644 --- /dev/null +++ b/lib/ignore-value.h @@@ -1,0 -1,0 +1,62 @@@ ++/* ignore a function return without a compiler warning ++ ++ Copyright (C) 2008-2011 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 ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* Written by Jim Meyering, Eric Blake and Pádraig Brady. */ ++ ++/* Use "ignore_value" 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, ++ if the function is declared with __attribute__((warn_unused_result)), ++ gcc issues a warning even with the cast. ++ ++ Caution: most of the time, you really should heed gcc's warning, and ++ check the return value. However, in those exceptional cases in which ++ you're sure you know what you're doing, use this function. ++ ++ For the record, here's one of the ignorable warnings: ++ "copy.c:233: warning: ignoring return value of 'fchown', ++ declared with attribute warn_unused_result". */ ++ ++#ifndef _GL_IGNORE_VALUE_H ++# define _GL_IGNORE_VALUE_H ++ ++# ifndef ATTRIBUTE_DEPRECATED ++/* The __attribute__((__deprecated__)) feature ++ is available in gcc versions 3.1 and newer. */ ++# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1) ++# define ATTRIBUTE_DEPRECATED /* empty */ ++# else ++# define ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) ++# endif ++# endif ++ ++/* The __attribute__((__warn_unused_result__)) feature ++ is available in gcc versions 3.4 and newer, ++ while the typeof feature has been available since 2.7 at least. */ ++# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4) ++# define ignore_value(x) ((void) (x)) ++# else ++# define ignore_value(x) (({ __typeof__ (x) __x = (x); (void) __x; })) ++# endif ++ ++/* ignore_value works for scalars, pointers and aggregates; ++ deprecate ignore_ptr. */ ++static inline void ATTRIBUTE_DEPRECATED ++ignore_ptr (void *p) { (void) p; } /* deprecated: use ignore_value */ ++ ++#endif