Re: svn commit: r322875 - head/sys/dev/nvme

From: David Chisnall <theraven_at_FreeBSD.org>
Date: Fri, 25 Aug 2017 08:14:41 +0100
On 25 Aug 2017, at 07:32, Mark Millard <markmi_at_dsl-only.net> wrote:
> 
> As I remember _Static_assert is from C11, not
> the older C99.

In pre-C11 dialects of C, _Static_assert is an identifier reserved for the implementation.  sys/cdefs.h defines it to generate a zero-length array if the condition is true or a negative-length array if it is false, emulating the behaviour (though giving less helpful error messages)

> 
> As I understand head/sys/dev/nvme/nvme.h use by
> C++ code could now reject attempts to use
> _Static_assert .

In C++, _Static_assert is an identifier reserved for the implementation, but in C++11 or newer static_assert is a keyword.  sys/cdefs.h defines _Static_assert to static_assert for newer versions of C++ and defines it to the C-before-11-compatible version for C++-before-11.

TL;DR: We have gone to a lot of effort to ensure that these keywords work in all C/C++ dialects, please use them, please report bugs if you find a case where they don’t work.

David
Received on Fri Aug 25 2017 - 05:14:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:13 UTC