http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51437

--- Comment #7 from Josh Triplett <josh at joshtriplett dot org> 2012-02-19 
04:41:59 UTC ---
(In reply to comment #6)
> I would greatly like to see this as well; actually I was just about to file a
> duplicate report when I found this, as a result of finding "struct _Color" in
> GIMP source... >_<
> 
> I think the system headers issue could be handled very easily, with no false
> positives and few false negatives. The heuristic would basically be to flag 
> any
> occurrence of reserved names except in header files found in the -isystem 
> path,
> or in text resulting from expansion of a macro defined by a header file in the
> -isystem path.

You don't want to flag all occurrences of reserved names, just definitions
using reserved names.  Flagging uses will just result in duplicate warnings for
the same symbols.  Also, the code that uses a symbol doesn't really have a
choice; it has to use the symbol as defined.  Better to generate a warning on
the definition only.

Good call on the issue of "text resulting from expansion of a macro"; that
seems like precisely one of the cases where system headers will want to use
_Reserved names to avoid conflict with user-defined identifiers.

I'd suggest using precisely the heuristic GCC currently uses to avoid
generating warnings in system headers, as specified in
http://gcc.gnu.org/onlinedocs/cpp/System-Headers.html , including the bit
saying "Macros defined in a system header are immune to a few warnings wherever
they are expanded."

Arguably this also needs special handling to avoid making -Wsystem-headers any
more useless, similar to the handling of -Wunknown-pragmas, but that doesn't
seem like a necessary prerequisite for adding this feature.

Reply via email to