<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for GNU Texinfo (version 6.7, 23 September 2019),
a documentation system that can produce both online information and a
printed manual from a single source using semantic markup.
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997,
1998, 1999, 2001, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 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.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
"GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>#line Directive (GNU Texinfo 6.7)</title>
<meta name="description" content="#line Directive (GNU Texinfo 6.7)">
<meta name="keywords" content="#line Directive (GNU Texinfo 6.7)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="texi2any">
<link href="index.html" rel="start" title="Top">
<link href="Command-and-Variable-Index.html" rel="index" title="Command and Variable Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="External-Macro-Processors.html" rel="up" title="External Macro Processors">
<link href="_0023line-and-TeX.html" rel="next" title="#line and TeX">
<link href="External-Macro-Processors.html" rel="prev" title="External Macro Processors">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<span id="g_t_0023line-Directive"></span><div class="header">
<p>
Next: <a href="_0023line-and-TeX.html" accesskey="n" rel="next">‘<samp>#line</samp>’ and TeX</a>, Up: <a href="External-Macro-Processors.html" accesskey="u" rel="up">External Macro Processors</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Command-and-Variable-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="g_t_0023line-Directive-1"></span><h4 class="subsection">17.6.1 ‘<samp>#line</samp>’ Directive</h4>
<span id="index-_0023line-directive"></span>
<p>An input line such as this:
</p>
<div class="example">
<pre class="example">#line 100 "foo.ptexi"
</pre></div>
<p>indicates that the next line was line 100 of the file
<samp>foo.ptexi</samp>, and so that’s what an error message should refer to.
Both M4 (see <a href="../m4/Preprocessor-features.html#Preprocessor-features">Preprocessor features</a> in <cite>GNU M4</cite>) and CPP
(see <a href="../cpp/Line-Control.html#Line-Control">Line Control</a> in <cite>The C Preprocessor</cite>, and
<a href="../cpp/Preprocessor-Output.html#Preprocessor-Output">Preprocessor Output</a> in <cite>The C Preprocessor</cite>) can generate
such lines.
</p>
<span id="index-CPP_005fLINE_005fDIRECTIVES"></span>
<p>The <code>makeinfo</code> program recognizes these lines by default,
except within <code>@verbatim</code> blocks (see <a href="_0040verbatim.html"><code>@verbatim</code></a>).
Their recognition can be turned off completely with
<code>CPP_LINE_DIRECTIVES</code> (see <a href="Other-Customization-Variables.html">Other Customization Variables</a>),
though there is normally no reason to do so.
</p>
<p>For those few programs (M4, CPP, Texinfo) which need to document
‘<samp>#line</samp>’ directives and therefore have examples which would
otherwise match the pattern, the command <code>@hashchar{}</code> can be
used (see <a href="Inserting-a-Hashsign.html">Inserting a Hashsign</a>). The example line above looks
like this in the source for this manual:
</p>
<div class="example">
<pre class="example">@hashchar{}line 100 "foo.ptexi"
</pre></div>
<p>The <code>@hashchar</code> command was added to Texinfo in 2013. If you
don’t want to rely on it, you can also use <code>@set</code> and
<code>@value</code> to insert the literal ‘<samp>#</samp>’:
</p>
<div class="example">
<pre class="example">@set hash #
@value{hash}line 1 "example.c"
</pre></div>
<p>Or, if suitable, a <code>@verbatim</code> environment can be used instead
of <code>@example</code>. As mentioned above, <code>#line</code>-recognition is
disabled inside verbatim blocks.
</p>
</body>
</html>