https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60304
--- Comment #10 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Manuel López-Ibáñez from comment #9) > (In reply to Paolo Carlini from comment #5) > > Well, of course the user can always explicitly include, eg, <cstdbool>, thus > > it seems that the real underlying issue is that the system-headers machinery > > should not be fooled by things like this in a system header... or should it? > > The define is rather interesting... > > > > #define false false > > > > I'm adding in CC Dodji too... > > In the case of NULL we do: > > source_location loc = > expansion_point_location_if_in_system_header (input_location); > > however, we do not do it in the case of 'false' (because we do not think it > should be a macro, but it actually is). Perhaps we should do it, is there a > downside to it? BTW, this is the guideline I was asking for here: https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01783.html In this case, 'false' is one of those special macros.