I know what this means

#define M(B) (1U << ((sizeof(x) * CHAR_BIT) - B)) // CHAR_BIT=bits/byte

but I don't understand this one well:

#undef M

After this, what happens? Is M cleared, deleted, or?

Edit
Report