A declaration and a definition
Consider `int main(void);` followed by `int main(void) { return 0; }`. The first line declares the function: it gives the name `main`, the return type `int`, and an interface with no parameters. The second line repeats that declaration and adds a body in braces, making it a definition. Execution starts at `main`; `return 0;` leaves the function. section 2.1 section 2.3 section 2.5
A declaration identifies a function and specifies its properties; it need not say how the function does its work. A definition supplies that missing body. TAKEAWAY: A function definition includes a declaration, but a declaration alone is not a definition. section 2.1 section 2.3
A call such as `printf(...)` delegates a task to a function. Keep the roles separate: the declaration identifies the function, the definition specifies what it does, and the call uses it. section 2.1 section 2.5





