home *** CD-ROM | disk | FTP | other *** search
- Copyright (C) 1993 MetaWare Incorporated; All Rights Reserved.
-
- High C/C++ Version 3.04
- Globally Optimizing Compiler and Tools
- for Extended DOS 80386/486 and Windows 3.0
- January 1993
-
-
- READMEs included in this distribution
- -------------------------------------
- README -- This general README.
-
- The following files are located in your HIGHC\DOC subdirectory:
-
- README.ADS -- Developing an ADS Application
- README.CPP -- C++ Specifics
- README.EMB -- Embedded Applications Notes
- README.LIB -- Additions to Run-Time Library Documentation
- README.MDB -- MetaWare Debugger (MDB) Specifics
- README.PRF -- MetaWare Profiler Specifics
- README.WIN -- MetaWare 32-Bit Windows 3.0 Application Development Kit
- WEITEK.DOC -- Weitek ABACUS Support
- REMINDER.DOC -- Troubleshooting Tips
-
-
- Table of Contents
- -----------------
- 1. Introduction
- 2. Release Notes
- 3. Additions/Corrections to Printed Documentation
- 4. New Toggles
- 5. Wildcard Expansion
- 6. Rogue Wave tools.h++ Examples and Documentation
- 7. Driver Notes
- 8. GFX Graphics Functions
- 9. Known Problems
-
-
- 1. Introduction
- ----------------
-
- Version 3.0 highlights and features include:
-
- * C compiler and C++ compiler in one executable for gradual migration
- * full implementation of the C++ language (minus exception handling)
- * C++ I/O streams library
- * Rogue Wave's tools.h++ library
- * support for Microsoft Windows 3.0 development using the MetaWare ADK
- (NOTE: compatibility with Microsoft Windows 3.1 is under development)
- * improved compile speed
- * additional global optimizations
- * a switch to specify optimization levels 0 through 7, or level s
- * 32-Bit Source-Level Debugger (MDB and MDBW)
- * a compile-and-link driver
- * function inlining
- * profiler
- * editor
- * disk cache
- * keyboard and screen enhancers.
-
-
- 2. Release Notes
- -----------------
-
- * For installation instructions, read the Installation Guide provided with
- your documentation.
-
- * For differences from and compatibility with prior versions, read the New
- Information! document.
-
- * Last-minute-supplied or unclassified software is in subdirectory ETC.
-
-
- 3. Additions/Corrections to Printed Documentation
- --------------------------------------------------
-
- * See README.LIB for additions to the Run-Time Library documentation.
-
- * See README.EMB for additional information about developing embedded
- applications.
-
- * The High C++ Language Manual does not specify where the SHOWARGS.CPP program
- is located. It is in the \HIGHC\DEMOS\CPP directory.
-
- * The High C Extensions Manual lists keywords _packed and _unpacked. These
- are now _Packed and _Unpacked.
-
- * The file CVARS.C has been renamed _IOB.C and is located in the HIGHC\LIB\SRC
- directory.
-
- NOTE: A copy of the original CVARS.C is located in the \V1x directory. You
- must compile with -Hloclib to use this version.
-
- * Toggle Callee_pops_when_possible.
-
- This toggle works with non-prototyped functions and is completely SAFE. The
- compiler marks those functions that are "safe" with a bit. If the function
- is non-prototyped and is called before it is defined, or called with an
- argument list inconsistent with its definition, then the "safe" bit is
- turned off.
-
- * -Hansi and in-line transcendentals.
-
- If you are using the -Hansi switch and would like to get faster transcenden-
- tals, but are not concerned about errno values, you may turn off the toggle
- Strict_ansi_math:
-
- -Hansi -Hoff=Strict_ansi_math
-
- By default, when -Hansi is specified on the command line, Strict_ansi_math
- is also set by the driver. Strict_ansi_math causes the compiler to
- generate calls to library functions for the transcendentals, instead of
- inlining them. This is necessary for ANSI conformance. Without the calls,
- the compiler will inline many transcendentals; and after the Common Sub-
- expression Elimination phase of optimization, errno may not always be set.
-
- * Memory-model override.
-
- In both Version 3.0 and Version 1.7x of the High C compiler for Extended
- DOS 80386/486, command-line option -Mx overrides any "pragma Memory_model"
- specification in the program. However, Versions 1.7x and 3.0 differ in
- how multiple "pragma Memory_model" specifications are handled. In 1.7x the
- last instance overrides any previous specifications; in 3.0 the first
- instance takes precedence.
-
- * Stack dump.
-
- The stackdump(int handle) routine does not include any routine names. It
- does include the "will return to" address, and eight arguments from the
- stack. It cannot provide any arguments that were passed in registers.
-
- * Inliner.
-
- The meaning of inliner option -His has changed; the compiler can now safely
- inline all functions. -His=n is used instead to flag the inliner not to
- inline functions with stack size greater than n bytes.
-
-
- 4. New Toggles
- ---------------
-
- Toggle C_include -- Default: Off
-
- When On, this toggle causes all #include directives to behave like
- #c_include directives: a file is included only if it hasn't been included
- before. See the description of #c_include in the High C/C++ Programmer's
- Guide, Section "Include Pragmas: Including Source Files." Turning this
- toggle On can potentially save a lot of file I/O time during compilation.
-
-
- 5. Wildcard Expansion
- ----------------------
-
- ETC\SRC\WCARD.C is a program that examines DOS wildcards in the argv[argc]
- array and expands them. If compiled with TEST defined, the program executes
- and shows the arguments before and after expansion. Compiled without TEST,
- it is suitable for inclusion in your program.
-
-
- 6. Rogue Wave tools.h++ Examples and Documentation
- ---------------------------------------------------
-
- To compile and run the Rogue Wave examples:
-
- 1. Go to the HIGHC\RW\TOOLEXAM directory.
-
- 2. To compile example1.cpp type:
-
- hc386 example1.cpp -lRWTOOL
-
- where RWTOOL is the tools library located in the HIGHC\SMALL directory.
-
- 3. To run the example type:
-
- run386 example1
-
- Documentation for tools.h++ is in three ASCII files, located in the DOC
- subdirectory:
-
- TOOLS4_1.DOC -- Class Library Version 4.0, Part I
- TOOLS4_2.DOC -- Class Library Version 4.0, Part II
- TOOLS5.DOC -- Class Library Version 5.0 supplement
-
- Printed, bound versions of these manuals are included if you license the
- source code, either from MetaWare or from Rogue Wave. Word-wrap problems in
- generating the ASCII files caused some tables to be misaligned. Contact Rogue
- Wave if you have questions about the documentation.
-
-
- 7. Driver Notes
- ----------------
-
- When you invoke High C/C++ with the command hc386, you are invoking a driver
- program which in turn invokes the compiler. See the Programmer's Guide for
- further information.
-
-
- 8. GFX Graphics Functions
- -------------------------
-
- Whenever possible you should use the Microsoft-compatible graphics
- functions documented in the High C Library Reference Manual, instead of
- calling GFX functions directly. Future releases of MetaWare compilers may
- not support GFX Graphics.
-
- When you specify option -Hansi (for strict ANSI conformance), GFX Graphics
- functions are not available to you with the original all-uppercase versions
- of the function names unless you explicitly link non-ANSI library HCNA.LIB.
- This is because these non-ANSI function names appear only in HCNA.LIB, which
- is omitted from the link when you specify -Hansi on the driver command
- line.
-
- You can use the functions as documented, with option -Hansi specified, by
- linking HCNA.LIB and specifying #define __HIGHC__ before including GFX.H.
- For example:
-
- #define __HIGHC__
- #include <GFX.H>
- #undef __HIGHC__
-
- Link HCNA.LIB by specifying driver command-line option -lHCNA.LIB.
-
- HCNA.LIB includes all the non-ANSI function names. GFX Graphics functions
- have also been provided in the ANSI library, with their names in lowercase
- and prefixed by _gfx_. For example, SCREEN becomes _gfx_screen. The GFX
- macro names are prefixed with an underscore. For example, DFLT becomes
- _DFLT.
-
- NOTE: The GFX functions are not prototyped in accordance with the ANSI
- Standard, so you may get copious warning messages from the compiler
- indicating that a called function does not conform to its prototype.
- If you do not require strict ANSI conformance, you may ignore such
- warning messages about GFX functions.
-
- NOTE: The GFX Graphics functions work only if linked with a linker that
- produces Phar Lap .EXP type executables.
-
- Many of the GFX Graphics functions have been rewritten for greater speed,
- and numerous bugs have been fixed.
-
-
- 9. Known Problems
- ------------------
-
- * Function _bios_disk() does not support read, write, or verify operations.
-
- * The graphics functions provided work only if linked with a linker that
- produces Phar Lap .EXP type executables.
-
- * You must call _setvideomode() before using any of the graphics functions
- in graph.h, except for _clearscreen() and _getvideoconfig().
-
- * At the hardware level, the signal() and raise() functions support only
- Ctrl-C and the critical-error exceptions. All other signals are supported
- at the software level (via raise()).
-
- WARNING: If a hardware interrupt occurs during a DOS or BIOS operation, it
- may not be possible to execute the signal handler. In this case,
- the results are undefined, and may result in a system crash. See
- the Library Reference Manual for descriptions of signal() and
- raise().
-
- * It is not possible to install the first function in the code segment as
- a signal handler. The address of the first function is cs:0, which when
- passed to signal() (for example, signal(SIGINT, foo)) is interpreted as
- SIG_DFL (#define'd to 0 in signal.h). This causes the program to execute
- an exit(3) instruction (the default action) instead of the intended
- handler. To solve this problem, move the handler away from the beginning
- of the file in which it resides, or precede it with a dummy stub function;
- or change the order in which the object modules are linked.
-
- * DOS Helper program sc.exe does not work with MS-DOS 5.0, because the system
- call sc.exe uses has been nullified in this version of MS-DOS.
-
- * If you use the -P command-line option to generate a preprocessed .i file,
- you cannot compile the file. You can work around the problem by editing
- the following section of file hc386.cnf:
-
- ##########
- # Define source-file suffixes recognized by the driver.
- #
- # Place CPP as the first element of these lists, to say for which
- # languages CPP is supported. Currently, just for C; do not confuse
- # CPP with "C++".
- AEXT=.s .asm %; # Assembly
- CEXT=CPP .c %; # C
- CPPEXT=CPP .cc .cpp %; # C++
-
- You can change the CPPEXT line to add the .i extension as follows:
-
- CPPEXT=CPP .cc .cpp .i %; # C++
-
- or, alternatively, specify -Hcppext=i on the driver command line.
-
-
- Other Problems
- --------------
-
- If you think you have discovered a compiler problem, send a problem report to
- MetaWare Technical Support. If possible, please send a test case that
- demonstrates the problem.
-
- All problem reports must include your serial number and specify which version
- of the compiler you are using. If your sample code exceeds 15 lines, please
- send it by diskette to the address below, or by E-mail to:
-
- tech@metaware.com
-
- MetaWare Technical Support can be reached at (408) 429-6111, 8:00 am to 4:30 pm
- Monday through Friday.
-
-
- MetaWare Incorporated
- 2161 Delaware Avenue
- Santa Cruz, CA 95060-5706
- (408)429-6382 FAX:(408)429-9273
-
- ------------------------------------------------------------------------------
- The installation program used to install MetaWare High C/C++, INSTALL, is
- based on licensed software provided by Knowledge Dynamics Corp, P.O. Box 1558,
- Canyon Lake, Texas 78130-1558 (USA). INSTALL is Copyright (c) 1987-1991 by
- Knowledge Dynamics Corp which reserves all copyright protection worldwide.
- INSTALL is provided to you for the exclusive purpose of installing this
- MetaWare product. MetaWare has made modifications to the software as provided
- by Knowledge Dynamics Corp, and thus the performance and behavior of the
- INSTALL program shipped with this MetaWare product may not represent the
- performance and behavior of INSTALL as shipped by Knowledge Dynamics Corp.
- MetaWare is exclusively responsible for the support of this MetaWare product,
- including support during the installation phase. In no event will Knowledge
- Dynamics Corp. be able to provide any technical support for MetaWare products.
- ------------------------------------------------------------------------------
-