>>59
#define BIT(n) (1u << (n))

というマクロがあるとする。
これを、n を静的な定数に制限する代わりに
静的に n の値をチェックしてくれるようにしたいとする。
こういう場合にこのタイプの SASSERT が使える。

#define SBIT(n) (SASSERT(0 <= (n) && (n) < CHAR_BIT * sizeof (unsigned)), 1u << (n))

静的だから n に副作用はないから
n が複数出る事に問題は無い。