In general, header files contain declarations and definitions pertaining to
functions defined elsewhere. In general, for any external
function you call, there will be a header file which contains the
prototype declaration for the function, along with any other
definitions of constants or structures which you need to use
when calling that function.
Header files let you keep shared declarations and definitions in
a single central place, when those declarations and definitions
must be kept consistent between separately-compiled source files.
Note that a header file does not actually contain the definitions
of any external functions. After using #include to reference
the header file describing some external library function(s),
in many cases you will also have to explicitly request that a
copy of that external library be read by the linker during the
last stage of the compilation process so that the function
definitions themselves can be read out of the library and copied
into your program's executable.
about this FAQ list