On April 5, 2017 9:04:00 AM PDT, Tom Lane <t...@sss.pgh.pa.us> wrote:
>Joe Conway <m...@joeconway.com> writes:
>> On 04/04/2017 09:58 PM, Tom Lane wrote:
>>> Another issue is whether you won't get compiler complaints about
>>> redefinition of the "true" and "false" macros.  But those would
>>> likely only be warnings, not flat-out errors.
>> I have not been able to generate warnings or errors around "true" and
>> "false".
>Interesting.  Poking at it on a Fedora 25 machine, I also see a
>bool-type-related warning in sepgsql/label.c, but nothing around macro
>redefinitions.  In particular, I find that
>#include "postgres.h"
>#include <stdbool.h>
>is completely silent.  On the other hand,
>#include "postgres.h"
>#define bool    _Bool
>#define true    1
>#define false   0
>generates the warnings I expected about "true" and "false" being
>redefined.  Which is damn odd, because I copied-and-pasted those
>lines out of
>Conclusion: Fedora's gcc is playing fast and loose somehow with the
>command "#include <stdbool.h>"; that does not include the file
>you'd think it does, it does something magic inside the compiler.
>The magic evidently includes not complaining about duplicate macro
>definitions for true and false.
>Anyway, I'd recommend that we do something like
> #include <selinux/label.h>
>+ * <selinux/label.h> includes <stdbool.h>, which creates an
>+ * #define for bool.  Get rid of that so we can use our own typedef.
>+ * (For obscure reasons, the "true" and "false" macros don't cause
>+ */

GCC generally doesn't warn about macro redefinitions, if both definitions are 
equivalent.  IIRC we have some examples of that in the tree.  There's a flag to 
warn regardless.

Sent from my Android device with K-9 Mail. Please excuse my brevity.

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to