This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/51437] GCC should warn on the use of reserved identifier/macro names


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]