C Programming Tutorial: Macros

Welcome to the "Macros in C Programming" tutorial! This tutorial will guide you through the usage of macros in C for defining constants and simple functions.

Table of Contents

1. Introduction to Macros

Macros in C are preprocessor directives that allow you to define symbolic constants and simple functions. They are processed by the C preprocessor before compilation, replacing occurrences of macros with their definitions in the source code.

2. Syntax of Macros

#define MACRO_NAME value

3. Defining Constants with Macros

Macros are commonly used to define constants that remain unchanged throughout the program.

#define PI 3.14159
#define MAX_SIZE 100

4. Defining Simple Functions with Macros

Macros can also be used to define simple functions, known as macro functions.

#define SQUARE(x) ((x) * (x))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#include <stdio.h>

#define PI 3.14159
#define MAX_SIZE 100
#define MESSAGE "Hello, World!"

int main() {
    printf("Value of pi: %f\n", PI);
    printf("Max size of array: %d\n", MAX_SIZE);
    printf("Message: %s\n", MESSAGE);
    return 0;

5. Macros vs. Functions

  • Macros are processed by the preprocessor and replaced directly in the source code, while functions are compiled and executed at runtime.

  • Macros may result in faster code execution due to inline substitution, but they lack type checking and error handling compared to functions.

6. Predefined Macros

C provides several predefined macros that can be useful for conditional compilation and platform-specific code.

  • __FILE__: Name of the current source file.

  • __LINE__: Current line number in the source file.

  • __DATE__: Date of compilation.

  • __TIME__: Time of compilation.

  1. __FILE__: Name of the current source file.

#include <stdio.h>

int main() {
    printf("Current source file: %s\n", __FILE__);
    return 0;


Current source file: example.c
  1. __LINE__: Current line number in the source file.

#include <stdio.h>

int main() {
    printf("Current line number: %d\n", __LINE__);
    printf("This is line number %d\n", __LINE__);
    return 0;


Current line number: 5
This is line number 6
  1. __DATE__: Date of compilation.

#include <stdio.h>

int main() {
    printf("Date of compilation: %s\n", __DATE__);
    return 0;

Output (depending on the date of compilation):

Date of compilation: May 30 2024
  1. __TIME__: Time of compilation.

#include <stdio.h>

int main() {
    printf("Time of compilation: %s\n", __TIME__);
    return 0;

Output (depending on the time of compilation):

Time of compilation: 10:30:00

These macros provide valuable information that can be used for debugging, logging, or generating version information in your C programs.

6. Benefits of Defining Constants with Macros:

  • Readability: Using meaningful names like PI instead of 3.14159 makes the code easier to understand.

  • Maintainability: If the value of a constant needs to be changed, you only need to update it in one place (the macro definition) instead of throughout the codebase.

  • Flexibility: Macros can be used anywhere in the code, including expressions, function parameters, and preprocessor directives.

7. Best Practices

  • Use macros sparingly and only for simple tasks where they provide a clear benefit over other methods.

  • Define macros with uppercase letters to differentiate them from variables.

  • Document macros with comments to explain their purpose and usage.

8. Exercises

Try these exercises to practice macros in C:

  1. Exercise 1: Write a program to calculate the area of a circle using a macro for the value of pi.

  2. Exercise 2: Implement a program to find the maximum of two numbers using a macro function.

  3. Exercise 3: Create a program to print the current file name and line number using predefined macros.

  4. Exercise 4: Write a program to define a macro that swaps two values.

  5. Exercise 5: Implement a program to calculate the factorial of a number using a macro.

We hope this tutorial has helped you understand macros in C programming. Practice with the exercises provided to reinforce your understanding. Happy coding!

For more tutorials, visit

Last updated