# How does preprocessed code look?

You can use the `-E` option with the GCC compiler to stop after preprocessing and display the preprocessed code. Here's a simple example:

### Example: Preprocessor Directives with GCC

```c
// main.c

#include <stdio.h>

// Define a constant
#define PI 3.14159

// Define a macro function
#define SQUARE(x) ((x) * (x))

int main() {
    int radius = 5;
    float area = PI * SQUARE(radius);

    printf("Area of the circle: %f\n", area);

    return 0;
}
```

To view the preprocessed code, you can use the following command in your terminal:

```bash
gcc -E main.c -o main_preprocessed.c
```

This will preprocess the code and save the result in a file named `main_preprocessed.c`. You can then open this file to see the preprocessed code:

```bash
cat main_preprocessed.c
```

The preprocessed code will look something like this:

```c
// contents of stdio.h will be pasted here
// I'm just showing the line that declares the printf function
// in the stdio.h header file
extern int printf (const char *__restrict __format, ...);
// rest of stdio.h

int main() {
    int radius = 5;
    float area = 3.14159 * ((radius) * (radius));

    printf("Area of the circle: %f\n", area);

    return 0;
}
```

This is just a snippet of the preprocessed code. You can see how the preprocessor has replaced the macro `PI` with its value and expanded the `SQUARE` macro in the code. The preprocessed code includes all the header files and macro substitutions, giving you a clearer view of what the compiler sees before actual compilation.
