C Language and Libraries Help (clang.hlp) (Table of Contents; Topic list)
#define
                                             Up Contents Index Back
─────C/C++ Language─────────────────────────────────────────────────────────
 
  Directive:  #define
 
  Syntax:     #define identifier substitution-text
              #define identifier([parameter-list]) substitution-text
 
  Summary:    Replaces all subsequent cases of <identifier> with
              the <substitution-text>.
 
  See also:   defined, #if, #ifdef, #ifndef, #undef, const, inline
 
     The <substitution-text> can consist of one or more constants,
     keywords, or statements. When the identifier is replaced by a
     constant expression, it is a manifest constant. When the
     identifier is replaced by an expression containing parameters, it
     is a macro.
 
     If <substitution-text> is more than one line, it can be continued
     onto successive lines by placing a backslash (\) before the end
     of each line. Enclosing <substitution-text> in parentheses ensures
     proper evaluation if the text is an expression or has a leading
     minus sign. The <substitution-text> can also be empty; this
     removes occurrences of the identifier from the file.
 
     In the following example, a simple manifest constant is created
     by assigning a numeric value to the symbol PI:
 
         #define  PI  3.14159265
 
     If a <parameter-list> appears after the identifier, each
     occurrence of <identifier>(<actual-parameter-list>) is replaced by
     a version of the <substitution-text> that has actual arguments
     substituted for the parameters. There must be an equal number
     of actual arguments and parameters.
 
     The optional <parameter-list> consists of one or more parameter
     names, separated by commas and enclosed by parentheses. No space
     can separate the identifier and the opening parenthesis. The
     parameter names appear in the <substitution-text> to mark the
     places where actual values will be substituted.
 
     In the following example, the macro SQUARE is defined to multiply
     its argument by itself:
 
         #define  SQUARE( arg ) ((arg) * (arg))
 
     In C++, the const keyword and inline functions replace most uses
     of the #define directive.
 
     See: Stringizing Operator
          Charizing Operator
          Token-Pasting Operator
                                    -♦-