How does the C compiler know when to use a function call and when to use a function definition?
The compiler uses a bunch of rules to decide whether to call a function or define it. For example, if you have a function called foo, then the compiler will look for a function named foo in the current scope. If it finds one, it will use that function instead of defining its own.