Preprocessor details
All comments are removed before preprocessor is invoked.
It is not possible to redefine built-in language indentifiers like keywords, internal functions, etc.
Directives can start anywhere on a line. There may be horizontal whitespace between the # character and the directive name, like
# ifdef ...
.