home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 1.ddi / README < prev   
Encoding:
Text File  |  1993-01-15  |  12.9 KB  |  332 lines

  1.        Copyright (C) 1993 MetaWare Incorporated; All Rights Reserved.
  2.  
  3.                          High C/C++ Version 3.04
  4.                   Globally Optimizing Compiler and Tools
  5.                 for Extended DOS 80386/486 and Windows 3.0
  6.                                January 1993
  7.  
  8.  
  9. READMEs included in this distribution
  10. -------------------------------------
  11.    README       -- This general README.
  12.  
  13.    The following files are located in your HIGHC\DOC subdirectory:
  14.  
  15.    README.ADS   -- Developing an ADS Application
  16.    README.CPP   -- C++ Specifics
  17.    README.EMB   -- Embedded Applications Notes
  18.    README.LIB   -- Additions to Run-Time Library Documentation
  19.    README.MDB   -- MetaWare Debugger (MDB) Specifics
  20.    README.PRF   -- MetaWare Profiler Specifics
  21.    README.WIN   -- MetaWare 32-Bit Windows 3.0 Application Development Kit
  22.    WEITEK.DOC   -- Weitek ABACUS Support
  23.    REMINDER.DOC -- Troubleshooting Tips
  24.  
  25.  
  26. Table of Contents
  27. -----------------
  28.  1.  Introduction
  29.  2.  Release Notes
  30.  3.  Additions/Corrections to Printed Documentation
  31.  4.  New Toggles
  32.  5.  Wildcard Expansion
  33.  6.  Rogue Wave tools.h++ Examples and Documentation
  34.  7.  Driver Notes
  35.  8.  GFX Graphics Functions
  36.  9.  Known Problems
  37.  
  38.  
  39. 1.  Introduction
  40. ----------------
  41.  
  42. Version 3.0 highlights and features include:
  43.  
  44. * C compiler and C++ compiler in one executable for gradual migration
  45. * full implementation of the C++ language (minus exception handling)
  46. * C++ I/O streams library
  47. * Rogue Wave's tools.h++ library
  48. * support for Microsoft Windows 3.0 development using the MetaWare ADK
  49.     (NOTE: compatibility with Microsoft Windows 3.1 is under development)
  50. * improved compile speed
  51. * additional global optimizations
  52. * a switch to specify optimization levels 0 through 7, or level s
  53. * 32-Bit Source-Level Debugger (MDB and MDBW)
  54. * a compile-and-link driver
  55. * function inlining
  56. * profiler
  57. * editor
  58. * disk cache
  59. * keyboard and screen enhancers.
  60.  
  61.  
  62. 2.  Release Notes
  63. -----------------
  64.  
  65. * For installation instructions, read the Installation Guide provided with
  66.   your documentation.
  67.  
  68. * For differences from and compatibility with prior versions, read the New
  69.   Information! document.
  70.  
  71. * Last-minute-supplied or unclassified software is in subdirectory ETC.
  72.  
  73.  
  74. 3.  Additions/Corrections to Printed Documentation
  75. --------------------------------------------------
  76.  
  77. * See README.LIB for additions to the Run-Time Library documentation.
  78.  
  79. * See README.EMB for additional information about developing embedded
  80.   applications.
  81.  
  82. * The High C++ Language Manual does not specify where the SHOWARGS.CPP program
  83.   is located.  It is in the \HIGHC\DEMOS\CPP directory.
  84.  
  85. * The High C Extensions Manual lists keywords _packed and _unpacked.  These
  86.   are now _Packed and _Unpacked.
  87.  
  88. * The file CVARS.C has been renamed _IOB.C and is located in the HIGHC\LIB\SRC
  89.   directory.
  90.  
  91.   NOTE: A copy of the original CVARS.C is located in the \V1x directory.  You
  92.         must compile with -Hloclib to use this version.
  93.  
  94. * Toggle Callee_pops_when_possible.
  95.  
  96.   This toggle works with non-prototyped functions and is completely SAFE.  The
  97.   compiler marks those functions that are "safe" with a bit.  If the function
  98.   is non-prototyped and is called before it is defined, or called with an
  99.   argument list inconsistent with its definition, then the "safe" bit is
  100.   turned off.
  101.  
  102. * -Hansi and in-line transcendentals.
  103.  
  104.   If you are using the -Hansi switch and would like to get faster transcenden-
  105.   tals, but are not concerned about errno values, you may turn off the toggle
  106.   Strict_ansi_math:
  107.  
  108.       -Hansi -Hoff=Strict_ansi_math
  109.  
  110.    By default, when -Hansi is specified on the command line, Strict_ansi_math
  111.    is also set by the driver.  Strict_ansi_math causes the compiler to
  112.    generate calls to library functions for the transcendentals, instead of
  113.    inlining them.  This is necessary for ANSI conformance.  Without the calls,
  114.    the compiler will inline many transcendentals; and after the Common Sub-
  115.    expression Elimination phase of optimization, errno may not always be set.
  116.  
  117. * Memory-model override.
  118.  
  119.    In both Version 3.0 and Version 1.7x of the High C compiler for Extended
  120.    DOS 80386/486, command-line option -Mx overrides any "pragma Memory_model"
  121.    specification in the program.  However, Versions 1.7x and 3.0 differ in
  122.    how multiple "pragma Memory_model" specifications are handled.  In 1.7x the
  123.    last instance overrides any previous specifications; in 3.0 the first
  124.    instance takes precedence.
  125.  
  126. * Stack dump.
  127.  
  128.    The stackdump(int handle) routine does not include any routine names.  It
  129.    does include the "will return to" address, and eight arguments from the
  130.    stack.  It cannot provide any arguments that were passed in registers.
  131.  
  132. * Inliner.
  133.  
  134.    The meaning of inliner option -His has changed; the compiler can now safely
  135.    inline all functions.  -His=n is used instead to flag the inliner not to
  136.    inline functions with stack size greater than n bytes.
  137.  
  138.  
  139. 4.  New Toggles
  140. ---------------
  141.  
  142. Toggle C_include -- Default: Off
  143.  
  144.   When On, this toggle causes all #include directives to behave like
  145.   #c_include directives: a file is included only if it hasn't been included
  146.   before.  See the description of #c_include in the High C/C++ Programmer's
  147.   Guide, Section "Include Pragmas: Including Source Files."  Turning this
  148.   toggle On can potentially save a lot of file I/O time during compilation.
  149.  
  150.  
  151. 5.  Wildcard Expansion
  152. ----------------------
  153.  
  154.   ETC\SRC\WCARD.C is a program that examines DOS wildcards in the argv[argc]
  155.   array and expands them.  If compiled with TEST defined, the program executes
  156.   and shows the arguments before and after expansion.  Compiled without TEST,
  157.   it is suitable for inclusion in your program.
  158.  
  159.  
  160. 6.  Rogue Wave tools.h++ Examples and Documentation
  161. ---------------------------------------------------
  162.  
  163. To compile and run the Rogue Wave examples:
  164.  
  165.    1. Go to the HIGHC\RW\TOOLEXAM directory.
  166.  
  167.    2. To compile example1.cpp type:
  168.  
  169.          hc386 example1.cpp -lRWTOOL
  170.  
  171.       where RWTOOL is the tools library located in the HIGHC\SMALL directory.
  172.  
  173.    3. To run the example type:
  174.  
  175.          run386 example1
  176.  
  177. Documentation for tools.h++ is in three ASCII files, located in the DOC
  178. subdirectory:
  179.  
  180.    TOOLS4_1.DOC  --  Class Library Version 4.0, Part I
  181.    TOOLS4_2.DOC  --  Class Library Version 4.0, Part II
  182.    TOOLS5.DOC    --  Class Library Version 5.0 supplement
  183.  
  184. Printed, bound versions of these manuals are included if you license the
  185. source code, either from MetaWare or from Rogue Wave.  Word-wrap problems in
  186. generating the ASCII files caused some tables to be misaligned.  Contact Rogue
  187. Wave if you have questions about the documentation.
  188.  
  189.  
  190. 7.  Driver Notes
  191. ----------------
  192.  
  193.   When you invoke High C/C++ with the command hc386, you are invoking a driver
  194.   program which in turn invokes the compiler.  See the Programmer's Guide for
  195.   further information.
  196.  
  197.  
  198. 8. GFX Graphics Functions
  199. -------------------------
  200.  
  201.    Whenever possible you should use the Microsoft-compatible graphics
  202.    functions documented in the High C Library Reference Manual, instead of
  203.    calling GFX functions directly.  Future releases of MetaWare compilers may
  204.    not support GFX Graphics.
  205.  
  206.    When you specify option -Hansi (for strict ANSI conformance), GFX Graphics
  207.    functions are not available to you with the original all-uppercase versions
  208.    of the function names unless you explicitly link non-ANSI library HCNA.LIB.
  209.    This is because these non-ANSI function names appear only in HCNA.LIB, which
  210.    is omitted from the link when you specify -Hansi on the driver command
  211.    line.
  212.  
  213.    You can use the functions as documented, with option -Hansi specified, by
  214.    linking HCNA.LIB and specifying #define __HIGHC__ before including GFX.H.
  215.    For example:
  216.  
  217.       #define __HIGHC__
  218.       #include <GFX.H>
  219.       #undef  __HIGHC__
  220.  
  221.    Link HCNA.LIB by specifying driver command-line option -lHCNA.LIB.
  222.  
  223.    HCNA.LIB includes all the non-ANSI function names.  GFX Graphics functions
  224.    have also been provided in the ANSI library, with their names in lowercase
  225.    and prefixed by _gfx_.  For example, SCREEN becomes _gfx_screen.  The GFX
  226.    macro names are prefixed with an underscore.  For example, DFLT becomes
  227.    _DFLT.
  228.  
  229.    NOTE:  The GFX functions are not prototyped in accordance with the ANSI
  230.           Standard, so you may get copious warning messages from the compiler
  231.           indicating that a called function does not conform to its prototype.
  232.           If you do not require strict ANSI conformance, you may ignore such
  233.           warning messages about GFX functions.
  234.  
  235.    NOTE:  The GFX Graphics functions work only if linked with a linker that
  236.           produces Phar Lap .EXP type executables.
  237.  
  238.    Many of the GFX Graphics functions have been rewritten for greater speed,
  239.    and numerous bugs have been fixed.
  240.  
  241.  
  242. 9.  Known Problems
  243. ------------------
  244.  
  245. *  Function _bios_disk() does not support read, write, or verify operations.
  246.  
  247. *  The graphics functions provided work only if linked with a linker that
  248.    produces Phar Lap .EXP type executables.
  249.  
  250. *  You must call _setvideomode() before using any of the graphics functions
  251.    in graph.h, except for _clearscreen() and _getvideoconfig().
  252.  
  253. *  At the hardware level, the signal() and raise() functions support only
  254.    Ctrl-C and the critical-error exceptions.  All other signals are supported
  255.    at the software level (via raise()).
  256.  
  257.    WARNING:  If a hardware interrupt occurs during a DOS or BIOS operation, it
  258.              may not be possible to execute the signal handler.  In this case,
  259.              the results are undefined, and may result in a system crash.  See
  260.              the Library Reference Manual for descriptions of signal() and
  261.              raise().
  262.  
  263. *  It is not possible to install the first function in the code segment as
  264.    a signal handler.  The address of the first function is cs:0, which when
  265.    passed to signal() (for example, signal(SIGINT, foo)) is interpreted as
  266.    SIG_DFL (#define'd to 0 in signal.h).  This causes the program to execute
  267.    an exit(3) instruction (the default action) instead of the intended
  268.    handler.  To solve this problem, move the handler away from the beginning
  269.    of the file in which it resides, or precede it with a dummy stub function;
  270.    or change the order in which the object modules are linked.
  271.  
  272. *  DOS Helper program sc.exe does not work with MS-DOS 5.0, because the system
  273.    call sc.exe uses has been nullified in this version of MS-DOS.
  274.  
  275. *  If you use the -P command-line option to generate a preprocessed .i file,
  276.    you cannot compile the file.  You can work around the problem by editing
  277.    the following section of file hc386.cnf:
  278.  
  279.      ##########
  280.      # Define source-file suffixes recognized by the driver.
  281.      #
  282.      # Place CPP as the first element of these lists, to say for which
  283.      # languages CPP is supported.  Currently, just for C; do not confuse
  284.      # CPP with "C++".
  285.      AEXT=.s .asm               %; # Assembly
  286.      CEXT=CPP .c %; # C
  287.      CPPEXT=CPP .cc .cpp %; # C++
  288.  
  289.    You can change the CPPEXT line to add the .i extension as follows:
  290.  
  291.      CPPEXT=CPP .cc .cpp .i %; # C++
  292.  
  293.    or, alternatively, specify -Hcppext=i on the driver command line.
  294.  
  295.  
  296. Other Problems
  297. --------------
  298.  
  299. If you think you have discovered a compiler problem, send a problem report to
  300. MetaWare Technical Support.  If possible, please send a test case that
  301. demonstrates the problem.
  302.  
  303. All problem reports must include your serial number and specify which version
  304. of the compiler you are using.  If your sample code exceeds 15 lines, please
  305. send it by diskette to the address below, or by E-mail to:
  306.  
  307.    tech@metaware.com
  308.  
  309. MetaWare Technical Support can be reached at (408) 429-6111, 8:00 am to 4:30 pm
  310. Monday through Friday.
  311.  
  312.  
  313. MetaWare Incorporated
  314. 2161 Delaware Avenue
  315. Santa Cruz, CA 95060-5706
  316. (408)429-6382  FAX:(408)429-9273
  317.  
  318. ------------------------------------------------------------------------------
  319. The installation program used to install MetaWare High C/C++, INSTALL, is
  320. based on licensed software provided by Knowledge Dynamics Corp, P.O. Box 1558,
  321. Canyon Lake, Texas 78130-1558 (USA).  INSTALL is Copyright (c) 1987-1991 by
  322. Knowledge Dynamics Corp which reserves all copyright protection worldwide.
  323. INSTALL is provided to you for the exclusive purpose of installing this
  324. MetaWare product. MetaWare has made modifications to the software as provided
  325. by Knowledge Dynamics Corp, and thus the performance and behavior of the
  326. INSTALL program shipped with this MetaWare product may not represent the
  327. performance and behavior of INSTALL as shipped by Knowledge Dynamics Corp.
  328. MetaWare is exclusively responsible for the support of this MetaWare product,
  329. including support during the installation phase.  In no event will Knowledge
  330. Dynamics Corp. be able to provide any technical support for MetaWare products.
  331. ------------------------------------------------------------------------------
  332.