Header Files : The files that tell the compiler how to call some functionality (without knowing how the functionality actually works) are called header files. They contain the function prototypes. They also contain Data types and constants used with the libraries. We use #include to use these header files in programs. These files end with .h extension.
Library : Library is the place where the actual functionality is implemented i.e. they contain function body. Libraries have mainly two categories :
- Shared or Dynamic
Static : Static libraries contains object code linked with an end user application and then they become the part of the executable. These libraries are specifically used at compile time which means the library should be present in correct location when user wants to compile his/her C or C++ program. In windows they end with .lib extension and with .a for MacOS.
Shared or Dynamic : These libraries are only required at run-time i.e, user can compile his/her code without using these libraries. In short these libraries are linked against at compile time to resolve undefined references and then its distributed to the application so that application can load it at run time. For example, when we open our game folders we can find many .dll(dynamic link libraries) files. As these libraries can be shared by multiple programs, they are also called as shared libraries.These files end with .dll or .lib extensions. In windows they end with .dll extension.
Example : Math.h is a header file which includes the prototype for function calls like sqrt(), pow() etc, whereas libm.lib, libmmd.lib, libmmd.dll are some of the math libraries. In simple terms a header file is like a visiting card and libraries are like a real person, so we use visiting card(Header file) to reach to the actual person(Library).
Let’s see the difference between these two in tabular form,so that it can be easily comparable:
|Header Files||Library Files|
|They have the extension .h||They have the extension .lib|
|They contain function declaration.||They contain function definations|
|They are available inside “include sub directory” which itself is in Turbo compiler.||They are available inside “lib sub directory” which itself is in Turbo compiler.|
|Header files are human readable.Since they are in the form of source code.||Library files are non human readable.Since they are in the form of machine code.|
|Header files in our program are included by using a command #include which is internally handle by pre-processor.||Library files in our program are included in last stage by special software called as linker.|
- How to write your own header file in C?
- Comment in header file name?
- Print "Hello World" in C/C++ without using any header file
- What’s difference between header files "stdio.h" and "stdlib.h" ?
- Difference between File Transfer Protocol (FTP) and Secure File Transfer Protocol (SFTP)
- Difference between FAT32, exFAT, and NTFS File System
- C program to copy contents of one file to another file
- numeric header in C++ STL | Set 1 (accumulate() and partial_sum())
- numeric header in C++ STL | Set 2 (adjacent_difference(), inner_product() and iota())
- Namespace in C++ | Set 3 (Accessing, creating header, nesting and aliasing)
- snprintf() in C library
- SDL library in C/C++ with examples
- C Library math.h functions
- wprintf() and wscanf in C Library
- wcstof function in C library
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : AnshulVaidya