On 24 Feb 2018, at 17:01, Alan Somers <asom...@freebsd.org> wrote:
> 
> Author: asomers
> Date: Sat Feb 24 16:01:21 2018
> New Revision: 329910
> URL: https://svnweb.freebsd.org/changeset/base/329910
> 
> Log:
>  Implement CTASSERT using _Static_assert
> 
>  Prevents warnings about "unused typedef" with GCC-6
> 
>  Reported by: GCC-6
>  MFC after:   18 days
>  X-MFC-With:  329722
> 
> Modified:
>  head/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h
> 
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h  Sat Feb 24 
> 15:13:20 2018        (r329909)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h  Sat Feb 24 
> 16:01:21 2018        (r329910)
> @@ -133,8 +133,8 @@ _NOTE(CONSTCOND) } while (0)
> #ifndef CTASSERT
> #define       CTASSERT(x)             _CTASSERT(x, __LINE__)
> #define       _CTASSERT(x, y)         __CTASSERT(x, y)
> -#define      __CTASSERT(x, y) \
> -     typedef char __compile_time_assertion__ ## y [(x) ? 1 : -1]
> +#define      __CTASSERT(x, y)        \
> +     _Static_assert((x), "Static assert failed at " #y)
> #endif
> 
> #ifdef        _KERNEL

Note that the trick with the negatively indexed array is to support
older versions of gcc, which did not yet recognize _Static_assert.  It
looks like this was added in gcc 4.6.

-Dimitry

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to