Preprocessor directives are instructions that we give to the compiler and compilers job is to compile code based on those instructions.
All preprocessor directives must begin with hash(#) sign, but do not need to end with semicolon(;) because they are not statements.
Preprocessor directives are not inherited and are file specific.
List of preprocessor directives:
#define
#undef
#if
#else
#elif
#endif
#warning
#error
#line
#region
#endregion
#pragma
#pragma warning
#pragma checksum