📄 index.html
字号:
<html lang="en">
<head>
<title>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.3">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
<!--
Copyright © 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
<p>Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 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".
<p>This manual contains no Invariant Sections. The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).
<p>(a) The FSF's Front-Cover Text is:
<p>A GNU Manual
<p>(b) The FSF's Back-Cover Text is:
<p>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.
-->
</head>
<body>
<h1 class="settitle">The C Preprocessor</h1>
<div class="contents">
<h2>Table of Contents</h2>
<ul>
<li><a name="toc_Top" href="index.html#Top"></a>
<li><a name="toc_Overview" href="Overview.html#Overview">Overview</a>
<ul>
<li><a href="Initial-processing.html#Initial%20processing">Initial processing</a>
<li><a href="Tokenization.html#Tokenization">Tokenization</a>
<li><a href="The-preprocessing-language.html#The%20preprocessing%20language">The preprocessing language</a>
</li></ul>
<li><a name="toc_Header%20Files" href="Header-Files.html#Header%20Files">Header Files</a>
<ul>
<li><a href="Include-Syntax.html#Include%20Syntax">Include Syntax</a>
<li><a href="Include-Operation.html#Include%20Operation">Include Operation</a>
<li><a href="Search-Path.html#Search%20Path">Search Path</a>
<li><a href="Once-Only-Headers.html#Once-Only%20Headers">Once-Only Headers</a>
<li><a href="Computed-Includes.html#Computed%20Includes">Computed Includes</a>
<li><a href="Wrapper-Headers.html#Wrapper%20Headers">Wrapper Headers</a>
<li><a href="System-Headers.html#System%20Headers">System Headers</a>
</li></ul>
<li><a name="toc_Macros" href="Macros.html#Macros">Macros</a>
<ul>
<li><a href="Object-like-Macros.html#Object-like%20Macros">Object-like Macros</a>
<li><a href="Function-like-Macros.html#Function-like%20Macros">Function-like Macros</a>
<li><a href="Macro-Arguments.html#Macro%20Arguments">Macro Arguments</a>
<li><a href="Stringification.html#Stringification">Stringification</a>
<li><a href="Concatenation.html#Concatenation">Concatenation</a>
<li><a href="Variadic-Macros.html#Variadic%20Macros">Variadic Macros</a>
<li><a href="Predefined-Macros.html#Predefined%20Macros">Predefined Macros</a>
<ul>
<li><a href="Standard-Predefined-Macros.html#Standard%20Predefined%20Macros">Standard Predefined Macros</a>
<li><a href="Common-Predefined-Macros.html#Common%20Predefined%20Macros">Common Predefined Macros</a>
<li><a href="System-specific-Predefined-Macros.html#System-specific%20Predefined%20Macros">System-specific Predefined Macros</a>
<li><a href="C---Named-Operators.html#C++%20Named%20Operators">C++ Named Operators</a>
</li></ul>
<li><a href="Undefining-and-Redefining-Macros.html#Undefining%20and%20Redefining%20Macros">Undefining and Redefining Macros</a>
<li><a href="Directives-Within-Macro-Arguments.html#Directives%20Within%20Macro%20Arguments">Directives Within Macro Arguments</a>
<li><a href="Macro-Pitfalls.html#Macro%20Pitfalls">Macro Pitfalls</a>
<ul>
<li><a href="Misnesting.html#Misnesting">Misnesting</a>
<li><a href="Operator-Precedence-Problems.html#Operator%20Precedence%20Problems">Operator Precedence Problems</a>
<li><a href="Swallowing-the-Semicolon.html#Swallowing%20the%20Semicolon">Swallowing the Semicolon</a>
<li><a href="Duplication-of-Side-Effects.html#Duplication%20of%20Side%20Effects">Duplication of Side Effects</a>
<li><a href="Self-Referential-Macros.html#Self-Referential%20Macros">Self-Referential Macros</a>
<li><a href="Argument-Prescan.html#Argument%20Prescan">Argument Prescan</a>
<li><a href="Newlines-in-Arguments.html#Newlines%20in%20Arguments">Newlines in Arguments</a>
</li></ul>
</li></ul>
<li><a name="toc_Conditionals" href="Conditionals.html#Conditionals">Conditionals</a>
<ul>
<li><a href="Conditional-Uses.html#Conditional%20Uses">Conditional Uses</a>
<li><a href="Conditional-Syntax.html#Conditional%20Syntax">Conditional Syntax</a>
<ul>
<li><a href="Ifdef.html#Ifdef">Ifdef</a>
<li><a href="If.html#If">If</a>
<li><a href="Defined.html#Defined">Defined</a>
<li><a href="Else.html#Else">Else</a>
<li><a href="Elif.html#Elif">Elif</a>
</li></ul>
<li><a href="Deleted-Code.html#Deleted%20Code">Deleted Code</a>
</li></ul>
<li><a name="toc_Diagnostics" href="Diagnostics.html#Diagnostics">Diagnostics</a>
<li><a name="toc_Line%20Control" href="Line-Control.html#Line%20Control">Line Control</a>
<li><a name="toc_Pragmas" href="Pragmas.html#Pragmas">Pragmas</a>
<li><a name="toc_Other%20Directives" href="Other-Directives.html#Other%20Directives">Other Directives</a>
<li><a name="toc_Preprocessor%20Output" href="Preprocessor-Output.html#Preprocessor%20Output">Preprocessor Output</a>
<li><a name="toc_Traditional%20Mode" href="Traditional-Mode.html#Traditional%20Mode">Traditional Mode</a>
<ul>
<li><a href="Traditional-lexical-analysis.html#Traditional%20lexical%20analysis">Traditional lexical analysis</a>
<li><a href="Traditional-macros.html#Traditional%20macros">Traditional macros</a>
<li><a href="Traditional-miscellany.html#Traditional%20miscellany">Traditional miscellany</a>
<li><a href="Traditional-warnings.html#Traditional%20warnings">Traditional warnings</a>
</li></ul>
<li><a name="toc_Implementation%20Details" href="Implementation-Details.html#Implementation%20Details">Implementation Details</a>
<ul>
<li><a href="Implementation-defined-behavior.html#Implementation-defined%20behavior">Implementation-defined behavior</a>
<li><a href="Implementation-limits.html#Implementation%20limits">Implementation limits</a>
<li><a href="Obsolete-Features.html#Obsolete%20Features">Obsolete Features</a>
<ul>
<li><a href="Assertions.html#Assertions">Assertions</a>
<li><a href="Obsolete-once-only-headers.html#Obsolete%20once-only%20headers">Obsolete once-only headers</a>
</li></ul>
<li><a href="Differences-from-previous-versions.html#Differences%20from%20previous%20versions">Differences from previous versions</a>
</li></ul>
<li><a name="toc_Invocation" href="Invocation.html#Invocation">Invocation</a>
<li><a name="toc_Environment%20Variables" href="Environment-Variables.html#Environment%20Variables">Environment Variables</a>
<li><a name="toc_GNU%20Free%20Documentation%20License" href="GNU-Free-Documentation-License.html#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>
<ul>
<li><a href="GNU-Free-Documentation-License.html#GNU%20Free%20Documentation%20License">ADDENDUM: How to use this License for your documents</a>
</li></ul>
<li><a name="toc_Index%20of%20Directives" href="Index-of-Directives.html#Index%20of%20Directives">Index of Directives</a>
<li><a name="toc_Option%20Index" href="Option-Index.html#Option%20Index">Option Index</a>
<li><a name="toc_Concept%20Index" href="Concept-Index.html#Concept%20Index">Concept Index</a>
</li></ul>
</div>
<div class="node">
<p>
Node:<a name="Top">Top</a>,
Next:<a rel="next" accesskey="n" href="Overview.html#Overview">Overview</a>,
Up:<a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
<hr><br>
</div>
<h2 class="unnumbered"></h2>
<p>The C preprocessor implements the macro language used to transform C,
C++, and Objective-C programs before they are compiled. It can also be
useful on its own.
<ul class="menu">
<li><a accesskey="1" href="Overview.html#Overview">Overview</a>:
<li><a accesskey="2" href="Header-Files.html#Header%20Files">Header Files</a>:
<li><a accesskey="3" href="Macros.html#Macros">Macros</a>:
<li><a accesskey="4" href="Conditionals.html#Conditionals">Conditionals</a>:
<li><a accesskey="5" href="Diagnostics.html#Diagnostics">Diagnostics</a>:
<li><a accesskey="6" href="Line-Control.html#Line%20Control">Line Control</a>:
<li><a accesskey="7" href="Pragmas.html#Pragmas">Pragmas</a>:
<li><a accesskey="8" href="Other-Directives.html#Other%20Directives">Other Directives</a>:
<li><a accesskey="9" href="Preprocessor-Output.html#Preprocessor%20Output">Preprocessor Output</a>:
<li><a href="Traditional-Mode.html#Traditional%20Mode">Traditional Mode</a>:
<li><a href="Implementation-Details.html#Implementation%20Details">Implementation Details</a>:
<li><a href="Invocation.html#Invocation">Invocation</a>:
<li><a href="Environment-Variables.html#Environment%20Variables">Environment Variables</a>:
<li><a href="GNU-Free-Documentation-License.html#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>:
<li><a href="Index-of-Directives.html#Index%20of%20Directives">Index of Directives</a>:
<li><a href="Option-Index.html#Option%20Index">Option Index</a>:
<li><a href="Concept-Index.html#Concept%20Index">Concept Index</a>:
<p>--- The Detailed Node Listing ---
<p>Overview
</p><li><a href="Initial-processing.html#Initial%20processing">Initial processing</a>:
<li><a href="Tokenization.html#Tokenization">Tokenization</a>:
<li><a href="The-preprocessing-language.html#The%20preprocessing%20language">The preprocessing language</a>:
<p>Header Files
</p><li><a href="Include-Syntax.html#Include%20Syntax">Include Syntax</a>:
<li><a href="Include-Operation.html#Include%20Operation">Include Operation</a>:
<li><a href="Search-Path.html#Search%20Path">Search Path</a>:
<li><a href="Once-Only-Headers.html#Once-Only%20Headers">Once-Only Headers</a>:
<li><a href="Computed-Includes.html#Computed%20Includes">Computed Includes</a>:
<li><a href="Wrapper-Headers.html#Wrapper%20Headers">Wrapper Headers</a>:
<li><a href="System-Headers.html#System%20Headers">System Headers</a>:
<p>Macros
</p><li><a href="Object-like-Macros.html#Object-like%20Macros">Object-like Macros</a>:
<li><a href="Function-like-Macros.html#Function-like%20Macros">Function-like Macros</a>:
<li><a href="Macro-Arguments.html#Macro%20Arguments">Macro Arguments</a>:
<li><a href="Stringification.html#Stringification">Stringification</a>:
<li><a href="Concatenation.html#Concatenation">Concatenation</a>:
<li><a href="Variadic-Macros.html#Variadic%20Macros">Variadic Macros</a>:
<li><a href="Predefined-Macros.html#Predefined%20Macros">Predefined Macros</a>:
<li><a href="Undefining-and-Redefining-Macros.html#Undefining%20and%20Redefining%20Macros">Undefining and Redefining Macros</a>:
<li><a href="Directives-Within-Macro-Arguments.html#Directives%20Within%20Macro%20Arguments">Directives Within Macro Arguments</a>:
<li><a href="Macro-Pitfalls.html#Macro%20Pitfalls">Macro Pitfalls</a>:
<p>Predefined Macros
</p><li><a href="Standard-Predefined-Macros.html#Standard%20Predefined%20Macros">Standard Predefined Macros</a>:
<li><a href="Common-Predefined-Macros.html#Common%20Predefined%20Macros">Common Predefined Macros</a>:
<li><a href="System-specific-Predefined-Macros.html#System-specific%20Predefined%20Macros">System-specific Predefined Macros</a>:
<li><a href="C---Named-Operators.html#C++%20Named%20Operators">C++ Named Operators</a>:
<p>Macro Pitfalls
</p><li><a href="Misnesting.html#Misnesting">Misnesting</a>:
<li><a href="Operator-Precedence-Problems.html#Operator%20Precedence%20Problems">Operator Precedence Problems</a>:
<li><a href="Swallowing-the-Semicolon.html#Swallowing%20the%20Semicolon">Swallowing the Semicolon</a>:
<li><a href="Duplication-of-Side-Effects.html#Duplication%20of%20Side%20Effects">Duplication of Side Effects</a>:
<li><a href="Self-Referential-Macros.html#Self-Referential%20Macros">Self-Referential Macros</a>:
<li><a href="Argument-Prescan.html#Argument%20Prescan">Argument Prescan</a>:
<li><a href="Newlines-in-Arguments.html#Newlines%20in%20Arguments">Newlines in Arguments</a>:
<p>Conditionals
</p><li><a href="Conditional-Uses.html#Conditional%20Uses">Conditional Uses</a>:
<li><a href="Conditional-Syntax.html#Conditional%20Syntax">Conditional Syntax</a>:
<li><a href="Deleted-Code.html#Deleted%20Code">Deleted Code</a>:
<p>Conditional Syntax
</p><li><a href="Ifdef.html#Ifdef">Ifdef</a>:
<li><a href="If.html#If">If</a>:
<li><a href="Defined.html#Defined">Defined</a>:
<li><a href="Else.html#Else">Else</a>:
<li><a href="Elif.html#Elif">Elif</a>:
<p>Implementation Details
</p><li><a href="Implementation-defined-behavior.html#Implementation-defined%20behavior">Implementation-defined behavior</a>:
<li><a href="Implementation-limits.html#Implementation%20limits">Implementation limits</a>:
<li><a href="Obsolete-Features.html#Obsolete%20Features">Obsolete Features</a>:
<li><a href="Differences-from-previous-versions.html#Differences%20from%20previous%20versions">Differences from previous versions</a>:
<p>Obsolete Features
</p><li><a href="Assertions.html#Assertions">Assertions</a>:
<li><a href="Obsolete-once-only-headers.html#Obsolete%20once-only%20headers">Obsolete once-only headers</a>:
</ul>
Copyright © 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
<p>Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 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".
<p>This manual contains no Invariant Sections. The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).
<p>(a) The FSF's Front-Cover Text is:
<p>A GNU Manual
<p>(b) The FSF's Back-Cover Text is:
<p>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.
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -