Because preprocessing directives are not instructions.
Not even all statements must be final ;
. For instance:
int bla = 1; if (bla) { }
After declaring bla
we have two statements: one if
and one empty compound statement. No ;
but the program is valid.
source share