[Spice-devel] [spice-common 3/7] log: Use G_STATIC_ASSERT for spice_static_assert implementation

Frediano Ziglio fziglio at redhat.com
Mon Nov 30 04:01:23 PST 2015


> This is better than the runtime assertion we had.
> ---
>  common/log.h | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/common/log.h b/common/log.h
> index 75daa56..3378e2a 100644
> --- a/common/log.h
> +++ b/common/log.h
> @@ -131,11 +131,8 @@ void spice_log(const char *log_domain,
>  } G_STMT_END
>  #endif
>  
> -/* FIXME: improve that some day.. */
>  #ifndef spice_static_assert
> -#define spice_static_assert(x) SPICE_STMT_START {       \
> -    spice_assert(x);                                    \
> -} SPICE_STMT_END
> +#define spice_static_assert(x) G_STATIC_ASSERT(x)
>  #endif
>  
>  SPICE_END_DECLS
> --
> 2.5.0
> 

Nacked!

Believe or not this seems to not work!

I added this code in quic.c

  spice_static_assert (evol == 500);

which is surely wrong... and it's compiling !!!

Than I tried to get code using

  #define BBB(s) #s
  #define AAA(s) BBB(s)
  printf("%s\n", AAA(spice_static_assert (evol == 500)));

and I'm getting

  typedef char _GStaticAssertCompileTimeAssertion_2[(evol == 500) ? 1 : -1] __attribute__((__unused__))

I'm using Fedora 22 compiler.

I'm quite surprised!

Frediano


More information about the Spice-devel mailing list