The idea is nice, but I don't like the API. The "_overflow" feels too specific because maybe we could check for other things in the future. Normally boolean macros should say they are boolean in the name and I would prefer if it returned zero on failure.
if (!checked_shift(dest, mask, shift)) { if (!shift_ok(dest, mask, shift)) { if (!safe_shift(dest, mask, shift)) { regards, dan carpenter