/*
 * $Id: pragma.txt,v 1.4 2000/02/17 11:11:52 lculik Exp $
 */

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:

  * 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<+/->

  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.

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