From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17769 invoked by alias); 19 Feb 2012 04:42:31 -0000 Received: (qmail 17756 invoked by uid 22791); 19 Feb 2012 04:42:30 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 19 Feb 2012 04:42:17 +0000 From: "josh at joshtriplett dot org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/51437] GCC should warn on the use of reserved identifier/macro names Date: Sun, 19 Feb 2012 05:48:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: josh at joshtriplett dot org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-02/txt/msg01872.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51437 --- Comment #7 from Josh Triplett 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.