Clearly, there are times where #define statements must have parentheses, like so:
#define
#define WIDTH 80+20 int a = WIDTH * 2; // expect a==200 but a
Whenever the define consists of a single token (one operand only, no operators), the parentheses are not needed because a single token (such as 100) is an indivisible atom when lexing and parsing.
100