Skip to main content

Preprocessor Directives in C

Preprocessor Directives​

  • Preprocessor directives are commands used in computer programming to provide instructions to the preprocessor*.

  • These directives begin with a hash (#) symbol and are processed by the preprocessor before the source code is compiled or interpreted.

Example of a preprocessor directive​

Here is a simple example of a preprocessor directive:

#include <stdio.h>

Explanation:

  • The directive #include is used to instruct the preprocessor to include the header file stdio.h in the program.
  • The stdio.h header file contains declarations for standard input and output functions such as printf() and scanf(), which are commonly used in C programming.
  • When the program is compiled or interpreted, the preprocessor will replace the #include directive with the contents of the stdio.h header file, making the standard input and output functions available for use in the program.

Types of Preprocessor Directives​

There are several types of preprocessor directives in C programming, each with its own specific function.

Here are the main types of preprocessor directives:

Include Directives​

  • #include directive is used to include header files in the program.
  • #include_next directive is used to include the next header file with the same name in the include search list.

Macro Directives​

  • #define directive is used to define a macro.
  • #undef directive is used to undefine a macro.
  • #ifdef directive is used to check whether a macro is defined or not.
  • #ifndef directive is used to check whether a macro is not defined or not.
  • #if directive is used to test a compile-time condition.
  • #else directive is used with the #if directive to provide an alternative code path.
  • #elif directive is used with the #if directive to provide an additional condition to test.

Conditional Compilation Directives​

  • #if, #else, and #endif directives are used for conditional compilation.
  • #ifdef, #ifndef, and #undef directives are also used for conditional compilation.

Error Handling Directives​

  • #error directive is used to generate a compilation error message.
  • #warning directive is used to generate a compilation warning message.

Pragma Directives​

  • #pragma directive is used to provide additional information to the compiler, such as optimization settings or alignment requirements.

Commonly used Preprocessor Directives​

Preprocessor DirectiveDescription
#includeIncludes a header file in the source code.
#defineDefines a macro that can be used throughout the code.
#ifdef Conditionally compiles code if a particular macro is defined.
#ifndefConditionally compiles code if a particular macro is not defined.
#if Conditionally compiles code based on a condition.
#elseSpecifies an alternative condition to compile if the preceding condition is not met.
#elifSpecifies an alternative condition to compile if the preceding condition is not met, and another condition is true.
#undef Undefines a previously defined macro.
#pragmaProvides implementation-specific directives to the compiler.
#errorGenerates a compiler error message with the specified text.