[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240528064958.GB1294551@mit.edu>
Date: Tue, 28 May 2024 08:49:58 +0200
From: "Theodore Ts'o" <tytso@....edu>
To: Alyssa Ross <hi@...ssa.is>
Cc: linux-ext4@...r.kernel.org
Subject: Re: [PATCH] libext2fs: fix unused parameter warnings/errors
On Mon, May 27, 2024 at 11:15:43AM +0200, Alyssa Ross wrote:
> This fixes building dependent packages that use -Werror.
>
> Signed-off-by: Alyssa Ross <hi@...ssa.is>
> ---
> I'm assuming here that it is actually intentional that these variables
> are unused! I don't understand the code enough to know for sure —
> I'm just trying to fix some build regressions after updating e2fsprogs. :)
Well, note that you only get the warning at all if you use
-Wunused-parameter, "-Wunused -Wextra", or "-Wall -Wextra". The
unused-parameter warning is not enabled unless you **really** go out
of your way to enable it, because it has so many false positives. The
gcc maintainers do not enable this insanity even with -Wall, so
someone really went out of their way to make your life miserable. :-)
I generally think it's a really bad idea to turn on warnings as if
they are overdone Christmas tree lights. However, to accomodate this,
the normal way to suppress this is via __attribute__(unused). To do
this in a portable way to avoid breaking compilers which don't
understand said attribute:
/* this is usually predfined in some header file like compiler.h */
#ifdef __GNUC__
#define EXT2FS_ATTR(x) __attribute__(x)
#else
#define EXT2FS_ATTR(x)
#endif
...
_INLINE_ errcode_t ext2fs_resize_mem(unsigned long EXT2FS_ATTR((unused)) old_size,
unsigned long size, void *ptr)
...
You can also play this game if you really have a huge number of stupid
gcc warnings that you want to suppress:
/* this is usually predfined in some header file like compiler.h */
#ifndef __GNUC_PREREQ
#if defined(__GNUC__) && defined(__GNUC_MINOR__)
#define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
#else
#define __GNUC_PREREQ(maj, min) 0
#endif
#endif
#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#endif
...
#if __GNUC_PREREQ (4, 6)
#pragma GCC diagnostic pop
#endif
I do this when I'm defining a lot of inline functions in a header
file, and some stupid person thinks that -Wunused -Wextra is actually
a good idea (hint: it's not), and I just want to shut up the
completely unnecessary warnings.
Cheers,
- Ted
Powered by blists - more mailing lists