cast: make sure suncc sees a constant.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 29 Mar 2012 04:28:33 +0000 (14:58 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 29 Mar 2012 06:18:57 +0000 (08:18 +0200)
commitf74ae3257a2edb9756d9f0442c1314306e936759
treec2e960788b0385bbe09bfc7705564f85c7a4d355
parentbe25ab9c8df2f96ee10929fdfee582935b2f0e06
cast: make sure suncc sees a constant.

cast_const() et. al. are supposed to be a constant expression, so you can do things like:
static char *p = cast_const(char *, (const char *)"hello");

Unfortunately, a cast to intptr_t and arithmetic makes suncc reject it as
a constant expression.  We need the cast, because (1) the expression could be
a void *, so we can't just add to it, and (2) gcc complains with -Wcast-qual
without it.

So instead of adding BUILD_BUG_OR_ZERO, we use a ? :, which keeps everyone happy.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 74859ab18b10aaf990848e49d7789ff5c6cf96c6)

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Thu Mar 29 08:18:57 CEST 2012 on sn-devel-104
lib/ccan/cast/cast.h
lib/ccan/cast/test/compile_ok-static.c [new file with mode: 0644]