home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 319_01 / read.me < prev    next >
Text File  |  1990-06-18  |  5KB  |  153 lines

  1. FILE NAME: read.me
  2. CPP Version 5.3 for the IBM PC
  3. February 1, 1990
  4.  
  5.  
  6. REWARD
  7.  
  8. A reward of $5.12 is cheerfully paid to the first person who finds any bug in
  9. this code.  Typo's in the code or in the documentation are worth $1.28.
  10.  
  11.  
  12. AUTHOR
  13.  
  14. All programs on this disk were written by:
  15.  
  16.     Edward K. Ream
  17.     1617 Monroe Street
  18.     Madison, WI 53711
  19.     (608) 257-0802
  20.  
  21.  
  22. PUBLIC DOMAIN SOFTWARE
  23.  
  24. The sole author and owner of CPP, Edward K. Ream, hereby places CPP and
  25. all other files on this disk in the public domain.
  26.  
  27.  
  28. DISCLAIMER
  29.  
  30. With respect to the programs and documentation contained on this disk,
  31. Edward K. Ream specifically disclaims all warranties, express or implied,
  32. including but not limited to implied warranties of merchantability and fitness
  33. for a particular purpose.  In no event shall Ream be liable for any loss of
  34. profit or commercial damage, including but not limited to special, incidental,
  35. consequential or other damages.
  36.  
  37.  
  38. FILES ON DISK 1
  39.  
  40. read.me        This file.
  41. cpp.doc        Documentation for CPP.
  42.  
  43. cpp*.h        Header files for CPP.
  44. cpp*.c        Source code files for CPP.
  45. cpp.exe        Executable version of CPP.
  46.  
  47. cpp.mak        Turboc C make file for cpp.exe.
  48. cpp.lnk        Turboc C link file for cpp.exe.
  49. mcpp.mmk    Microsoft C make files for cpp.exe.
  50. cpp.ml        Microsoft C link files for cpp.exe.
  51.  
  52.  
  53. FILES ON DISK 2
  54.  
  55. read.me2    Brief summary of Sherlock system.
  56. sherlock.doc    Documentation for the Sherlock (TM) debugging system.
  57. dummysl.h    Dummy macro definitions for all Sherlock macros.
  58. cppdb.exe    Executable version of CPP, with    Sherlock macros added.
  59.         See the source code listing for the names of tracepoints.
  60.         Add ++dump to the command line for a listing of statistics.
  61.         All sherlock output goes to standard out.
  62. cppdbx.exe    Same as cppdb.exe except that timing statistics are disabled.
  63.  
  64. cppdb.mak    Turboc C make file for cppdb.exe.
  65. cppdb.lnk    Turboc C link file for cppdb.exe.
  66. mcppdb.mmk    Microsoft C make file for cppdb.exe.
  67. cppdb.ml    Microsoft C link file for cppdb.exe.
  68.  
  69. macro.tst    Hairy tests of macro expansion from the draft standard.
  70.  
  71. Note:    Turbo C make and line files are for version 2.0 or later.
  72.     Microsoft C make and link files are for version 5.0x or later.
  73.  
  74.  
  75. KNOWN PROBLEMS
  76.  
  77. 1.  The draft ANSI C standard specifies that macros which take arguments are to be 
  78. considered "identical" only if the spellings of all formal parameters are 
  79. identical and the respective replacement texts are identical.  For example, the
  80. the following two #defines are NOT supposed to be considered identical and a 
  81. warning is supposed to be given,
  82.  
  83. #define max(a,b)     (( (a) > (b) ) ? (a) : (b))
  84. #define max(A,B)     (( (A) > (B) ) ? (A) : (B))
  85.  
  86. SPP considers two macros to be identical if their replacement text are 
  87. identical.  SPP does not check the actual spellings of formal parameters to
  88. macros.  This additional checking is left as an exercise to the reader.
  89.  
  90. SPP does check the placement of parameters within the replacement text, so that
  91. a warning about a non-identical redefinition is issued in the following
  92. example,
  93.  
  94. #define max(a,b)     (( (a) > (b) ) ? (a) : (b))
  95. #define max(a,b)     (( (b) > (a) ) ? (a) : (b)) /* oops */
  96.  
  97. 2.  Version 5.3 supports single-line comments, which start with // and continue
  98. to the end of the line.  Naturally, the // character sequence does not start a 
  99. single-line comment if it occurs inside a normal comment or a string.
  100.  
  101. Single line comments are treated EXACTLY like regular C comments.  In 
  102. particular, this means that single line comments are replaced by a single blank
  103. in the replacement text of macros.
  104.  
  105. You C++ language experts will recognize that current C++ compilers handle 
  106. single-line comments as explained above, and that anachronistic C++ translators
  107. included // (and any text following //) in the replacement text of macros.
  108.  
  109.  
  110. COMPILER WARNINGS YOU MAY SAFELY IGNORE
  111.  
  112. def.c: When using the Turbo C compiler and when Sherlock macros are disabled
  113. there are two warnings about variables not being used.  These warnings go away
  114. if Sherlock macros are defined.
  115.  
  116. utl.c: When using the Turbo C compiler there are five warnings about
  117. "Possibly incorrect assignments."
  118.  
  119.  
  120. BUGS FIXED IN VERSION 5.1
  121.  
  122. o  White space was not allowed in the list of formal arguments to a macro.  The 
  123. fix was mad to pp_def() in DEF.C.
  124.  
  125. o  Token pasting did not work properly because white space was inserted between 
  126. tokens.  The fix was made to pp_def().
  127.  
  128. o  Stringizing did not affect character constants, only strings.  The fix was 
  129. made to substitute() in DEF.C.
  130.  
  131.  
  132. BUGS FIXED IN VERSION 5.2
  133.  
  134. o  Comments were not allowed everywhere in preprocessor directives.
  135. The fix was to do_pp() in DIR.C.
  136.  
  137. o  CPP looped when skipping some kinds of comments.  The fixes were in 
  138. skip_pp() and copy_pp() in UTL.C.
  139.  
  140. o  Backslash-newline combinations were not properly deleted by sysnext().
  141. CPP now follows the Draft ANSI Standard, which means that you can put the 
  142. backslash-newline combination absolutely ANYWHERE, inside identifiers, 
  143. keywords, multi-character operators, etc.
  144.  
  145.  
  146. BUGS FIXED IN VERSION 5.3
  147.  
  148. o  An extra carriage return was inserted at the end of each line.
  149.  
  150. o  Very long or deeply nested macro expansions caused CPP to crash due to stack
  151. overflow.  It is still possible to crash the stack, but it's much less likely.
  152. Fixes were made to substitute(), expand() and rescan() in DEF.C.
  153.