[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] m4: Remove ternary operator from extern-inline
From: |
Bruno Haible |
Subject: |
Re: [PATCH] m4: Remove ternary operator from extern-inline |
Date: |
Mon, 05 Jun 2017 16:14:38 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-78-generic; KDE/5.18.0; x86_64; ; ) |
Hi,
Martin Kletzander wrote:
> When compiling libvirt with updated GCC (v7.1.0), the following warning
> pops out (which then ends up treated like an error):
>
> ../config.h:2994:48: error: this use of "defined" may not be portable
> [-Werror=expansion-to-defined]
> || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
>
> If I remove the ternary operator, the warning/error goes away.
This warning (-Wexpansion-to-defined) is documented in [1]:
Warn whenever ‘defined’ is encountered in the expansion of a macro
(including the case where the macro is expanded by an ‘#if’ directive).
What is the expansion of _FORTIFY_SOURCE in your case?
(You can use "gcc -E -dM" to determine it.)
If it does contain the 'defined' keyword, please fix that.
If not, you have found a GCC bug. Please report it at [2].
And disable -Werror until it gets fixed. Gnulib does *not* support the use of
-Werror. [3]
Bruno
[1] https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html
[2] https://gcc.gnu.org/bugs/
[3] https://www.gnu.org/software/gnulib/manual/html_node/warnings.html