The C Preprocessor: Top

The C Preprocessor

Table of Contents

  • 1 Overview
    • 1.1 Character sets
    • 1.2 Initial processing
    • 1.3 Tokenization
    • 1.4 The preprocessing language
  • 2 Header Files
    • 2.1 Include Syntax
    • 2.2 Include Operation
    • 2.3 Search Path
    • 2.4 Once-Only Headers
    • 2.5 Alternatives to Wrapper #ifndef
    • 2.6 Computed Includes
    • 2.7 Wrapper Headers
    • 2.8 System Headers
  • 3 Macros
    • 3.1 Object-like Macros
    • 3.2 Function-like Macros
    • 3.3 Macro Arguments
    • 3.4 Stringizing
    • 3.5 Concatenation
    • 3.6 Variadic Macros
    • 3.7 Predefined Macros
      • 3.7.1 Standard Predefined Macros
      • 3.7.2 Common Predefined Macros
      • 3.7.3 System-specific Predefined Macros
      • 3.7.4 C++ Named Operators
    • 3.8 Undefining and Redefining Macros
    • 3.9 Directives Within Macro Arguments
    • 3.10 Macro Pitfalls
      • 3.10.1 Misnesting
      • 3.10.2 Operator Precedence Problems
      • 3.10.3 Swallowing the Semicolon
      • 3.10.4 Duplication of Side Effects
      • 3.10.5 Self-Referential Macros
      • 3.10.6 Argument Prescan
      • 3.10.7 Newlines in Arguments
  • 4 Conditionals
    • 4.1 Conditional Uses
    • 4.2 Conditional Syntax
      • 4.2.1 Ifdef
      • 4.2.2 If
      • 4.2.3 Defined
      • 4.2.4 Else
      • 4.2.5 Elif
    • 4.3 Deleted Code
  • 5 Diagnostics
  • 6 Line Control
  • 7 Pragmas
  • 8 Other Directives
  • 9 Preprocessor Output
  • 10 Traditional Mode
    • 10.1 Traditional lexical analysis
    • 10.2 Traditional macros
    • 10.3 Traditional miscellany
    • 10.4 Traditional warnings
  • 11 Implementation Details
    • 11.1 Implementation-defined behavior
    • 11.2 Implementation limits
    • 11.3 Obsolete Features
      • 11.3.1 Assertions
  • 12 Invocation
  • 13 Environment Variables
  • GNU Free Documentation License
    • ADDENDUM: How to use this License for your documents
  • Index of Directives
  • Option Index
  • Concept Index

Next: Overview, Up: (dir)   [Contents][Index]


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.

• Overview:   
• Header Files:   
• Macros:   
• Conditionals:   
• Diagnostics:   
• Line Control:   
• Pragmas:   
• Other Directives:   
• Preprocessor Output:   
• Traditional Mode:   
• Implementation Details:   
• Invocation:   
• Environment Variables:   
• GNU Free Documentation License:   
• Index of Directives:   
• Option Index:   
• Concept Index:   

 — The Detailed Node Listing —
Overview
• Character sets:   
• Initial processing:   
• Tokenization:   
• The preprocessing language:   
Header Files
• Include Syntax:   
• Include Operation:   
• Search Path:   
• Once-Only Headers:   
• Alternatives to Wrapper #ifndef:   
• Computed Includes:   
• Wrapper Headers:   
• System Headers:   
Macros
• Object-like Macros:   
• Function-like Macros:   
• Macro Arguments:   
• Stringizing:   
• Concatenation:   
• Variadic Macros:   
• Predefined Macros:   
• Undefining and Redefining Macros:   
• Directives Within Macro Arguments:   
• Macro Pitfalls:   
Predefined Macros
• Standard Predefined Macros:   
• Common Predefined Macros:   
• System-specific Predefined Macros:   
• C++ Named Operators:   
Macro Pitfalls
• Misnesting:   
• Operator Precedence Problems:   
• Swallowing the Semicolon:   
• Duplication of Side Effects:   
• Self-Referential Macros:   
• Argument Prescan:   
• Newlines in Arguments:   
Conditionals
• Conditional Uses:   
• Conditional Syntax:   
• Deleted Code:   
Conditional Syntax
• Ifdef:   
• If:   
• Defined:   
• Else:   
• Elif:   
Implementation Details
• Implementation-defined behavior:   
• Implementation limits:   
• Obsolete Features:   
Obsolete Features
• Obsolete Features:   

Copyright © 1987-2017 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. 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.


Next: Overview, Up: (dir)   [Contents][Index]