preprocessor directives

I noticed that the reference manual does not include all of the preprocessor directives included in C++ but they seem to work in the sketch compiler.
(e.g. #if, #ifdef, .....)

Good point. Although the Arduino reference page (Arduino - Home) provides pointers to the avr-libc reference (near the bottom right corner) and it does say "The Arduino language is based on C/C++." it does not provide a link to the avr-gcc compiler reference.

The avr-specific parts of the avr-gcc compiler specification:
https://gcc.gnu.org/wiki/avr-gcc

Pointers to the compiler manuals for all the Gnu Compiler Collection (GCC) compilers:
https://gcc.gnu.org/onlinedocs/

The C Pre-Processor (CPP) manual for the current latest version (7.2.0) of GCC: