Is __declspec a core language extension?

Aaron Ballman aaron at
Wed May 20 14:54:23 PDT 2015

While refactoring some attribute parsing code, I noticed that we do
not guard __declspec as being a Microsoft-specific extension that we
support. This is consistent with the behavior we have for
__attribute__. In both cases, the keyword is available everywhere, and
specific attributes determine their target requirements. However, I
wonder if that's the behavior we want.

With __attribute__, it makes some degree of sense that we support it
everywhere and own it as a core language extension. For instance, we
allow users to add GNU-style attribute spellings that GCC does not
support and no one takes issue.

Do we want the same level of ownership over __declspec? If someone
wants to add a new attribute with a __declspec spelling that is not
supported by MSVC, will we allow it? I struggle to imagine us allowing
that as it can cause future compatibility issues if Microsoft were to
use the same attribute name with different semantics. For that reason,
I think __declspec should be guarded by -fms-extensions, but I wanted
to get community feedback before making such a change.



More information about the cfe-commits mailing list