"not a special compiler directive"
"preprocessing directive", or as you said "compiler directive", has its own specific meaning, and things like if, for, while etc. are not preprocessing directives. They are really flow control statement.
They can often be further classified:
In reply to Re^2: eval with semicolon
by pg
in thread eval with semicolon
by mosh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |