home *** CD-ROM | disk | FTP | other *** search
- Turbo Pascal Common Compiler Directives (standard?)
- B Directive for input/output mode selection
- C Directive for control character interpretation during console I/O
- I Directive for I/O error handling
- R Directive for run-time index checks
- V Directive controls type checking on strings passed as var
- U Directive controls user interrupts
- X Directive controls array optimization
- A Directive controls generation of absolute non-recursive code
- W Directive controls level of nesting of With statements
- K Directive controls generation of stack check code
- :All compiler directives have default values. These have been chosen
- to optimize execution speed and minimuze code size. This means that
- code generation for recursive procedures and index checking has been
- disabled.
- :
- B defaults to B+
-
- It controls i/o mode selection. When active, {$B+}, the CON:
- device is assigned to the standard files Input and Output. When
- passive, {$B-}, the TRm: device is used. This directive is global
- to an entire program block and cannot be redefined throughout
- the program.
- :
- C defaults to C+
-
- It controls control character interpretation during console I/O.
- When active, {$C+}, a Ctl-C entered in response to a Read or Readln
- statement will interrupt program execution, and a Ctrl-S will
- toggle screen output off and on. When passive, etc., control
- characters are not interpreted. the active state slows screen
- output somewhat, so if screen output speed is imperative, you
- should switch off this directive.
- :
- I defaults to I+
-
- This controls I/O error handling. When active all I/O operations
- are checked for errors. When passive, it is the responsibility
- of the programmer to check I/O errors throughout the standard function
- I/O result. The I directive succeeded by a file name instructs
- the compiler to include the file with the specified name in the
- compilation. Include files are discussed in (chapter 17).
- :
- R defaults to R-
-
- It controls run-time index checks. When active all array indexing
- operations are checked to be within the defined bounds, and all
- assignments to scalar and subrange variables are checked to be
- within range. When passive, no checks are performed, and index
- errors may well cause a program to go haywire. It is a good idea
- to activate this directive while developing a program. Once debugged,
- execution will be speeded up by setting it passive.
- :
- V defaults to V+
-
- This directive controls type checking on strings passed as var-parameters.
- When active strict type checking is performed, i.e., the lengths of
- actual and formal parameters must match. When passive the compiler
- allows passing of actual parameters which do not match the length
- of the formal parameter.
- :
- U defaults to U-
-
- It controls user interrupts. When active the user may interrupt
- the program anytime during execution by entering a Ctrl-C. When
- passive this has no effect. Activating this directive will significantly
- slow down execution speed.
- :
- X defaults to X+
-
- This directive controls array optimization. When active code
- generation for arrays is optimized for maximum speed. When passive
- the compiler minimizes the code size instead.
- :
- CP/M-80 Compiler Directives (as opposed to CP/M-86 or MSDOS)
-
- A defaults to A+
-
- This controls generation of absolute, non-recursive code. When
- active, absolute code is generated. When passive the compiler
- generates code which allows recursive calls. This code requires
- more memory and executes slower.
- :
- W defaults to W2
-
- This controls the level of nesting of With statements, i.e., the
- number of records which may be "opened" within one block. The
- W must be immediately followed by a digit between 1 and 9.
- :
- CP/M-86 / MS-DOS directives
-
- K defaults to K+
-
- It controls the generation of stack check code. When active,
- a check is made to insure that space is available for local variables
- on the stack before each call to a subprogram. When passive no
- checks are made.
- :
- Other Turbo vs. Standard (Jensen & Wirth) PASCAL
-
- Extensions offered by TURBO Pascal are not discussed.
-
- Dynamic variables and pointers use the standard procedures, New,
- Mark, and Release instead of the New and Dispose procedures.
- Primarily this deviation from the standard is far more efficient
- in terms of execution speed and required support code, and secondly
- it offers compatibility with other popular Pascal compilers (UCSD).
-
- The procedure New will not accept variant record specifications.
- This restriction, however, is easily circumvented by using the
- standard procedure GetMem.
-