/*
 * $Id: pragma.txt,v 1.3 2004/03/07 14:42:22 likewolf Exp $
 */


/*  $DOC$
 *  $FUNCNAME$
 *      The Xharbour pragma
 *  $CATEGORY$
 *      Xharbour Enhancements
 *  $ONELINER$ 
 *      Xharbour Pragma support
 *  $DESCRIPTION$
 *      INTRODUCTION
 *      ============
 *      This file explains what is and how to use the #pragma directive
 *      with Harbour. Primarily, it gives you control over the compiler's
 *      command-line switches within your source code.
 *      
 *      
 *      WHAT IS
 *      =======
 *      The #pragma is a directive used inside the source code in many compilers
 *      to change the behavior of the compiler at compile time.
 *      
 *      
 *      USAGE
 *      =====
 *      Currently the #pragma directive can be used in two ways: the switch mode
 *      and the command mode.
 *      
 *      The syntax is:  #pragma <Expression>[=On/Off] or
 *                      #pragma -CompilerFlag[+|-]
 *      
 *      You can use both modes mixed in the same module and upper/lower case
 *      without worry.
 *      
 *      To enable or disable a command or a switch you simply do:
 *      
 *        * Command mode                      Switch mode
 *        --------------------------------------------------------------
 *        * #pragma <CommandName>=On/Off      #pragma /<SwitchName>+/-
 *      
 *         Example: #pragma AddDebugInfo=Off  /* Suppress debug info */
 *                  #pragma /B+               /* Add debug info from here */
 *      
 *      
 *      IMPLEMENTATION
 *      ==============
 *      
 *      This is the list of the supported commands and switches:
 *
 *      <table>   
 *         Command                           Switch
 *        
 *         AUTOMEMVARS         =<On/Off>     /A<+/->
 *         DEBUGINFO           =<On/Off>     /B<+/->
 *         ENABLEWARNINGS      =<On/Off>     /W<+/->
 *         EXITSEVERITY        =<nLevel>     /E<nLevel>
 *         FORCEMEMVARS        =<On/Off>     /V<+/->
 *         LINEINFO            =<On/Off>     /L<+/->
 *         NOSTARTPROC         =<On/Off>     /N<+/->
 *         PREPROCESSING       =<On/Off>     /P<+/->
 *         WARNINGLEVEL        =<nLevel>     /W<nLevel>
 *         SHORTCUTTING        =<On/Off>     /Z<+/->
 *      </table>
 *
 *      The switches have the same behavior as the corresponding compiler ones
 *      and the commands are synonyms for the switches.
 *
 *      TRACEPRAGMAS
 *      This command shows pragma activity at compile time when enabled.
 *
 *      NOTE: You can use the abbreviated command mode by typing only the
 *      first eight chars.
 *
 *
 *      NOTES
 *      =====
 *      This directive is not supported in the standalone version of the Harbour
 *      preprocessor.
 *      
 *      
 *  $EXAMPLES$
 *      #pragma NoStartProc=Off
 *      /* #pragma /N- */
 *      
 *      function Test()
 *      return nil
 *      
 *      This is the same as calling Harbour with the -n switch in the command line,
 *      but with the great benefit that if you forgot to pass the switch, it will
 *      be used anyway because it is included inside the source.
 *      
 *  $END$
 */


===========
Dec 1, 1999
Regards,
Jose Lalin <dezac@corevia.com>
