#include in C
In the C programming language, #include is another way of inferring a standard, or a user defines file into the application or program. The preprocessor of the programming standard generally reads the #include directive. It then orders to include the contents of the system or a user defined header file within the application or the program.
Most of the files used by including the #include directive is either imported from outside the source of the current program or are defined within the same program or application. This process of importing the files from outside the program might be user defined or system indicated and termed file inclusion.
Such types of preprocessors tell the compiler to include the files within the program’s source code so that the content could be used in future times. In other words, the C standard preprocessor will tell the compiler to include all the contents of the file which are specified in the stream of the input and then continue the same with the rest of the application or program.
The preprocessor will insert the contents of the header file mentioned into the main code from the time it encounters the #include directive. The directives are made to include the C functions or the C header files, which will be held outside the present program.
Syntax:
There are two variants in the #include directive. They are:
#include “user defined file.”
Or
#include “header file”
The double quotes are used when the preprocessor has to access the current directory within which the source “header file” or “user defined file” is located. This is mainly used to access any of the header files required for the program or the application or the user-defined, files. It tells the compiler to look for the directory where system header files are held. In UNIX, it is \usr\include directory.
#include <header file>
Or
#include <user defined file>
While importing files using angular brackets(<>), the preprocessor uses a predetermined directory path to access the file. It is mainly used to access system header files located in the standard system directories. It tells the compiler to look in the current directory from where the program is running.
Header file: header files are the name of the files which a developer wants to include. This ends with the “.h” and contains declarations and macro definitions that can be shared among several source files. Functions like the printf(), scanf(), cout, cin, and various other input-output or other standard functions are contained within different header files. So to utilize those functions, the users need to import a few header files which define the required functions.
User defined files: these are the types of files that resemble the header files but are written and defined by the user. It saves the user from writing many files a multiple number of times.
The #include directives copy and paste the content of the files into the current file. If the file which needs to be included, is neither system-defined nor user-defined, then the compiler will throw an error. By the use of #include directive, we provide information to the preprocessor where to look for the header files.
The difference between these two syntaxes is subtle but essential. If a header file is included within <>, the preprocessor will search a predetermined directory path to locate the header file. If the header file is enclosed in “ ”, the preprocessor will look for the header file in the same directory as the source file.
E.g.:
#include <stdio.h>
#include <conio.h>
int main()
{
printf("Tutorials and Examples provide you %d + lectures on the basics of programming languages \n", 1000);
return 0;
}
Output:
Tutorials and Examples provide you 1000 + lectures on the basics of programming languages.
In the following example, we are using the #include directive to include the stdio.h header file, which is required to use the printf standard C library function in your application.
Other types of header files in the C standard include:
- <assert.h>: it diagnoses the functions
- <ctyle.h>: it handles the character handling functions
- <locale.h>: It localizes the functions.
- <math.h>: it handles the mathematic functions
- <signal.h>: it signals the handling functions
- <conio.h>: stands for console input and output header file.
- <stdlib.h>: these are the general utility functions
- <stdarg.h>: it refers to the variable argument list functions
- <stdio.h>: it indicates the Input/Output Functions
- <string.h>: it indicates the general string functions within the program
- <time.h>: it refers to time and date functions
- In #include directive, comments are not recognized. So in case of #include <a//b>, a//b is treated as filename.
- In #include directive, the backslash is considered as normal text, not escape sequence. So in case of #include <a\nb>, a\nb is treated as filename.
- You can use the only comment after filename otherwise it will give an error.