Preprocessor constant expressions are evaluated with at least the range of the largest integer type available at run time. The C standard requires that "long" have at least 32 bits. So a shift right by 30 in a preprocessor constant expression looks good to me.