r224012 - Emit warning if define or undef reserved identifier or keyword.

Reid Kleckner rnk at google.com
Wed Dec 17 16:03:00 PST 2014


On Tue, Dec 16, 2014 at 1:17 PM, Nico Weber <thakis at chromium.org> wrote:
>
> Ok, I moved -Wkeyword-macro into -pedantic in r224371. I also removed
> -Wreserved-id-macro in the same revision, as it's not covered by the
> standards bit you cited
>

I would like to have something like -Wreserved-id-macro eventually, but
it's really hard to differentiate between uses of internal C++
implementation details (calling __builtin_foo()) and user defined names
that are not part of "the implementation" (compiler + stdlib). This is
partially covered by the C++ standard in [global.names]p1:

"""
Certain sets of names and function signatures are always reserved to the
implementation:
— Each name that contains a double underscore _ _ or begins with an
underscore followed by an uppercase
letter (2.12) is reserved to the implementation for any use.
— Each name that begins with an underscore is reserved to the
implementation for use as a name in the
global namespace.
"""

It says nothing about macros, though, and this is such a hard problem that
it's not clear to me that the committed implementation is worth having.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141217/1593ed49/attachment.html>


More information about the cfe-commits mailing list