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 04:28:33 +0000 (14:58 +1030)
commit74859ab18b10aaf990848e49d7789ff5c6cf96c6
tree80bfe164c814e0c5ce7e0af033506c29c4b5b9f2
parent9bf73235ffc8b7b9846a459f40516f7b16de6b1a
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.
ccan/cast/cast.h
ccan/cast/test/compile_ok-static.c [new file with mode: 0644]