qp.hlp (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Description of Directives
  Compiler Directives Contents Index                Help on Help
 
  Description
 
    Compiler directives are specialized comments that control the
    process of compiling source code. They begin with a dollar
    sign and a letter. For example, the range-checking directive
    looks like
 
       {$R+}
 
    A directive is not recognized if there are spaces or any other
    characters between the '{' and the '$'. For example, QuickPascal
    treats the following directive as a simple comment──range checking
    is not affected:
 
       { $R+}
 
    There are three categories of compiler directives:
 
      Category       Action
      ═══════════    ═══════════════════════════════════
      Switch         Turn a feature on or off
      Parameter      Control memory or use certain files
      Conditional    Compile a section of code
 
  Switch Directives
 
    A switch directive has a '+' or '-' after the directive letter.
 
      Switch    Scope    Default     Description
      ══════    ═════    ═══════     ════════════════════════════
      $A+│-     local       +        Align data
 
      $B+│-     local       -        Boolean, complete evaluation
 
      $D+│-     global      +        Debug information
 
      $F+│-     local       -        FAR calls
 
      $I+│-     local       +        I/O checking
 
      $L+│-     local       +        Local debug information
 
      $M+│-     local       +        Method call checking
 
      $N+│-     global      -        Numeric processing
 
      $R+│-     local       -        Range checking
 
      $S+│-     global      +        Stack checking
 
      $V+│-     local       +        VAR-string type checking
 
    Global control directives influence an entire program file. They
    must appear before the declaration portion of that file; that is,
    before the keywords USES, LABEL, CONST, TYPE, FUNCTION, PROCEDURE,
    or BEGIN.
 
    Local control directives influence the action of a localized
    section of code. They bracket the section of code that they
    control.
 
  Parameter-Accepting Directives
 
    Directive                    Description
    ═════════════════════════    ═════════════════════════
    $I <filename>                Includes a source file
    $L <filename>                Links an OBJ file
    $M <stack,minheap,maxheap>   Memory allocation control
 
  Conditional-Compilation Directives
 
    Directive                       Description
    ═══════════════                 ═════════════════════════════════
    $DEFINE <symbol>                Defines a symbol
    $UNDEF  <symbol>                Undefines a symbol
    $IFDEF  <symbol>                Tests if a symbol is defined
    $IFNDEF <symbol>                Tests if a symbol is undefined
    $IFOPT  <switch>                Tests if a switch is on or off
    $ELSE                           Marks the start of an alternate
                                    section
    $ENDIF                          Marks the end of a conditional
                                    section
 
    The action of conditional-compilation directives is similar to
    Pascal's IF statement. However, defined symbols are not available
    to a Pascal program. For example, the following code produces a
    compiler error:
 
       {$DEFINE debug}
              .
              .
       IF debug THEN
              .
              .