Index
Preprocessor directives in C are instructions that are processed by the preprocessor before the actual compilation of the code begins. They allow you to define constants, include files, and conditionally compile parts of the code. Here are explanations and examples for #define, #include, and #ifdef.
1. #define
The #define directive is used to create symbolic constants or macros. It tells the preprocessor to replace occurrences of the defined name with a specified value or code snippet.
Example:
#include <stdio.h>
#define PI 3.14159 // Defining a constant
#define SQUARE(x) ((x) * (x)) // Defining a macro function
int main() {
float radius = 5.0;
float area = PI * SQUARE(radius); // Using the defined constant and macro
printf("Area of the circle: %.2f\n", area);
return 0;
}
Explanation:
- The constant
PIis defined as3.14159. WheneverPIis encountered in the code, the preprocessor replaces it with3.14159. - The macro
SQUARE(x)calculates the square of a number. This macro is replaced by its definition when called in the program.
2. #include
The #include directive is used to include the contents of a file (usually header files) into another file. It helps in organizing code and reusing common functionalities.
Example:
#include <stdio.h> // Including the standard input/output header
int main() {
printf("Hello, World!\n"); // Using a function from the included header
return 0;
}
Explanation:
- The
#include <stdio.h>statement includes the standard I/O library, allowing the program to use functions likeprintf.
You can also include your own header files:
#include "my_header.h" // Including a user-defined header file
3. #ifdef
The #ifdef directive checks whether a certain macro is defined. This is useful for conditional compilation, allowing you to compile code selectively based on whether a macro is defined.
The #endif directive is used to mark the end of a conditional preprocessor directive block that was started by #if, #ifdef, or #ifndef. It tells the preprocessor that the conditional section is complete.
Example:
#include <stdio.h>
#define DEBUG // Uncomment this line to enable debug mode
int main() {
#ifdef DEBUG
printf("Debug mode is enabled.\n"); // This line will only compile if DEBUG is defined
#endif
printf("Program is running.\n");
return 0;
}
Explanation:
- The
#ifdef DEBUGchecks if theDEBUGmacro is defined. If it is, the code inside the block will be included in the compilation. - The
#endifdirective indicates the end of the#ifdef DEBUGblock. Any code after#endifwill be compiled regardless of whetherDEBUGis defined. - If you comment out the
#define DEBUGline, the debug message will not be printed, and only “Program is running.” will be displayed.
Summary
#defineis used to create constants and macros.#includeis used to include files, enabling code reuse and modularity.#ifdefallows for conditional compilation, making it easier to include or exclude parts of the code based on defined macros.
These directives enhance the flexibility and maintainability of C code. Let me know if you need more examples or explanations!

