Gcc/10.2.0/cpp/Include-Syntax
Next: Include Operation, Up: Header Files [Contents][Index]
2.1 Include Syntax
Both user and system header files are included using the preprocessing
directive ‘#include
’. It has two variants:
#include <file>
- This variant is used for system header files. It searches for a file named
file
in a standard list of system directories. You can prepend directories to this list with the-I
option (see Invocation). #include "file"
- This variant is used for header files of your own program. It searches for a file named
file
first in the directory containing the current file, then in the quote directories and then the same directories used for<file>
. You can prepend directories to the list of quote directories with the-iquote
option.
The argument of ‘#include
’, whether delimited with quote marks or
angle brackets, behaves like a string constant in that comments are not
recognized, and macro names are not expanded. Thus, #include <x/*y>
specifies inclusion of a system header file named x/*y
.
However, if backslashes occur within file
, they are considered
ordinary text characters, not escape characters. None of the character
escape sequences appropriate to string constants in C are processed.
Thus, #include "x\n\\y"
specifies a filename containing three
backslashes. (Some systems interpret ‘\
’ as a pathname separator.
All of these also interpret ‘/
’ the same way. It is most portable
to use only ‘/
’.)
It is an error if there is anything (other than comments) on the line after the file name.