<html lang="en">
<head>
<title>Include Syntax - The C Preprocessor</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The C Preprocessor">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Header-Files.html#Header-Files" title="Header Files">
<link rel="next" href="Include-Operation.html#Include-Operation" title="Include Operation">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010
Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled ``GNU Free Documentation License''.

This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).

(a) The FSF's Front-Cover Text is:

     A GNU Manual

(b) The FSF's Back-Cover Text is:

     You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Include-Syntax"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Include-Operation.html#Include-Operation">Include Operation</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Header-Files.html#Header-Files">Header Files</a>
<hr>
</div>

<h3 class="section">2.1 Include Syntax</h3>

<p><a name="index-g_t_0023include-27"></a>Both user and system header files are included using the preprocessing
directive &lsquo;<samp><span class="samp">#include</span></samp>&rsquo;.  It has two variants:

     <dl>
<dt><code>#include &lt;</code><var>file</var><code>&gt;</code><dd>This variant is used for system header files.  It searches for a file
named <var>file</var> in a standard list of system directories.  You can prepend
directories to this list with the <samp><span class="option">-I</span></samp> option (see <a href="Invocation.html#Invocation">Invocation</a>).

     <br><dt><code>#include "</code><var>file</var><code>"</code><dd>This variant is used for header files of your own program.  It
searches for a file named <var>file</var> first in the directory containing
the current file, then in the quote directories and then the same
directories used for <code>&lt;</code><var>file</var><code>&gt;</code>.  You can prepend directories
to the list of quote directories with the <samp><span class="option">-iquote</span></samp> option. 
</dl>

   <p>The argument of &lsquo;<samp><span class="samp">#include</span></samp>&rsquo;, 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, <code>#include&nbsp;&lt;x/*y&gt;<!-- /@w --></code> specifies inclusion of a system header file named <samp><span class="file">x/*y</span></samp>.

   <p>However, if backslashes occur within <var>file</var>, they are considered
ordinary text characters, not escape characters.  None of the character
escape sequences appropriate to string constants in C are processed. 
Thus, <code>#include&nbsp;"x\n\\y"<!-- /@w --></code> specifies a filename containing three
backslashes.  (Some systems interpret &lsquo;<samp><span class="samp">\</span></samp>&rsquo; as a pathname separator. 
All of these also interpret &lsquo;<samp><span class="samp">/</span></samp>&rsquo; the same way.  It is most portable
to use only &lsquo;<samp><span class="samp">/</span></samp>&rsquo;.)

   <p>It is an error if there is anything (other than comments) on the line
after the file name.

   </body></html>

