#define: It substitutes a preprocessor using macro.
#include: It helps to insert a certain header from another file.
#undef: It undefines a certain preprocessor macro.
#ifdef: It returns true if a certain macro is defined.
#ifndef: It returns true if a certain macro is not defined.
#if, #elif, #else, and #endif: It tests the program using a certain condition; these directives can be nested too.
#line: It handles the line numbers on the errors and warnings. It can be used to change the line number and source files while generating output during compile time.
#error and #warning: It can be used for generating errors and warnings.
#error can be performed to stop compilation.
#warning is performed to continue compilation with messages in the console window.
#region and #endregion: To define the sections of the code to make them more understandable and readable, we can use the region using expansion and collapse features.