At a high level, I understand we use #include
statements to make code from other files available to the current file. But I don't understand why we include a header file, which contains declarations but no definitions.
Maybe I need to learn more about the compilation/linking process to fully understand the mechanics, but is there a high level concept I'm failing to grasp at the outset?
Edit: All the answers helped clarify my question, which boils down to: once we've notified the compiler that a function is defined elsewhere, how does it figure out where to find that definition?
Because if you include the header where there are definitions, in different .c
files, you will have Multiple Definitions.
The declaration is sufficient, because it allows the compiler to generate the calling code, after that the linker takes care of finding the definition and links the function call to the actual definition.
One reason is you can use pre-compiled libraries as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With