GNUPro Toolkit Documentation|Index|Next

# The C Preprocessor

Copyright © 1988-1997 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this documentation, provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions.

This documentation has been prepared by Cygnus Technical Publications; contact the Cygnus Solutions Technical Publications staff: doc@cygnus.com.

Copyright © 1991, 1992, 1993, 1994, 1995, 1996, 1997 Cygnus Solutions.

All rights reserved.

GNUPro™, the GNUPro™ logo and the Cygnus Solutions logo are all trademarks of Cygnus Solutions. All other brand and product names are trademarks of their respective owners.

See the following documentation for detailed discussion of theC preprocessor.

- Overview Of The C Preprocessor
- Transformations Made Globally
- Preprocessing Directives
- Header Files

- Uses of Header Files
- The #include Directive
- How #include Works
- Once-Only Include Files
- Inheritance and Header Files

- Macros

- Simple Macros
- Macros with Arguments
- Predefined Macros

- Standard Predefined Macros
- Nonstandard Predefined Macros

- Stringification
- Concatenation
- Undefining Macros
- Redefining Macros
- Pitfalls and Subtleties of Macros

- Improperly Nested Constructs
- Unintended Grouping of Arithmetic
- Swallowing the Semicolon
- Duplication of Side Effects
- Self-Referential Macros
- Separate Expansion of Macro Arguments
- Cascaded Use of Macros
- Newlines in Macro Arguments

- Conditionals

- Why Conditionals are Used

- Syntax of Conditionals
- The #if Directive
- The #else Directive
- The #elif Directive

- Keeping Deleted Code for Future Reference
- Conditionals and Macros
- Assertions
- The #error and #warning Directives

- Combining Source Files
- Miscellaneous Preprocessing Directives
- C Preprocessor Output
- Invoking The C Preprocessor
- Index