>>456
うい。例えば

#define STATIC_ASSERT(expr) ((int(*)[(expr) ? 1 : -1])0)

こういうタイプの静的アサーションマクロがあったとすると、

int (*p)[1] = STATIC_ASSERT(true);

みたいにしてその値を使えてしまう。
そこで、

#define STATIC_ASSERT(expr) ((void)(int(*)[(expr) ? 1 : -1])0)

と void にキャストすると、そういうことができなくなる。