On 2016-02-12 09:39:20 -0500, Tom Lane wrote: > Robert Haas <robertmh...@gmail.com> writes: > > On Fri, Feb 12, 2016 at 8:48 AM, Andres Freund <and...@anarazel.de> wrote: > >> E.g. if you include stdbool.h [ ginStepRight breaks ] > > > Ah-ha. OK, now I get it. So then I agree we should back-patch this > > at least as far as 9.3 where MSVC 2013 became a supported platform, > > Um, no, that does not follow.
Well, these headers are generally buggy, so ... > The unanswered question here is why, > when we *have not* included stdbool.h and *have* typedef'd bool as > just plain "char", we would get C99 bool behavior. There is something > happening there that should not be happening, and I'm not really satisfied > with the explanation "Microsoft is brain-dead as usual". I think we > should dig deeper, because whatever is going on there may have deeper > effects than we now realize. Well, http://archives.postgresql.org/message-id/d2106c2d-0f46-4cf9-af27-54f81ef6e20c%40postgrespro.ru outlines how stdbool.h gets included. That happens fairly at the begining of c.h. Later our definitions are guarded by ifdefs: #ifndef bool typedef char bool; #endif #ifndef true #define true ((bool) 1) #endif #ifndef false #define false ((bool) 0) #endif So we can lament that MS standard libraries include stdbool.h instead of using _Bool. But I doubt that's going to buy us super much. Btw, there's a distinct advantage including stdbool: Compilers actually generate a fair bit better error messages/warnings in some cases. And the generated code sometimes is a bit better, too. Andres -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers