# Function Prototypes — C Programming

Source: https://www.geekswithgeeks.com/en/c/c-function-prototypes

> Tell the compiler about a function before you define it.

## Why prototypes?

C reads top to bottom. If `main` calls a function defined later in the file, the compiler needs a **prototype** — the function's signature ending in `;` — declared earlier.

## Declare, then define

The prototype's parameter names are optional and only for documentation.

```c
#include <stdio.h>

int square(int n);   // prototype

int main(void) {
    printf("%d\n", square(5));
    return 0;
}

int square(int n) {  // definition
    return n * n;
}
```

Output:

```
25
```

## Header files hold prototypes

`<stdio.h>` and friends are just files full of prototypes for functions like `printf`, so the compiler trusts your calls before linking.
