On Fri, Feb 19, 2016 at 2:02 PM, Reid Kleckner via cfe-commits
<cfe-commits@lists.llvm.org> wrote:
> rnk added a comment.
>
> I think we should do this because MSVC doesn't make _Static_assert available 
> to C code.

Except, they do, somewhat. _Static_assert(0, "this should diagnose");
does *not* work in MSVC. _Static_assert(); compiles. That's why I
think this is an MSVC bug that they might want to fix (especially
given the recent push to improve standards conformance).

> David says that, according to the C standard, assert.h is supposed to 
> `#define static_assert _Static_assert`. MSVC doesn't do that because they 
> provide static_assert directly as a keyword. Pretty soon we'll start seeing 
> portable C projects including assert.h to use plain `static_assert`,

We we should, because that's the portable C way to use static_assert.

> and if we don't do something, that code will compile with MSVC but not 
> clang-cl.

Ugh, that's a problem.

> I think we should do this under fms-compatibility, not fms-extensions, 
> because it is technically not a conforming extension. =/ There isn't a bit 
> for that currently, but we should add one. Maybe call it KEYMSCOMPAT?

I agree that if we do this, it should be under fms-compatibility,
however, I still see no compelling reason to do this right now. If
Microsoft says "yup, that's a bug", our position in the past has been
that we really don't want to be bug-for-bug compatible with MSVC
unless there's some significant body of work we can't compile without
it. If Microsoft says, "that's by design", then I definitely agree we
should add a compatibility hack for it.

~Aaron
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to