home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / books / qcupdate.db < prev    next >
Encoding:
Text File  |  1991-03-01  |  200.0 KB  |  4,075 lines

  1. %@1@%%@AB@%Microsoft  QuickC  Compiler - UPDATE%@AE@%%@EH@%%@NL@%
  2.                                       %@NL@%
  3.                                       %@NL@%
  4.                                       %@NL@%
  5.                                       %@NL@%
  6.                                       %@NL@%
  7.                                       %@NL@%
  8.                                       %@NL@%
  9.  
  10. ────────────────────────────────────────────────────────────────────────────%@NL@%
  11.                  %@AB@%Microsoft (R) QuickC (R) Compiler - UPDATE%@AE@%%@NL@%
  12.                                       %@NL@%
  13.                                 %@AB@%VERSION 2.5%@AE@%%@NL@%
  14. ────────────────────────────────────────────────────────────────────────────%@NL@%
  15.                                       %@NL@%
  16.                                       %@NL@%
  17.                            MICROSOFT CORPORATION %@NL@%
  18.                                       %@NL@%
  19.                                       %@NL@%
  20. %@NL@%
  21. %@NL@%
  22. %@NL@%%@NL@%
  23. %@NL@%
  24.  
  25.  
  26. Information in this document is subject to change without notice and does
  27. not represent a commitment on the part of Microsoft Corporation. The
  28. software described in this document is furnished under a license agreement
  29. or nondisclosure agreement. The software may be used or copied only in
  30. accordance with the terms of the agreement. It is against the law to copy
  31. the software on any medium except as specifically allowed in the license or
  32. nondisclosure agreement. No part of this manual may be reproduced or trans-
  33. mitted in any form or by any means, electronic or mechanical, including
  34. photocopying and recording, for any purpose without the express written
  35. permission of Microsoft.  
  36. (C) Copyright Microsoft Corporation, 1990. All rights reserved.%@NL@%
  37. %@NL@%
  38.  
  39. Printed and bound in the United States of America.%@NL@%
  40. %@NL@%
  41.  
  42. Microsoft, MS, MS-DOS, QuickC, and CodeView are registered 
  43. trademarks of 
  44. Microsoft Corporation.%@NL@%
  45. %@NL@%
  46. %@NL@%
  47. %@NL@%
  48. Document No. SY10426-0290
  49.  
  50. %@AI@%                         %@AE@%OEM D703-2Z
  51. %@AI@%%@AE@%
  52. 10
  53.  9
  54.  8
  55.  7
  56.  6
  57.  5
  58.  4
  59.  3
  60.  2
  61.  1 
  62. %@AI@%%@AE@%%@NL@%
  63. %@NL@%
  64.  
  65. %@NL@%
  66. %@NL@%
  67. %@NL@%
  68. %@NL@%
  69. %@NL@%
  70. %@1@%%@AB@%Table of Contents%@AE@%%@EH@%%@NL@%
  71. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%%@NL@%
  72. %@NL@%
  73.  
  74. %@NL@%
  75. %@AB@%Introduction%@AE@%%@BO:        1e38@%%@NL@%
  76.      Enhancements for QuickC 2.5%@BO:        21e8@%%@NL@%
  77.      About This Book%@BO:        264e@%%@NL@%
  78.      Key to Document Conventions%@BO:        2943@%%@NL@%
  79. %@NL@%
  80. %@AB@%Chapter 1%@AE@%%@BO:        34c5@%  %@AB@%User Interface Changes%@AE@%%@NL@%
  81. %@NL@%
  82.      1.1%@BO:        3727@%   File Menu Changes%@NL@%
  83.      1.2%@BO:        3b68@%   View Menu Changes%@NL@%
  84.      1.3%@BO:        3ff1@%   Search Menu Changes%@NL@%
  85.      1.4%@BO:        4540@%   Make Menu Changes%@NL@%
  86.      1.5%@BO:        4f53@%   Debug Menu: New Quickwatch Command%@NL@%
  87.      1.6%@BO:        5a11@%   Options Menu Changes%@NL@%
  88.             1.6.1%@BO:        5f29@%    Compiler Flags Dialog-Box Changes%@NL@%
  89.             1.6.2%@BO:        641e@%    Linker Flags Dialog-Box Changes%@NL@%
  90.             1.6.3%@BO:        6767@%    Display Dialog-Box Changes%@NL@%
  91.             1.6.4%@BO:        6c6b@%    New Color Command%@NL@%
  92.      1.7%@BO:        7461@%   Help Menu Changes%@NL@%
  93. %@NL@%
  94. %@AB@%Chapter 2%@AE@%%@BO:        7737@%  %@AB@%Language Differences%@AE@%%@NL@%
  95. %@NL@%
  96.      2.1%@BO:        7b90@%   ANSI Compatibility%@NL@%
  97.             2.1.1%@BO:        7cd1@%    ANSI-Mandated New Features%@NL@%
  98.             2.1.2%@BO:        832a@%    Integer Promotion Rules%@NL@%
  99.             2.1.3%@BO:        8780@%    Defining NULL as a Pointer%@NL@%
  100.             2.1.4%@BO:        88f0@%    Shift Operators%@NL@%
  101.             2.1.5%@BO:        8c89@%    Pointers to Type Definitions%@NL@%
  102.             2.1.6%@BO:        91a0@%    Identifying Nonstandard Keywords%@NL@%
  103.             2.1.7%@BO:        95f8@%    Trigraphs%@NL@%
  104.             2.1.8%@BO:        9950@%    ANSI Nonconformance%@NL@%
  105.      2.2%@BO:        9c1c@%   New Language Keywords%@NL@%
  106.             2.2.1%@BO:        9d45@%    In-Line Assembler%@NL@%
  107.             2.2.2%@BO:        9ea9@%    Based Pointers and Objects%@NL@%
  108.             2.2.3%@BO:        a125@%    Long Double Types%@NL@%
  109.             2.2.4%@BO:        a4fd@%    The _fastcall Function Attribute (/Gr Option)%@NL@%
  110.      2.3%@BO:        b1d0@%   New Language Features%@NL@%
  111.             2.3.1%@BO:        b2ca@%    Strings and Macros%@NL@%
  112.             2.3.2%@BO:        b426@%    Tiny Memory Model (.COM Files)%@NL@%
  113.             2.3.3%@BO:        b727@%    Custom Memory Models%@NL@%
  114.             2.3.4%@BO:        c3a9@%    Omitting Names of Nested Structures and Unions%@NL@%
  115.             2.3.5%@BO:        cb61@%    Unsized Arrays as the Last Member of a Structure%@NL@%
  116.             2.3.6%@BO:        cee4@%    Improved Warnings%@NL@%
  117.             2.3.7%@BO:        d1e0@%    Macros%@NL@%
  118.      2.4%@BO:        d2b7@%   Changes and Deletions%@NL@%
  119.             2.4.1%@BO:        d3ab@%    Deleted Features%@NL@%
  120.             2.4.2%@BO:        d4b8@%    Conditional Compilation and Signed Values%@NL@%
  121.             2.4.3%@BO:        d72e@%    The const and volatile Qualifiers%@NL@%
  122.             2.4.4%@BO:        da66@%    Memory Allocation%@NL@%
  123.             2.4.5%@BO:        dc28@%    Memory Used by Command-Line Arguments%@NL@%
  124.             2.4.6%@BO:        ddc9@%    Format Specifiers in printf and scanf%@NL@%
  125.             2.4.7%@BO:        e275@%    Functions that Return Float Values%@NL@%
  126.             2.4.8%@BO:        e49c@%    The char Variable Alignment%@NL@%
  127. %@NL@%
  128. %@AB@%Chapter 3%@AE@%%@BO:        e5f4@%  %@AB@%Compiler, Linker, and Utility Changes%@AE@%%@NL@%
  129. %@NL@%
  130.      3.1%@BO:        e952@%   Compiler Options%@NL@%
  131.      3.2%@BO:        f7f2@%   Linker Options%@NL@%
  132.      3.3%@BO:        fe3f@%   LIB Options%@NL@%
  133.      3.4%@BO:        ffc4@%   NMAKE Options%@NL@%
  134. %@NL@%
  135. %@AB@%Chapter 4%@AE@%%@BO:       10256@%  %@AB@%Library Changes%@AE@%%@NL@%
  136. %@NL@%
  137.      4.1%@BO:       10432@%   Buffer-Manipulation Routines%@NL@%
  138.      4.2%@BO:       10dbb@%   Data-Conversion Routines%@NL@%
  139.      4.3%@BO:       10f42@%   Directory-Control Routines%@NL@%
  140.      4.4%@BO:       11188@%   File-Handling Routines%@NL@%
  141.      4.5%@BO:       11331@%   Graphics Routines%@NL@%
  142.      4.6%@BO:       11959@%   Stream Input and Output Routines%@NL@%
  143.      4.7%@BO:       11ad5@%   Internationalization Routines%@NL@%
  144.      4.8%@BO:       11ec8@%   Math Routines%@NL@%
  145.      4.9%@BO:       12918@%   Memory-Allocation Routines%@NL@%
  146.      4.10%@BO:       130ab@%  Process- and Environment-Control Routines%@NL@%
  147.      4.11%@BO:       13457@%  String-Manipulation Routines%@NL@%
  148. %@NL@%
  149. %@AB@%Chapter 5%@AE@%%@BO:       14174@%  %@AB@%Error-Message Reference%@AE@%%@NL@%
  150. %@NL@%
  151.      5.1%@BO:       14304@%   Compiler Errors%@NL@%
  152.             5.1.1%@BO:       144cc@%    Fatal-Error Messages%@NL@%
  153.             5.1.2%@BO:       17897@%    Compilation-Error Messages%@NL@%
  154.             5.1.3%@BO:       1d5eb@%    Warning Messages%@NL@%
  155.      5.2%@BO:       276ff@%   Command-Line Error Messages%@NL@%
  156.      5.3%@BO:       28504@%   Run-Time Error Message%@NL@%
  157.      5.4%@BO:       288a7@%   QLINK Error Messages%@NL@%
  158.             5.4.1%@BO:       28e72@%    Fatal-Error Messages%@NL@%
  159.             5.4.2%@BO:       2a2b9@%    Nonfatal-Error Messages%@NL@%
  160.             5.4.3%@BO:       2bac8@%    Warning Messages%@NL@%
  161.      5.5%@BO:       2dc1c@%   NMAKE Error Messages%@NL@%
  162.             5.5.1%@BO:       2de14@%    Fatal-Error Messages%@NL@%
  163.             5.5.2%@BO:       30b30@%    Compilation-Error Message%@NL@%
  164.             5.5.3%@BO:       30f76@%    Warning Messages%@NL@%
  165. %@NL@%
  166. %@NL@%
  167. %@CR:C6A-Intro   @%%@1@%%@AB@%Introduction%@AE@%%@EH@%%@NL@%
  168. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  169. %@NL@%
  170. The Microsoft(R) QuickC(R) Compiler version 2.5 offers a variety of new
  171. features that support the latest advances in C language technology. The main
  172. enhancements in this version include language compatibility with Microsoft C
  173. version 6.0, increased ANSI compatibility, and improvements to the user
  174. interface.  %@NL@%
  175. %@NL@%
  176. ────────────────────────────────────────────────────────────────────────────%@NL@%
  177. NOTE
  178.  
  179. %@AI@%The term "DOS" refers to both the MS-DOS%@AI@%(R)%@AE@%%@AI@% and IBM Personal Computer DOS
  180. %@AI@%operating systems. The name of a specific operating system is used when it
  181. %@AI@%is necessary to note features that are unique to that system.%@AE@%%@AE@%%@NL@%
  182. ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
  183. %@NL@%
  184. %@NL@%
  185. %@2@%%@CR:C6A00000001 @%%@AB@%Enhancements for QuickC 2.5%@AE@%%@EH@%%@NL@%
  186. %@NL@%
  187. Here's a quick summary of the enhancements for QuickC version 2.5. The
  188. following chapters describe these features in more detail.  %@NL@%
  189. %@NL@%
  190. %@NL@%
  191.   ■   Language compatibility with Microsoft C version 6.0%@NL@%
  192. %@NL@%
  193.   ■   Increased ANSI standard C compatibility %@NL@%
  194. %@NL@%
  195.   ■   Support for the tiny memory model%@NL@%
  196. %@NL@%
  197.   ■   Enhanced graphics library%@NL@%
  198. %@NL@%
  199.   ■   New Quickwatch debugging feature%@NL@%
  200. %@NL@%
  201.   ■   Customized color window support
  202. %@NL@%
  203. ────────────────────────────────────────────────────────────────────────────%@NL@%
  204. NOTE
  205.  
  206. %@AI@%Due to the size of the expanded run-time libraries, QuickC 2.5 must be used
  207. %@AI@%with a hard disk.%@AE@%%@NL@%
  208. ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
  209. %@NL@%
  210. %@NL@%
  211. %@NL@%
  212. %@NL@%
  213. The QuickC Advisor has also been updated to provide information on all
  214. QuickC language, user interface, and compiler features. Consult the Advisor
  215. for detailed information on any of the features mentioned in this book.  %@NL@%
  216. %@NL@%
  217. %@NL@%
  218. %@2@%%@CR:C6A00000002 @%%@AB@%About This Book%@AE@%%@EH@%%@NL@%
  219. %@NL@%
  220. This book is divided into five chapters:  %@NL@%
  221. %@NL@%
  222. %@NL@%
  223.   ■   Chapter 1, "User Interface Changes," discusses the changes in menus,
  224.       menu commands, dialog boxes, and error messages.%@NL@%
  225. %@NL@%
  226.   ■   Chapter 2, "Language Differences," describes the differences between
  227.       QuickC 2.5 and QuickC 2.0.%@NL@%
  228. %@NL@%
  229.   ■   Chapter 3, "Compiler, Linker, and Utility Changes," lists the new
  230.       utility and QCL compile and link options.%@NL@%
  231. %@NL@%
  232.   ■   Chapter 4, "Library Changes," lists the new library routines and
  233.       summarizes their use.%@NL@%
  234. %@NL@%
  235.   ■   Chapter 5, "Error-Message Reference," lists the new QuickC error
  236.       messages.%@NL@%
  237. %@NL@%
  238. %@NL@%
  239. %@NL@%
  240. %@2@%%@CR:C6A00000003 @%%@AB@%Key to Document Conventions%@AE@%%@EH@%%@NL@%
  241. %@NL@%
  242. This book uses the following document conventions:  %@NL@%
  243. %@NL@%
  244. %@AB@%Example%@AE@%                           %@AB@%Description%@AE@%
  245. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  246. COPY TEST.OBJ C:                  Uppercase letters represent DOS commands
  247.                                   and file names.
  248.  
  249. %@AB@%printf%@AE@%                            Boldface letters indicate standard 
  250.                                   features of the C language: keywords, 
  251.                                   operators, and standard library 
  252.                                   functions.
  253.  
  254. %@AI@%expression%@AE@%                        Words in italics indicate placeholders 
  255.                                   for information you must supply, such as
  256.                                   a file name. Italics are also 
  257.                                   occasionally used for emphasis in the 
  258.                                   text.
  259.  
  260. %@AS@%main()%@AE@%                            This typeface is used for example 
  261. %@AS@%{%@AE@%                                 programs, program fragments, and the 
  262. %@AS@%}%@AE@%                                 names of user-defined functions and 
  263.                                   variables. It also indicates user input 
  264.                                   and screen output. %@AS@% %@AE@%
  265.  
  266. %@AB@%CL%@AE@% %@AI@%options%@AE@% «%@AI@%files...%@AE@%»             A horizontal ellipsis following an item 
  267.                                   indicates that more items having the 
  268.                                   same form may follow.
  269.  
  270. %@AS@%while( )%@AE@%%@AS@%%@AE@%                          A vertical ellipsis tells you that part 
  271. %@AS@%{%@AE@%                                 of the example program has been 
  272. %@AS@%   .%@AE@%                              intentionally omitted.
  273. %@AS@%   .%@AE@%                              
  274. %@AS@%   .%@AE@%                              
  275. %@AS@%}%@AE@%                                 
  276.  
  277. SHIFT                             Small capital letters denote names of 
  278.                                   keys on the keyboard. A plus sign ( + ) 
  279.                                   indicates a combination of keys. For 
  280.                                   example, SHIFT+F5 tells you to hold down
  281.                                   the SHIFT key while pressing the F5 key.
  282.  
  283. "array pointer"                   The first time a new term is defined, it
  284.                                   is enclosed in quotation marks. Since 
  285.                                   some knowledge of programming is assumed,
  286.                                   common terms such as memory or branch 
  287.                                   are not defined.
  288.  
  289. American National Standards       The first time an acronym appears, it is
  290. Institute (ANSI)                  spelled out.
  291.  
  292. %@NL@%
  293. %@NL@%
  294. %@NL@%
  295. %@NL@%
  296. %@NL@%
  297. %@CR:C6A00010001 @%%@1@%%@AB@%Chapter 1  User Interface Changes%@AE@%%@EH@%%@NL@%
  298. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  299. %@NL@%
  300. The changes in version 2.5 of the QuickC Compiler environment implement new
  301. features, such as the Quickwatch command, as well as improvements to
  302. existing features. This chapter describes the changes; they are grouped
  303. according to the menu in which they appear.  %@NL@%
  304. %@NL@%
  305. Remember, you can use online help to get information about all environment
  306. features, including those described in this section.  %@NL@%
  307. %@NL@%
  308. %@NL@%
  309. %@2@%%@CR:C6A00010002 @%%@AB@%1.1  File Menu Changes%@AE@%%@EH@%%@NL@%
  310. %@NL@%
  311. The following changes are found in the File menu:%@CR:C6A00010003 @%%@CR:C6A00010004 @%%@CR:C6A00010005 @%  %@NL@%
  312. %@NL@%
  313. %@AB@%Change%@AE@%                            %@AB@%Description%@AE@%
  314. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  315. Read-only file warning            If you select a read-only file with the 
  316.                                   Open command in the File menu, a dialog 
  317.                                   box informs you the file is read-only.
  318.  
  319. Closing notepad files             In QuickC 2.5, closing the Notepad 
  320.                                   window saves and frees the file. In 
  321.                                   QuickC 2.0, when you load a file in the 
  322.                                   Notepad window and then close it, the 
  323.                                   file is not freed. The file therefore 
  324.                                   cannot be loaded into the Program 
  325.                                   window.%@CR:C6A00010006 @%
  326.  
  327. %@NL@%
  328. %@2@%%@CR:C6A00010007 @%%@AB@%1.2  View Menu Changes%@AE@%%@EH@%%@NL@%
  329. %@NL@%
  330. The following change is found in the View menu:%@CR:C6A00010008 @%%@CR:C6A00010009 @%%@CR:C6A00010010 @%  %@NL@%
  331. %@NL@%
  332. %@AB@%Change%@AE@%                            %@AB@%Description%@AE@%
  333. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  334. Registers window                  The Registers window displayed with the 
  335.                                   Windows command in the View menu has 
  336.                                   been modified to display information 
  337.                                   about the math coprocessor chip and 
  338.                                   emulator. Additionally, pressing TAB 
  339.                                   moves the cursor forward between 
  340.                                   modifiable fields, while pressing 
  341.                                   SHIFT+TAB moves the cursor backward 
  342.                                   between modifiable fields. Pressing 
  343.                                   ENTER or double-clicking the Left mouse 
  344.                                   button allows you to modify a register.
  345.  
  346. %@NL@%
  347. %@2@%%@CR:C6A00010011 @%%@AB@%1.3  Search Menu Changes%@AE@%%@EH@%%@NL@%
  348. %@NL@%
  349. The following changes are found in the Search menu:%@CR:C6A00010012 @%%@CR:C6A00010013 @%%@CR:C6A00010014 @%  %@NL@%
  350. %@NL@%
  351. %@AB@%Change%@AE@%                            %@AB@%Description%@AE@%
  352. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  353. New Go to command                 The Go to... command has been added to 
  354.                                   the Search menu. This command displays a
  355.                                   dialog box into which you type a desired
  356.                                   line number. Then QuickC moves the 
  357.                                   cursor to that line.%@CR:C6A00010015 @%
  358.  
  359. Selected text shortcut key        Since the backslash key ( \ ) is not 
  360.                                   available on standard European keyboards,
  361.                                   the shortcut key for the Selected Text 
  362.                                   command has been changed from CTRL+\ to 
  363.                                   CTRL+F3. CTRL+\ is now the shortcut key 
  364.                                   for the Find command in the Search menu.
  365.                                   The effect of CTRL+\ can be modified 
  366.                                   with the MKKEY utility.
  367.  
  368.                                   
  369.  
  370. %@NL@%
  371. %@2@%%@CR:C6A00010016 @%%@AB@%1.4  Make Menu Changes%@AE@%%@EH@%%@NL@%
  372. %@NL@%
  373. The following changes are found in the Make menu:%@CR:C6A00010017 @%%@CR:C6A00010018 @%%@CR:C6A00010019 @%  %@NL@%
  374. %@NL@%
  375. %@AB@%Change%@AE@%                            %@AB@%Description%@AE@%
  376. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  377. Canceling the build process       With version 2.5, pressing ESC cancels a
  378.                                   compile, but not a link. The dialog box 
  379.                                   tells you to press CTRL+BREAK to cancel 
  380.                                   both compiling and linking. Previously, 
  381.                                   when either the Build or the Rebuild All
  382.                                   command was given, the dialog box said 
  383.                                   to press ESC to cancel compiling and 
  384.                                   linking.%@CR:C6A00010020 @%
  385.  
  386. .H files in the program list      QuickC 2.5 supports adding .H files to 
  387.                                   the program list with the Edit Program 
  388.                                   List command. QuickC treats all .C files
  389.                                   as dependents of the .H files in the 
  390.                                   list. If an include file is modified, 
  391.                                   QuickC performs a full rebuild. If you 
  392.                                   have hand-edited a makefile to encode .H
  393.                                   file dependencies, then QuickC does not 
  394.                                   display these include files as part of 
  395.                                   the program list in the Edit Program 
  396.                                   List dialog box. If QuickC rewrites the 
  397.                                   hand-edited makefile, these include-file
  398.                                   dependencies are not modified.%@CR:C6A00010021 @% %@CR:C6A00010022 @%
  399.  
  400. Alphabetical file                 File names are now displayed 
  401. display in the                    alphabetically in the program list and 
  402. program list                      in the dialog box displayed by choosing 
  403.                                   the Source command in the View menu. 
  404.                                   Consequently, names of .LIB files are 
  405.                                   displayed at the end of the list, 
  406.                                   eliminating the need to scroll over 
  407.                                   names of files that cannot be opened 
  408.                                   with the Source command.
  409.  
  410. %@NL@%
  411. %@2@%%@CR:C6A00010023 @%%@AB@%1.5  Debug Menu: New Quickwatch Command%@AE@%%@EH@%%@NL@%
  412. %@NL@%
  413. The Quickwatch command is a new feature in QuickC 2.5. It gives you a faster
  414. view of variables and expressions than does the Watch Value command. To use
  415. Quickwatch%@CR:C6A00010024 @%%@CR:C6A00010025 @%%@CR:C6A00010026 @%%@CR:C6A00010027 @%%@CR:C6A00010028 @%  %@NL@%
  416. %@NL@%
  417. %@NL@%
  418.   1.  Move the cursor to the variable you want to watch, or highlight the
  419.       expression you want to watch.%@NL@%
  420. %@NL@%
  421.   2.  Choose the Quickwatch command from the Debug menu or press SHIFT+F9%@NL@%
  422. %@NL@%
  423. %@NL@%
  424. QuickC displays a dialog box with the selected variable or expression along
  425. with the current value. See Figure 1.1.  %@NL@%
  426. %@NL@%
  427. %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
  428. %@NL@%
  429. Instead of placing the cursor on the variable or highlighting the expression
  430. you want to watch, you can select Quickwatch, or press SHIFT+F9, and type an
  431. expression in the text box of the dialog box.  %@NL@%
  432. %@NL@%
  433. The lower part of the Quickwatch dialog box contains the following buttons:
  434. %@NL@%
  435. %@NL@%
  436. Zoom Modify Value Evaluate Cancel Add Watch Help  %@NL@%
  437. %@NL@%
  438. The Zoom button expands or contracts an array or structure. Zoom displays
  439. the values of the array members or structure elements in the List box. To
  440. show levels of expansion in the List box, nested elements are indented one
  441. space. If the expression has already been expanded, the Zoom button
  442. contracts the items. If a variable can be expanded, it has a "+" prefix. If
  443. a variable can be contracted, it has a "-" prefix. If the expression cannot
  444. be expanded or contracted and Zoom is selected, QuickC beeps.  %@NL@%
  445. %@NL@%
  446. The Evaluate button uses the current expression in the Expression text box
  447. as the new base variable. If the expression can be expanded, the Zoom button
  448. displays items in the List box.  %@NL@%
  449. %@NL@%
  450. To further expand nested items shown in the List box, select item names with
  451. the mouse or cursor. The item names are copied to the Expression text box,
  452. and the appropriate values are displayed in the Value text box and the List
  453. box. Then you can use the Zoom button to expand or contract the nested
  454. items.  %@NL@%
  455. %@NL@%
  456. The Add Watch button adds the current expression to the Watch window. If the
  457. expression is already included in the Watch window, Add Watch has no effect.
  458. %@NL@%
  459. %@NL@%
  460. The Modify Value button changes the value of the expression to the value
  461. entered in the Value text box. When you select Modify Value, QuickC records
  462. and displays the updated value in the List box.  %@NL@%
  463. %@NL@%
  464. The Cancel button closes the Quickwatch dialog box.  %@NL@%
  465. %@NL@%
  466. The Help button displays information about using the Quickwatch dialog box.
  467. %@NL@%
  468. %@NL@%
  469. %@NL@%
  470. %@2@%%@CR:C6A00010029 @%%@AB@%1.6  Options Menu Changes%@AE@%%@EH@%%@NL@%
  471. %@NL@%
  472. The following changes are found in the Options menu:%@CR:C6A00010030 @%%@CR:C6A00010031 @%%@CR:C6A00010032 @%  %@NL@%
  473. %@NL@%
  474. %@AB@%Change%@AE@%                            %@AB@%Description%@AE@%
  475. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  476. Run/Debug command-line length     In QuickC 2.5, the Command Line text box
  477. limitation                        in the Run/Debug dialog box accepts up 
  478.                                   to 126 characters. A warning message is 
  479.                                   displayed if the length of text exceeds 
  480.                                   126 characters. QuickC 2.0 accepts up to
  481.                                   256 characters. However, only the first 
  482.                                   126 characters are used.
  483.  
  484. Compiler flags, linker flags,     Numerous changes have been made to the 
  485. and display dialog box changes    compiler flags, linker flags, and 
  486.                                   display dialog boxes. They are described
  487.                                   in the following sections.
  488.  
  489. New color command                 Enhanced options for setting colors in 
  490.                                   QuickC are described below.
  491.  
  492. %@NL@%
  493. %@3@%%@CR:C6A00010033 @%%@AB@%1.6.1  Compiler Flags Dialog-Box Changes%@AE@%%@EH@%%@NL@%
  494. %@NL@%
  495. The Compiler Flags dialog box, shown in Figure 1.2, contains the following
  496. modifications:  %@NL@%
  497. %@NL@%
  498. %@NL@%
  499.   ■   The Compiler Flags dialog box, displayed by selecting the Compiler
  500.       Flags button in the Make dialog box, has been modified to support the
  501.       tiny memory model.%@NL@%
  502. %@NL@%
  503.   ■   The Warning Level option has been changed from a set of option buttons
  504.       to a text box, and this option now supports warning levels up to 4. If
  505.       you enter an invalid warning level, QuickC displays a warning message.%@NL@%
  506. %@NL@%
  507.   ■   In QuickC version 2.5, the Full CodeView check box replaces the Line
  508.       Numbers Only option under Debug Flags in version 2.0. If Full CodeView
  509.       is checked, QuickC generates complete information on the Microsoft
  510.       CodeView(R) debugger. If the option is left unchecked, QuickC
  511.       generates line number information.%@NL@%
  512. %@NL@%
  513.   ■   Three Custom Flags text boxes have been added to the dialog box. They
  514.       allow you to specify additional Global, Debug, and Release compiler
  515.       directives. %@NL@%
  516. %@NL@%
  517. %@STUB@%      %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
  518. %@NL@%
  519. %@NL@%
  520. %@NL@%
  521. %@3@%%@CR:C6A00010034 @%%@AB@%1.6.2  Linker Flags Dialog-Box Changes%@AE@%%@EH@%%@NL@%
  522. %@NL@%
  523. The Linker Flags dialog box, shown in Figure 1.3, contains the following
  524. changes:%@CR:C6A00010035 @%  %@NL@%
  525. %@NL@%
  526. %@NL@%
  527.   ■   The Global Flags check boxes contain a new option called Generate .COM
  528.       File. This option uses the tiny memory model to create .COM files.%@NL@%
  529. %@NL@%
  530.   ■   A new Memory Needs text box allows you to specify the amount of memory
  531.       to allocate for a program.%@NL@%
  532. %@NL@%
  533.   ■   The new Custom Flags text box allows you to specify additional Global
  534.       linker directives, as well as those for Debug and Release versions of
  535.       the program. Enter linker directives in the appropriate text box.%@NL@%
  536. %@NL@%
  537. %@STUB@%      %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
  538. %@NL@%
  539. %@NL@%
  540. %@NL@%
  541. %@3@%%@CR:C6A00010036 @%%@AB@%1.6.3  Display Dialog-Box Changes%@AE@%%@EH@%%@NL@%
  542. %@NL@%
  543. The Display dialog box, shown in Figure 1.4, has been changed as follows:  %@NL@%
  544. %@NL@%
  545. %@NL@%
  546.   ■   The Save Before Build check box controls whether files are saved
  547.       before building.%@NL@%
  548. %@NL@%
  549.   ■   The Keep Tabs option controls tab settings. If the option is off, tabs
  550.       are converted to the appropriate number of spaces. Then when the file
  551.       is saved, leading spaces are converted back to tabs. If the option is
  552.       on, tabs are always treated as tabs and are never converted to spaces.
  553.       The default for this option is off, which is equivalent to the QuickC
  554.       2.0 method of handling tabs.%@CR:C6A00010037 @%%@CR:C6A00010038 @%%@NL@%
  555. %@NL@%
  556.   ■   The Show 8087 check box controls whether the 8087 registers are
  557.       displayed in the Registers window.%@NL@%
  558. %@NL@%
  559.   ■   When you check the Save Before Build check box, QuickC saves any
  560.       changes in open files before it builds the program.%@NL@%
  561. %@NL@%
  562. %@NL@%
  563. %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
  564. %@NL@%
  565. The Display dialog box no longer contains a color selection option. Expanded
  566. color options are now available through the Color command in the Options
  567. menu.  %@NL@%
  568. %@NL@%
  569. %@NL@%
  570. %@3@%%@CR:C6A00010039 @%%@AB@%1.6.4  New Color Command%@AE@%%@EH@%%@NL@%
  571. %@NL@%
  572. The Color command in the Options menu gives you greater control over the
  573. appearance of QuickC. Items such as menus, borders, buttons, and text within
  574. windows (such as source, errors, and registers) can all be given unique
  575. colors (see Figure 1.5).  %@NL@%
  576. %@NL@%
  577. %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
  578. %@NL@%
  579. Four predefined color sets are available. All four color sets can be
  580. modified.  %@NL@%
  581. %@NL@%
  582. %@AB@%Color Set%@AE@%                         %@AB@%Description%@AE@%
  583. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  584. 1                                 Defines the color set for 16-color 
  585.                                   display monitors
  586.  
  587. 2                                 Defines the color set for 8-color 
  588.                                   displays
  589.  
  590. 3                                 Specifies the color set for monochrome 
  591.                                   displays
  592.  
  593. LCD                               Defines the color set for Liquid Crystal
  594.                                   Displays
  595.  
  596. You can customize the color of a window item by selecting that item from the
  597. Item list box, then changing the values in the Foreground and Background
  598. list boxes. Changing an item's color modifies it only within the selected
  599. color set.  %@NL@%
  600. %@NL@%
  601. The Redraw button redraws the screen with the new color values. Color
  602. changes take place when the OK button is pressed.  %@NL@%
  603. %@NL@%
  604. The Default button restores the normal color values. The default colors for
  605. each set are shown in the following list:  %@NL@%
  606. %@NL@%
  607. %@AB@%Color Set%@AE@%                         %@AB@%Default%@AE@%
  608. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  609. 1                                 QuickC 2.0 #1
  610.  
  611. 2                                 QuickBasic 4.5 8-color
  612.  
  613. 3                                 QuickC 2.0 #3
  614.  
  615. LCD                               QuickC 2.0 LCD
  616.  
  617. %@NL@%
  618. %@2@%%@CR:C6A00010040 @%%@AB@%1.7  Help Menu Changes%@AE@%%@EH@%%@NL@%
  619. %@NL@%
  620. The following changes are found in the Help menu:%@CR:C6A00010041 @%%@CR:C6A00010042 @%%@CR:C6A00010043 @%  %@NL@%
  621. %@NL@%
  622. %@NL@%
  623.   ■   In QuickC 2.5, if a low memory condition exists when you try to access
  624.       online help, a dialog box appears and asks if you want to close the
  625.       current program first, thus freeing enough memory to run help.%@NL@%
  626. %@NL@%
  627.   ■   In QuickC 2.0, if there isn't enough memory to access online help,
  628.       QuickC displays an %@AS@% Out of Memory %@AE@% error. At this point, the only way
  629.       to get help information is to exit QuickC and start over again.%@NL@%
  630. %@NL@%
  631. %@NL@%
  632. %@NL@%
  633. %@NL@%
  634. %@NL@%
  635. %@NL@%
  636. %@NL@%
  637. %@CR:C6A00020001 @%%@1@%%@AB@%Chapter 2  Language Differences%@AE@%%@EH@%%@NL@%
  638. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  639. %@NL@%
  640. This chapter describes the language differences between versions 2.5 and 2.0
  641. of the QuickC Compiler. Some of the changes are required by the American
  642. National Standards Institute (ANSI) standard for the C programming language.
  643. Other changes improve or augment the existing capabilities of QuickC and
  644. make it compatible with Microsoft C version 6.0.%@CR:C6A00020002 @%  %@NL@%
  645. %@NL@%
  646. The chapter is divided into four sections:  %@NL@%
  647. %@NL@%
  648. %@NL@%
  649.   ■   ANSI Compatibility%@NL@%
  650. %@NL@%
  651.   ■   New Language Keywords%@NL@%
  652. %@NL@%
  653.   ■   New Language Features%@NL@%
  654. %@NL@%
  655.   ■   Changes and Deletions%@NL@%
  656. %@NL@%
  657. %@NL@%
  658. Many of the changes described in this chapter do not affect code written for
  659. previous versions of QuickC. In some cases, however, you may have to modify
  660. existing code before compiling with version 2.5. Refer to section 2.4,
  661. "Changes and Deletions," for revisions that may impact your program.  %@NL@%
  662. %@NL@%
  663. %@NL@%
  664. %@2@%%@CR:C6A00020003 @%%@AB@%2.1  ANSI Compatibility%@AE@%%@EH@%%@NL@%
  665. %@NL@%
  666. A number of changes have been made to the compiler to support the ANSI
  667. stan-dard. These include additions that make QuickC programs more portable
  668. and allow you to take advantage of more ANSI features.%@CR:C6A00020004 @%  %@NL@%
  669. %@NL@%
  670. %@NL@%
  671. %@3@%%@CR:C6A00020005 @%%@AB@%2.1.1  ANSI-Mandated New Features%@AE@%%@EH@%%@NL@%
  672. %@NL@%
  673. The following ANSI-mandated features are new to QuickC 2.5:  %@NL@%
  674. %@NL@%
  675. %@NL@%
  676.   ■   Both %@AB@%long %@AE@%and %@AB@%unsigned long%@AE@% values are allowed in switch expressions
  677.       and case constants. Previous versions of QuickC allow only %@AB@%char%@AE@% and
  678.       %@AB@%int%@AE@% values in this context.%@CR:C6A00020006 @%%@NL@%
  679. %@NL@%
  680.   ■   QuickC supports %@AB@%unsigned long%@AE@% decimal constants. It is now possible to
  681.       initialize %@AB@%unsigned long%@AE@% variables with values larger than %@AB@%MAX_LONG%@AE@%
  682.       using decimal (rather than hexadecimal or octal) constants.%@CR:C6A00020007 @%%@NL@%
  683. %@NL@%
  684.   ■   You can declare %@AB@%signed%@AE@% as well as %@AB@%unsigned%@AE@% bitfields. %@CR:C6A00020008 @%%@CR:C6A00020009 @%%@NL@%
  685. %@NL@%
  686.   ■   Bitfields are permitted in unions.%@CR:C6A00020010 @%%@NL@%
  687. %@NL@%
  688.   ■   Storage classes or types (or both) are now required on variable
  689.       declarations. QuickC previously assumed that declarations without a
  690.       specific type were integer declarations. An untyped declaration now
  691.       generates a warning.%@CR:C6A00020011 @%%@NL@%
  692. %@NL@%
  693.   ■   The LOCALE.H header file is new to version 2.5. It declares functions
  694.       and structures for describing conventions, such as the currency
  695.       symbol, that vary from one country to another.%@CR:C6A00020012 @%%@NL@%
  696. %@NL@%
  697.   ■   The semantics for %@AB@%volatile%@AE@% have been implemented. Previously, %@AB@%volatile%@AE@%
  698.       was only syntactically implemented.%@CR:C6A00020013 @%%@NL@%
  699. %@NL@%
  700. %@NL@%
  701. %@NL@%
  702. %@3@%%@CR:C6A00020014 @%%@AB@%2.1.2  Integer Promotion Rules%@AE@%%@EH@%%@NL@%
  703. %@NL@%
  704. The ANSI standard changes the method of evaluation of some expressions that
  705. mix signed and unsigned integers. Earlier versions of QuickC attempt to
  706. preserve an expression's unsigned nature as much as possible. Version 2.5
  707. attempts to preserve the expression's value.%@CR:C6A00020015 @%%@CR:C6A00020016 @%  %@NL@%
  708. %@NL@%
  709. In version 2.5, an %@AB@%unsigned char%@AE@% promotes to a %@AB@%signed int%@AE@%; an %@AB@%unsigned int%@AE@%
  710. promotes to a %@AB@%signed long%@AE@%.  %@NL@%
  711. %@NL@%
  712. In version 2.0, an %@AB@%unsigned char%@AE@% promotes to an %@AB@%unsigned int%@AE@%; an %@AB@%unsigned
  713. %@AB@%int%@AE@% promotes to an %@AB@%unsigned long%@AE@%.  %@NL@%
  714. %@NL@%
  715. For example:  %@NL@%
  716. %@NL@%
  717. %@AS@%  main()
  718. %@AS@%  {
  719. %@AS@%    long int li = -256L;
  720. %@AS@%    test( li );
  721. %@AS@%  }%@AE@%%@NL@%
  722. %@NL@%
  723. %@AS@%  test( long li ) 
  724. %@AS@%  {
  725. %@AS@%    if( li < 0xffff )
  726. %@AS@%       puts( "QuickC 2.5 does a signed comparison" );
  727. %@AS@%       else puts( "QuickC 2.0 does an unsigned comparison" );
  728. %@AS@%  }%@AE@%%@NL@%
  729. %@NL@%
  730. %@NL@%
  731. %@3@%%@CR:C6A00020017 @%%@AB@%2.1.3  Defining NULL as a Pointer%@AE@%%@EH@%%@NL@%
  732. %@NL@%
  733. The constant %@AB@%NULL %@AE@%is now defined as %@AS@% ((void *)0)%@AE@%. Previous versions of
  734. QuickC define %@AB@%NULL%@AE@% as 0x0000 in the small and medium models and as
  735. 0x00000000L in the compact and large models.%@CR:C6A00020018 @%%@CR:C6A00020019 @%  %@NL@%
  736. %@NL@%
  737. %@NL@%
  738. %@3@%%@CR:C6A00020020 @%%@AB@%2.1.4  Shift Operators%@AE@%%@EH@%%@NL@%
  739. %@NL@%
  740. Shift operators now give a result that is of the same type as the left
  741. operand. For example, consider the code fragment%@CR:C6A00020021 @%%@CR:C6A00020022 @%  %@NL@%
  742. %@NL@%
  743. %@AS@%  short short_int;
  744. %@AS@%  long long_int;
  745. %@AS@%  short_int = 0x0001;
  746. %@AS@%  long_int = short_int << 16L;%@AE@%%@NL@%
  747. %@NL@%
  748. To adhere to the ANSI standard, QuickC 2.5 maintains the size of the left
  749. operand. The variable %@AS@% short_int %@AE@% has 16 bits. Shifting left 16 times
  750. produces a value of 0, which is then assigned to %@AS@% long_int%@AE@%.  %@NL@%
  751. %@NL@%
  752. QuickC previously yielded a result that was the size of the "widest" (or
  753. largest) of the two values. In the example above, the short value is
  754. automatically cast to a long because 16L is long. The value assigned to %@AS@%
  755. %@AS@%long_int %@AE@% is 0x00010000L in QuickC 2.0.  %@NL@%
  756. %@NL@%
  757. %@NL@%
  758. %@3@%%@CR:C6A00020023 @%%@AB@%2.1.5  Pointers to Type Definitions%@AE@%%@EH@%%@NL@%
  759. %@NL@%
  760. The rules for handling pointers to type definitions have changed subtly. For
  761. example, QuickC 2.5 interprets%@CR:C6A00020024 @%%@CR:C6A00020025 @%  %@NL@%
  762. %@NL@%
  763. %@AS@%  typedef int far f_int;
  764. %@AS@%  f_int *fp_i;%@AE@%%@NL@%
  765. %@NL@%
  766. as being equivalent to  %@NL@%
  767. %@NL@%
  768. %@AS@%  int far *fp_i;%@AE@%%@NL@%
  769. %@NL@%
  770. which means %@AS@% fp_i %@AE@% is a near variable that is a far pointer to an integer.
  771. The address of the integer contains 32 bits. The size of the address of %@AS@%
  772. %@AS@%fp_i %@AE@% is memory model dependent. %@AS@%  %@AE@%%@NL@%
  773. %@NL@%
  774. QuickC 2.0 interprets the declaration as  %@NL@%
  775. %@NL@%
  776. %@AS@%  int *far fp_i;%@AE@%%@NL@%
  777. %@NL@%
  778. where %@AS@% fp_i %@AE@% is a far variable that is a near pointer to an integer. The
  779. address of %@AS@% fp_i %@AE@% is 32 bits. The size of the integer's address is
  780. indeterminate.  %@NL@%
  781. %@NL@%
  782. This change in handling pointers to type definitions affects type
  783. definitions containing %@AB@%_near%@AE@%, %@AB@%_far%@AE@%, %@AB@%_based%@AE@%, and other modifiers. Although
  784. these are Microsoft-specific keywords, their new behavior is consistent with
  785. the ANSI standard's requirements for the %@AB@%const %@AE@%and %@AB@%volatile %@AE@%keywords.  %@NL@%
  786. %@NL@%
  787. %@NL@%
  788. %@3@%%@CR:C6A00020026 @%%@AB@%2.1.6  Identifying Nonstandard Keywords%@AE@%%@EH@%%@NL@%
  789. %@NL@%
  790. The following modifiers are specific to QuickC; they are not part of the
  791. ANSI standard. To identify these implementation-defined keywords as
  792. non-ANSI, an initial underscore has been added.%@CR:C6A00020027 @%%@CR:C6A00020028 @%  %@NL@%
  793. %@NL@%
  794. %@AB@%QuickC 2.5 Keyword%@AE@%                %@AB@%QuickC 2.0 Keyword%@AE@%
  795. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  796. %@AB@%_far%@AE@%                              %@AB@%far%@AE@%
  797.  
  798. %@AB@%_huge%@AE@%                             %@AB@%huge%@AE@%
  799.  
  800. %@AB@%_near%@AE@%                             %@AB@%near%@AE@%
  801.  
  802. %@AB@%_cdecl%@AE@%                            %@AB@%cdecl%@AE@%
  803.  
  804. %@AB@%_fortran%@AE@%                          %@AB@%fortran%@AE@%
  805.  
  806. %@AB@%_interrupt%@AE@%                        %@AB@%interrupt%@AE@%
  807.  
  808. %@AB@%_pascal%@AE@%                           %@AB@%pascal%@AE@%
  809.  
  810. The compiler still accepts the obsolescent versions of these keywords,
  811. unless you use the /Za (disable extensions) option.  %@NL@%
  812. %@NL@%
  813. %@NL@%
  814. %@3@%%@CR:C6A00020029 @%%@AB@%2.1.7  Trigraphs%@AE@%%@EH@%%@NL@%
  815. %@NL@%
  816. To maintain ANSI compatibility with and portability to other systems, QuickC
  817. supports the trigraphs listed below. The compiler interprets each sequence
  818. in the left column as equivalent to the character shown in the right column.%@CR:C6A00020030 @%%@CR:C6A00020031 @%
  819. %@NL@%
  820. %@NL@%
  821. %@AB@%Trigraph%@AE@%                          %@AB@%Character%@AE@%
  822. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  823. ??=                               #
  824.  
  825. ??(                               [
  826.  
  827. ??/                               \
  828.  
  829. ??)                               ]
  830.  
  831. ??'                               ^
  832.  
  833. ??<                               {
  834.  
  835. ??!                               |
  836.  
  837. ??>                               }
  838.  
  839. ??-                               ~
  840.  
  841. %@NL@%
  842. %@3@%%@CR:C6A00020032 @%%@AB@%2.1.8  ANSI Nonconformance%@AE@%%@EH@%%@NL@%
  843. %@NL@%
  844. Areas in which QuickC version 2.5 does not follow the ANSI standard include
  845. the following:%@CR:C6A00020033 @%  %@NL@%
  846. %@NL@%
  847. %@NL@%
  848.   ■   QuickC does not support multibyte characters, wide-character constants
  849.       and string constants comprising wide characters, and the related
  850.       library functions and types.%@NL@%
  851. %@NL@%
  852.   ■   QuickC contains some extended keywords (such as %@AB@%_near%@AE@% and %@AB@%_far%@AE@%),
  853.       non-ANSI macros and types in header files, and extended library
  854.       function names (such as %@AB@%read %@AE@%and %@AB@%write%@AE@%) that exceed ANSI name-space
  855.       maximums.%@NL@%
  856. %@NL@%
  857. %@NL@%
  858. %@NL@%
  859. %@2@%%@CR:C6A00020034 @%%@AB@%2.2  New Language Keywords%@AE@%%@EH@%%@NL@%
  860. %@NL@%
  861. This section describes keywords that do not exist in previous versions of
  862. QuickC. Details about the use of these keywords can be found in the online
  863. help.%@CR:C6A00020035 @%%@CR:C6A00020036 @%  %@NL@%
  864. %@NL@%
  865. %@NL@%
  866. %@3@%%@CR:C6A00020037 @%%@AB@%2.2.1  In-Line Assembler%@AE@%%@EH@%%@NL@%
  867. %@NL@%
  868. A new pseudoinstruction, %@AB@%_emit%@AE@%, has been added for use with the in-line
  869. assembler. This pseudoinstruction allows you to define a single immediate
  870. byte at the current location in the current text segment.%@CR:C6A00020038 @%%@CR:C6A00020039 @%  %@NL@%
  871. %@NL@%
  872. %@NL@%
  873. %@3@%%@CR:C6A00020040 @%%@AB@%2.2.2  Based Pointers and Objects%@AE@%%@EH@%%@NL@%
  874. %@NL@%
  875. QuickC 2.5 supports the following new keywords and operators: %@AB@%_based%@AE@%,
  876. %@AB@%_segment%@AE@%, %@AB@%_segname%@AE@%, and %@AB@%:>%@AE@%. They are used to declare and manipulate based
  877. objects.%@CR:C6A00020041 @%%@CR:C6A00020042 @%%@CR:C6A00020043 @%%@CR:C6A00020044 @%  %@NL@%
  878. %@NL@%
  879. Based object support is included in QuickC 2.5 for the sake of compatibility
  880. with Microsoft C version 6.0. Refer to Chapter 2, "Managing Memory," in %@AI@%
  881. %@AI@%Microsoft C Advanced Programming Techniques%@AE@% for further details.  %@NL@%
  882. %@NL@%
  883. %@NL@%
  884. %@3@%%@CR:C6A00020045 @%%@AB@%2.2.3  Long Double Types%@AE@%%@EH@%%@NL@%
  885. %@NL@%
  886. Because the 80%@AI@%x%@AE@%87 family of math coprocessors supports an 80-bit
  887. floating-point type, QuickC version 2.5 stores %@AB@%long double%@AE@% variables in the
  888. 80%@AI@%x%@AE@%87 10-byte (80-bit) form.  %@NL@%
  889. %@NL@%
  890. QuickC version 2.0 recognizes %@AB@%long double%@AE@% and %@AB@%double%@AE@% as different types,
  891. with both types stored in memory as 64-bit quantities.%@CR:C6A00020046 @%  %@NL@%
  892. %@NL@%
  893. Certain library functions have been modified to handle the %@AB@%long double%@AE@% type.
  894. The %@AB@%printf%@AE@% and %@AB@%scanf%@AE@% family of functions supports %@AB@%long double%@AE@% values; their
  895. format has the %@AB@%l%@AE@% type prefix. The library contains new versions of the
  896. transcendental functions as well as intrinsic forms that accept %@AB@%long double%@AE@%
  897. arguments. The names of these functions have a trailing %@AB@%l%@AE@% (for example,
  898. %@AB@%cosl%@AE@%).  %@NL@%
  899. %@NL@%
  900. %@NL@%
  901. %@3@%%@CR:C6A00020047 @%%@AB@%2.2.4  The _fastcall Function Attribute (/Gr Option)%@AE@%%@EH@%%@NL@%
  902. %@NL@%
  903. The new %@AB@%_fastcall%@AE@% function attribute enables QuickC to pass function
  904. arguments in processor registers instead of on the stack. This ability
  905. results in faster function calls when a QuickC program is built with
  906. Microsoft C version 6.0.%@CR:C6A00020048 @%  %@NL@%
  907. %@NL@%
  908. You can define fastcall functions in two ways. Use the %@AB@%_fastcall%@AE@% function
  909. attribute to declare an individual function as fastcall:  %@NL@%
  910. %@NL@%
  911. %@AS@%  int _fastcall FastFunc( void );%@AE@%%@NL@%
  912. %@NL@%
  913. Additionally, the /Gr option enables the fastcall function-calling
  914. convention for all functions that are not explicitly prototyped with the
  915. %@AB@%_cdecl%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fortran %@AE@%attributes. Using /Gr on the command line
  916. causes each function in the module to compile as %@AB@%_fastcall%@AE@% unless the
  917. function is declared with a conflicting attribute, or the name of the
  918. function is %@AB@%main%@AE@%.  %@NL@%
  919. %@NL@%
  920. None of the library functions have the fastcall attribute; their arguments
  921. are passed on the stack, not in registers. If you compile with the /Gr
  922. option, you must include the correct header file for each library function
  923. or write a prototype for the function using the %@AB@%_cdecl%@AE@% attribute.  %@NL@%
  924. %@NL@%
  925. A fastcall function can receive up to three 16-bit arguments. Arguments are
  926. passed in the AX, BX, and DX registers. Fastcall arguments are passed in the
  927. registers shown below. If you pass one character argument, it is passed in
  928. the AL register. If you pass two character arguments, the second argument is
  929. passed in DL, and so on.  %@NL@%
  930. %@NL@%
  931. %@AB@%Argument Type%@AE@%                     %@AB@%Registers%@AE@%
  932. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  933. Character                         AL, DL, BL
  934.  
  935. Short integer                     AX, DX, BX
  936.  
  937. Near pointer                      BX, AX, DX
  938.  
  939. Long integer                      DX:AX
  940.  
  941. ────────────────────────────────────────────────────────────────────────────%@NL@%
  942. %@AU@%WARNING%@AE@%%@NL@%
  943. %@NL@%
  944. Future versions of QuickC may pass fastcall arguments in different
  945. registers.%@NL@%
  946. ────────────────────────────────────────────────────────────────────────────%@NL@%
  947. %@NL@%
  948. If all of the registers for a particular type have already been used, or if
  949. an argument is not one of the types listed above, it is pushed on the stack
  950. as usual. Given an argument list of types %@AB@%long%@AE@%, %@AB@%float%@AE@%, and %@AB@%short%@AE@%, QuickC
  951. passes the %@AB@%long %@AE@%in DX:AX, pushes the %@AB@%float%@AE@%, and passes the %@AB@%short %@AE@%in BX.
  952. Fastcall functions return any floating-point value on the floating-point
  953. processor stack.  %@NL@%
  954. %@NL@%
  955. The treatment of character arguments is also dependent on prototypes. If
  956. there is no prototype, the argument is promoted to %@AB@%short%@AE@%.  %@NL@%
  957. %@NL@%
  958. The %@AB@%_fastcall %@AE@%convention is not compatible with any of the following
  959. attributes: %@AB@%_interrupt%@AE@%, %@AB@%_saveregs%@AE@%, %@AB@%_export%@AE@%, %@AB@%_cdecl%@AE@%, %@AB@%_fortran%@AE@%, or %@AB@%_pascal%@AE@%.
  960. Consult online help for more information on these attributes.  %@NL@%
  961. %@NL@%
  962. %@NL@%
  963. %@2@%%@CR:C6A00020049 @%%@AB@%2.3  New Language Features%@AE@%%@EH@%%@NL@%
  964. %@NL@%
  965. A number of new language features have been implemented in version 2.5 to
  966. maintain compatibility with Microsoft C version 6.0.%@CR:C6A00020050 @%  %@NL@%
  967. %@NL@%
  968. %@NL@%
  969. %@3@%%@CR:C6A00020051 @%%@AB@%2.3.1  Strings and Macros%@AE@%%@EH@%%@NL@%
  970. %@NL@%
  971. QuickC now allows longer string literals (up to 2K) and longer macro
  972. expansions (up to 12K). In low memory conditions, the macro expansion space
  973. could be limited to 6K.%@CR:C6A00020052 @%%@CR:C6A00020053 @%%@CR:C6A00020054 @%%@CR:C6A00020055 @%  %@NL@%
  974. %@NL@%
  975. %@NL@%
  976. %@3@%%@CR:C6A00020056 @%%@AB@%2.3.2  Tiny Memory Model (.COM Files)%@AE@%%@EH@%%@NL@%
  977. %@NL@%
  978. QuickC 2.5 supports the tiny memory model, which produces .COM files rather
  979. than .EXE files. In the tiny memory model, all of your program code and data
  980. must fit in a single 64K segment.%@CR:C6A00020057 @%%@CR:C6A00020058 @%%@CR:C6A00020059 @%  %@NL@%
  981. %@NL@%
  982. The /AT option selects the tiny model. This option causes the linker to use
  983. the /NOE and /TINY options. Within the linker, /TINY turns on the
  984. /FARCALLTRANSLATION option to help eliminate far-segment relocations. If you
  985. invoke QLINK separately on your own .OBJ files, link with the CRTCOM library
  986. and make it first in the .OBJ list. The /TINY option is incompatible with
  987. the /INCREMENTAL option.  %@NL@%
  988. %@NL@%
  989. %@NL@%
  990. %@3@%%@CR:C6A00020060 @%%@AB@%2.3.3  Custom Memory Models%@AE@%%@EH@%%@NL@%
  991. %@NL@%
  992. For most programs, using one of the standard memory models is sufficient. In
  993. special cases, however, you may need to create a customized memory model.
  994. For example, you might want to create a huge-compact model that would allow
  995. huge data items but only one code segment.%@CR:C6A00020061 @%%@CR:C6A00020062 @%%@CR:C6A00020063 @%  %@NL@%
  996. %@NL@%
  997. You can create a custom memory model with the /A compiler option. /A must be
  998. followed by three letters representing the following memory-model
  999. attributes:  %@NL@%
  1000. %@NL@%
  1001. %@NL@%
  1002.   ■   Code pointer size%@NL@%
  1003. %@NL@%
  1004.   ■   Data pointer size%@NL@%
  1005. %@NL@%
  1006.   ■   Stack- and data-segment setup%@NL@%
  1007. %@NL@%
  1008. %@NL@%
  1009. Table 2.1 shows the options used for defining code pointers, data pointers,
  1010. and stack- and data-segment setup in custom memory models.  %@NL@%
  1011. %@NL@%
  1012. %@AB@%Table   %@AB@%2.1 Custom Memory Model Options%@AE@%%@AE@%
  1013.  
  1014. %@TH:  22   932 02 34 08 34 @%
  1015. Attribute                         Option  Meaning                           
  1016. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1017. Code Addresses                    s       Near (16-bit)
  1018.  
  1019.                                   l       Far (32-bit)
  1020.  
  1021. Data Pointers                     n       Near (6-bit)
  1022.  
  1023.                                   f       Far (32-bit)
  1024.  
  1025.                                   h       Huge (32-bit normalized)
  1026.  
  1027. Stack-and Data-Segment Setup      d       Assume SS==DS (default)
  1028.  
  1029.                                   u       Assume SS!=DS; DS is reloaded on
  1030.                                           function entry.
  1031.  
  1032.                                   w       Assume SS!=DS; DS is not 
  1033.                                           reloaded on function entry.
  1034.  
  1035. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1036.  
  1037. %@TE:  22   932 02 34 08 34 @%
  1038.  
  1039. You must specify all three options, but the letters can follow /A in any
  1040. order. To specify the huge-compact model mentioned earlier, for example, you
  1041. can use /Ashd, /Ahsd, or some other ordering of the following letters: s
  1042. (for near code addresses), h (for huge data pointers), and d (for the
  1043. default data- and stacksegment setup).  %@NL@%
  1044. %@NL@%
  1045. The easiest way to customize a memory model is to use a standard memory
  1046. model and modify the stack-setup option. A stack- and data-segment option
  1047. from Table 2.1 overrides the corresponding part of the standard memory-model
  1048. configuration; Table 2.2 shows the standard models' equivalents. Since /AS
  1049. is the equivalent of /Asnd, then /ASw is the equivalent of /Asnw.  %@NL@%
  1050. %@NL@%
  1051. %@AB@%Table   %@AB@%2.2 Standard Memory Model Equivalents%@AE@%%@AE@%
  1052.  
  1053. %@TH:  17   458 03 22 54 @%
  1054. Standard              Customized
  1055. Memory Model          Equivalent
  1056. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1057. /AT                   none
  1058.  
  1059. /AS                   /Asnd
  1060.  
  1061. /AM                   /Alnd
  1062.  
  1063. /AC                   /Asfd
  1064.  
  1065. /AL                   /Alfd
  1066.  
  1067. /AH                   /Alhd
  1068.  
  1069. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1070.  
  1071. %@TE:  17   458 03 22 54 @%
  1072.  
  1073. %@NL@%
  1074. %@3@%%@CR:C6A00020064 @%%@AB@%2.3.4  Omitting Names of Nested Structures and Unions%@AE@%%@EH@%%@NL@%
  1075. %@NL@%
  1076. If a structure or union is nested inside another structure or union, you can
  1077. declare the inner one without using a variable name. This rule allows you to
  1078. access inner members of such nested constructs using fewer variable names.
  1079. The following example demonstrates this technique using nested structures:%@CR:C6A00020065 @%%@CR:C6A00020066 @%%@CR:C6A00020067 @%  %@NL@%
  1080. %@NL@%
  1081. %@AS@%  #include.h
  1082. %@AS@%  
  1083. %@AS@%  void main( void )
  1084. %@AS@%  {
  1085. %@AS@%   struct ours
  1086. %@AS@%   {
  1087. %@AS@%    int mine, yours;
  1088. %@AS@%   };
  1089. %@AS@%  
  1090. %@AS@%   struct mystruct
  1091. %@AS@%   {
  1092. %@AS@%    float bobber;
  1093. %@AS@%    struct ours;
  1094. %@AS@%    char name[9];
  1095. %@AS@%   } sample;
  1096. %@AS@%  
  1097. %@AS@%   sample.yours = 100;
  1098. %@AS@%   printf( "sample.yours: %i\n", sample.yours );
  1099. %@AS@%  }%@AE@%%@NL@%
  1100. %@NL@%
  1101. The example declares two structure types. The first structure type, named %@AS@%
  1102. %@AS@%ours%@AE@%, contains two %@AB@%int%@AE@% members. The second, named %@AS@% mystruct%@AE@%, contains three
  1103. members, one of which is a structure of type %@AS@% ours%@AE@%.  %@NL@%
  1104. %@NL@%
  1105. The second structure type declares its structure member using only the
  1106. structure tag %@AS@% ours%@AE@%. It does not supply a variable name after the tag:  %@NL@%
  1107. %@NL@%
  1108. %@AS@%  struct ours;%@AE@%%@NL@%
  1109. %@NL@%
  1110. Thus, subsequent parts of the program can access members of the nested
  1111. structure without specifying a name:  %@NL@%
  1112. %@NL@%
  1113. %@AS@%  sample.yours = 100;%@AE@%%@NL@%
  1114. %@NL@%
  1115. In contrast, if the nested structure had been declared using a variable
  1116. name, as in  %@NL@%
  1117. %@NL@%
  1118. %@AS@%  struct ours var_name;%@AE@%%@NL@%
  1119. %@NL@%
  1120. subsequent statements would have to use that name as well:  %@NL@%
  1121. %@NL@%
  1122. %@AS@%  sample.var_name.yours = 100;%@AE@%%@NL@%
  1123. %@NL@%
  1124. As you can see, declaring the nested structure without a variable name saves
  1125. some typing. The same rule applies to unions nested inside structures.  %@NL@%
  1126. %@NL@%
  1127. %@NL@%
  1128. %@3@%%@CR:C6A00020068 @%%@AB@%2.3.5  Unsized Arrays as the Last Member of a Structure%@AE@%%@EH@%%@NL@%
  1129. %@NL@%
  1130. QuickC now allows an unsized or zero-sized array as the last member of a
  1131. structure. The declaration of such a structure would look like this:%@CR:C6A00020069 @%%@CR:C6A00020070 @%%@CR:C6A00020071 @%  %@NL@%
  1132. %@NL@%
  1133. %@AS@%  struct var_length
  1134. %@AS@%  {
  1135. %@AS@%     <set of declarations>;
  1136. %@AS@%     <type> array[];
  1137. %@AS@%  };%@AE@%%@NL@%
  1138. %@NL@%
  1139. Unsized arrays can appear only as the last member of a structure. Structures
  1140. containing unsized array declarations can be nested within other structures
  1141. as long as no further members are declared in any enclosing structures.
  1142. Arrays of such structures are not allowed.  %@NL@%
  1143. %@NL@%
  1144. When you apply the %@AB@%sizeof %@AE@%operator to a variable of this type, or to the
  1145. type itself, QuickC assumes the array has the size zero.  %@NL@%
  1146. %@NL@%
  1147. %@NL@%
  1148. %@3@%%@CR:C6A00020072 @%%@AB@%2.3.6  Improved Warnings%@AE@%%@EH@%%@NL@%
  1149. %@NL@%
  1150. QuickC version 2.5 supports a new warning level (4), which provides even
  1151. more stringent error checking than the warning levels in version 2.0. You
  1152. can set this warning level from the command line by supplying the /W4
  1153. compiler option, or from the QuickC environment with the Compiler Flags
  1154. dialog box shown with the Make command on the Options menu.%@CR:C6A00020073 @%  %@NL@%
  1155. %@NL@%
  1156. At warning level 4, QuickC can generate the following new warnings:  %@NL@%
  1157. %@NL@%
  1158. %@NL@%
  1159.   ■   Nonportable (non-ANSI) constructs%@NL@%
  1160. %@NL@%
  1161.   ■   Undefined or implementation-defined constructs%@NL@%
  1162. %@NL@%
  1163. %@NL@%
  1164. Consult online help for more information about these warnings.  %@NL@%
  1165. %@NL@%
  1166. %@NL@%
  1167. %@3@%%@CR:C6A00020074 @%%@AB@%2.3.7  Macros%@AE@%%@EH@%%@NL@%
  1168. %@NL@%
  1169. The number of macros definable with /D options in QuickC has increased from
  1170. 20 to 30.%@CR:C6A00020075 @%%@CR:C6A00020076 @%  %@NL@%
  1171. %@NL@%
  1172. %@NL@%
  1173. %@2@%%@CR:C6A00020077 @%%@AB@%2.4  Changes and Deletions%@AE@%%@EH@%%@NL@%
  1174. %@NL@%
  1175. This section describes QuickC 2.0 features that are changed or deleted in
  1176. QuickC 2.5. Note that these changes may affect existing programs.  %@NL@%
  1177. %@NL@%
  1178. %@NL@%
  1179. %@3@%%@CR:C6A00020078 @%%@AB@%2.4.1  Deleted Features%@AE@%%@EH@%%@NL@%
  1180. %@NL@%
  1181. The %@AB@%data_seg%@AE@% pragma has been deleted.%@CR:C6A00020079 @%%@CR:C6A00020080 @%  %@NL@%
  1182. %@NL@%
  1183. The memory management routine %@AB@%sbrk%@AE@% has been deleted.  %@NL@%
  1184. %@NL@%
  1185. %@NL@%
  1186. %@3@%%@CR:C6A00020081 @%%@AB@%2.4.2  Conditional Compilation and Signed Values%@AE@%%@EH@%%@NL@%
  1187. %@NL@%
  1188. Version 2.0 of QuickC treats conditional-compilation expressions as %@AB@%signed
  1189. %@AB@%long%@AE@% values. Version 2.5 evaluates these expressions using the same rules as
  1190. expressions in C. For example, the expression%@CR:C6A00020082 @%%@CR:C6A00020083 @%%@CR:C6A00020084 @%  %@NL@%
  1191. %@NL@%
  1192. %@AS@%  #if 0xFFFFFFFFL > 1UL
  1193. %@AS@%  .
  1194. %@AS@%  .
  1195. %@AS@%  .
  1196. %@AS@%  #endif%@AE@%%@NL@%
  1197. %@NL@%
  1198. evaluates as true. It is evaluated as false in version 2.0, since the signed
  1199. value would be less than the unsigned value.  %@NL@%
  1200. %@NL@%
  1201. %@NL@%
  1202. %@3@%%@CR:C6A00020085 @%%@AB@%2.4.3  The const and volatile Qualifiers%@AE@%%@EH@%%@NL@%
  1203. %@NL@%
  1204. The %@AB@%const%@AE@% and %@AB@%volatile %@AE@%qualifiers must be placed after the type they
  1205. qualify. The declaration%@CR:C6A00020086 @%%@CR:C6A00020087 @%  %@NL@%
  1206. %@NL@%
  1207. %@AS@%  int (const *p);%@AE@%%@NL@%
  1208. %@NL@%
  1209. is now treated as a syntax error. Previous versions of QuickC accept this
  1210. construction.  %@NL@%
  1211. %@NL@%
  1212. The following declarations are legal:  %@NL@%
  1213. %@NL@%
  1214. %@AS@%  int const *p_ci;  /* pointer to constant int */
  1215. %@AS@%  int const (*p_ci); /* pointer to constant int */
  1216. %@AS@%  int *const cp_i;  /* constant pointer to int */
  1217. %@AS@%  int (*const cp_i); /* constant pointer to int */%@AE@%%@NL@%
  1218. %@NL@%
  1219. Consult online help for more information about %@AB@%const%@AE@% and %@AB@%volatile%@AE@%.  %@NL@%
  1220. %@NL@%
  1221. %@NL@%
  1222. %@3@%%@CR:C6A00020088 @%%@AB@%2.4.4  Memory Allocation%@AE@%%@EH@%%@NL@%
  1223. %@NL@%
  1224. The %@AB@%_fmalloc %@AE@%function attempts to allocate far memory. In version 2.5,
  1225. %@AB@%_fmalloc%@AE@% returns a null pointer if far memory isn't available, even if near
  1226. memory is available. In previous versions of QuickC, %@AB@%_fmalloc%@AE@% calls %@AB@%_nmalloc
  1227. %@AB@%%@AE@%if far memory is not available.%@CR:C6A00020089 @%%@CR:C6A00020090 @%  %@NL@%
  1228. %@NL@%
  1229. %@NL@%
  1230. %@3@%%@CR:C6A00020091 @%%@AB@%2.4.5  Memory Used by Command-Line Arguments%@AE@%%@EH@%%@NL@%
  1231. %@NL@%
  1232. In QuickC 2.5, the command-line argument strings are allocated through
  1233. %@AB@%malloc%@AE@%, which means they are in far memory in the compact and large memory
  1234. models. Previous versions of QuickC place the command-line argument strings
  1235. and environment strings in the near heap.%@CR:C6A00020092 @%  %@NL@%
  1236. %@NL@%
  1237. %@NL@%
  1238. %@3@%%@CR:C6A00020093 @%%@AB@%2.4.6  Format Specifiers in printf and scanf%@AE@%%@EH@%%@NL@%
  1239. %@NL@%
  1240. The %@AB@%printf%@AE@% format specifier modifiers %@AB@%N%@AE@%, %@AB@%F%@AE@%, %@AB@%h%@AE@%, and%@AB@% l%@AE@% have changed. These
  1241. specifiers are documented in online help.%@CR:C6A00020094 @%%@CR:C6A00020095 @%  %@NL@%
  1242. %@NL@%
  1243. The specifier %@AB@%%Np%@AE@% is a synonym for %@AB@%%hp%@AE@%, but the latter is preferred.
  1244. Likewise, %@AB@%%Fp%@AE@% is a synonym for %@AB@%%lp%@AE@%.  %@NL@%
  1245. %@NL@%
  1246. For %@AB@%scanf%@AE@%, the modifiers %@AB@%N%@AE@% and %@AB@%F%@AE@% refer to the distance to the object being
  1247. read in; that is, whether the pointer itself is allocated near or far. The
  1248. modifiers %@AB@%h%@AE@% and%@AB@% l%@AE@% refer to the size of the object (16-bit near pointer or
  1249. 32-bit far pointer). In these examples,  %@NL@%
  1250. %@NL@%
  1251. %@AS@%  scanf("%Nlp", n_fp);
  1252. %@AS@%  scanf("%Fhp", f_np);%@AE@%%@NL@%
  1253. %@NL@%
  1254. the first line reads an address that resides in near memory (%@AS@%N%@AE@%) but holds a
  1255. 32-bit far pointer variable (%@AS@%lp%@AE@%). The second line reads a near pointer value
  1256. (%@AS@%hp%@AE@%) into a pointer variable that resides in far memory (%@AS@%F%@AE@%).  %@NL@%
  1257. %@NL@%
  1258. %@NL@%
  1259. %@3@%%@CR:C6A00020096 @%%@AB@%2.4.7  Functions that Return Float Values%@AE@%%@EH@%%@NL@%
  1260. %@NL@%
  1261. In QuickC 2.5, a prototype or definition such as%@CR:C6A00020097 @%  %@NL@%
  1262. %@NL@%
  1263. %@AS@%  float funcname();%@AE@%%@NL@%
  1264. %@NL@%
  1265. is interpreted as %@AS@%  %@AE@%%@NL@%
  1266. %@NL@%
  1267. %@AS@%  float funcname()%@AE@%%@NL@%
  1268. %@NL@%
  1269. so the function returns a %@AB@%float%@AE@% value.  %@NL@%
  1270. %@NL@%
  1271. Whereas version 2.0 interprets it as %@AS@%  %@AE@%%@NL@%
  1272. %@NL@%
  1273. %@AS@%  double funcname()%@AE@%%@NL@%
  1274. %@NL@%
  1275. returning a %@AB@%double%@AE@% value.  %@NL@%
  1276. %@NL@%
  1277. %@NL@%
  1278. %@3@%%@CR:C6A00020098 @%%@AB@%2.4.8  The char Variable Alignment%@AE@%%@EH@%%@NL@%
  1279. %@NL@%
  1280. QuickC 2.5 does not align %@AB@%char%@AE@% variables on even addresses unless a variable
  1281. is local. Similarly, literal constant strings are not aligned as they are in
  1282. QuickC version 2.0%@CR:C6A00020099 @%  %@NL@%
  1283. %@NL@%
  1284. %@NL@%
  1285. %@NL@%
  1286. %@NL@%
  1287. %@NL@%
  1288. %@NL@%
  1289. %@CR:C6A00030001 @%%@1@%%@AB@%Chapter 3  Compiler, Linker, and Utility Changes%@AE@%%@EH@%%@NL@%
  1290. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1291. %@NL@%
  1292. The QuickC Compiler version 2.5 supports a variety of new compiler, linker,
  1293. and utility options. Most of these options provide compatibility with
  1294. Microsoft C version 6.0. Since QuickC can be used as a prototyping
  1295. environment for programs that will ultimately be compiled with Microsoft C,
  1296. the compiler supports the development of programs that run under non-DOS
  1297. operating systems. Refer to the Microsoft C version 6.0 documentation for
  1298. additional information.  %@NL@%
  1299. %@NL@%
  1300. This chapter is divided into sections alphabetically listing compiler,
  1301. linker, and utility changes. For detailed information on the options,
  1302. consult the online help.  %@NL@%
  1303. %@NL@%
  1304. %@NL@%
  1305. %@2@%%@CR:C6A00030002 @%%@AB@%3.1  Compiler Options%@AE@%%@EH@%%@NL@%
  1306. %@NL@%
  1307. The following compiler options are new to QuickC 2.5:%@CR:C6A00030003 @%  %@NL@%
  1308. %@NL@%
  1309. %@AB@%Option%@AE@%                            %@AB@%Instruction%@AE@%
  1310. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1311. /A%@AI@%xxx%@AE@%                             Use custom memory model. The %@AI@%xxx%@AE@% is a 
  1312.                                   three-letter representation of the 
  1313.                                   memory-model attributes: code pointer 
  1314.                                   size, data pointer size, and stack and 
  1315.                                   data segment setup. You must use all 
  1316.                                   three letters (in any order) following 
  1317.                                   /A. See Chapter 2, "Language 
  1318.                                   Differences," for additional information.
  1319.  
  1320. /AT                               Use tiny memory model. This option 
  1321.                                   creates a program with the .COM 
  1322.                                   extension. The program has a single 64K 
  1323.                                   segment for both code and data.
  1324.  
  1325. /G1                               Use 80186 instructions.
  1326.  
  1327. /Gd                               Use the %@AB@%_cdecl%@AE@% calling convention for 
  1328.                                   all functions in the module. See Chapter
  1329.                                   2, "Language Differences," for more 
  1330.                                   information.
  1331.  
  1332. /Ge                               Generate calls to the stack-checking 
  1333.                                   routine.
  1334.  
  1335. /Gr                               Use the %@AB@%_fastcall%@AE@% calling convention for
  1336.                                   functions not explicitly given the %@AB@%%@AE@%
  1337.                                   %@AB@%_cdecl%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fortran%@AE@% attribute. 
  1338.                                   See Chapter 2, "Language Differences,"  
  1339.                                   for additional information.
  1340.  
  1341. /ND%@AI@%data_segment_name%@AE@%              Name the data segment of a %@AI@%%@AE@%
  1342.                                   %@AI@%data_segment_name%@AE@% module. This option is
  1343.                                   commonly used to create and compile 
  1344.                                   modules that contain only data.
  1345.  
  1346. /nologo                           Suppress the startup banner display.
  1347.  
  1348. /V%@AI@%string%@AE@%                          Embed %@AI@%string%@AE@%, which specifies a version 
  1349.                                   number, in the object file.
  1350.  
  1351. /W%@AI@%x%@AE@%                               Use warning level %@AI@%x%@AE@%, where %@AI@%x%@AE@% is from 0 
  1352.                                   to 4.
  1353.  
  1354.                                   %@AB@%Level%@AE@%%@AB@%Effect%@AE@%
  1355. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1356.                                   0           Turns off all warnings
  1357.  
  1358.                                   1           Reports only severe errors
  1359.  
  1360.                                   2           Reports intermediate level 
  1361.                                               errors
  1362.  
  1363.                                   3           Warns about    been 
  1364.                                               functions      prototyped
  1365.                                               that have not  
  1366.  
  1367.                                   4           Reports        violations
  1368.                                               detailed       
  1369.                                               warnings and   
  1370.                                               ANSI           
  1371.  
  1372. /WX                               Treat warnings as errors.
  1373.  
  1374. %@NL@%
  1375. %@2@%%@CR:C6A00030004 @%%@AB@%3.2  Linker Options%@AE@%%@EH@%%@NL@%
  1376. %@NL@%
  1377. The following linker options are new to QuickC 2.5:%@CR:C6A00030005 @%  %@NL@%
  1378. %@NL@%
  1379. %@AB@%Option%@AE@%                            %@AB@%Instruction%@AE@%
  1380. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1381. /INC«REMENTAL»                    Prepare the program for subsequent 
  1382.                                   incremental linking with ILINK.
  1383.  
  1384. /NOL«OGO»                         Suppress the sign-on banner when QLINK 
  1385.                                   starts. This option is incompatible with
  1386.                                   the /E and /T
  1387.                                   options.
  1388.  
  1389. /NON«ULLSDOSSEG»                  Arrange segments in a specified order. 
  1390.                                   /NON is equivalent to /DO except that 
  1391.                                   /NON does not insert 16 null bytes at 
  1392.                                   the beginning of the _TEXT segment.
  1393.  
  1394. /PACKC«ODE»                       Use the /PACKC option in place of the 
  1395.                                   /PAC option.
  1396.  
  1397. /PACKD«ATA»                       Group neighboring data segments.
  1398.  
  1399. /PADC«ODE»:%@AI@%bytes%@AE@%                  Add filler %@AI@%bytes%@AE@% to the end of each code
  1400.                                   module.
  1401.  
  1402. /PADD«ATA»:%@AI@%bytes%@AE@%                  Add filler %@AI@%bytes%@AE@% to the end of each data
  1403.                                   module.
  1404.  
  1405. /T«INY»                           Use the /T (tiny) memory model in place 
  1406.                                   of the /BI (binary) option.
  1407.  
  1408. %@NL@%
  1409. %@2@%%@CR:C6A00030006 @%%@AB@%3.3  LIB Options%@AE@%%@EH@%%@NL@%
  1410. %@NL@%
  1411. The following LIB option is new to QuickC 2.5:%@CR:C6A00030007 @%  %@NL@%
  1412. %@NL@%
  1413. %@AB@%Option%@AE@%                            %@AB@%Instruction%@AE@%
  1414. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1415. /NOL«OGO»                         Suppress the sign-on banner.
  1416.  
  1417. %@NL@%
  1418. %@2@%%@CR:C6A00030008 @%%@AB@%3.4  NMAKE Options%@AE@%%@EH@%%@NL@%
  1419. %@NL@%
  1420. The following NMAKE options are new to QuickC 2.5:%@CR:C6A00030009 @%  %@NL@%
  1421. %@NL@%
  1422. %@AB@%Option%@AE@%                            %@AB@%Instruction%@AE@%
  1423. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1424. /NOLOGO                           Suppress the NMAKE sign-on banner.
  1425.  
  1426. /HELP                             Display detailed help about NMAKE 
  1427.                                   options.
  1428.  
  1429. / ?                               Display abbreviated help about NMAKE 
  1430.                                   options.
  1431.  
  1432. %@NL@%
  1433. %@NL@%
  1434. %@NL@%
  1435. %@NL@%
  1436. %@NL@%
  1437. %@CR:C6A00040001 @%%@1@%%@AB@%Chapter 4  Library Changes%@AE@%%@EH@%%@NL@%
  1438. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1439. %@NL@%
  1440. The QuickC Compiler version 2.5 incorporates over 100 new library routines
  1441. to maintain compatibility with Microsoft C version 6.0. This chapter lists
  1442. and briefly summarizes the new library routines by category. For a complete
  1443. description of each routine, refer to online help.  %@NL@%
  1444. %@NL@%
  1445. %@NL@%
  1446. %@2@%%@CR:C6A00040002 @%%@AB@%4.1  Buffer-Manipulation Routines%@AE@%%@EH@%%@NL@%
  1447. %@NL@%
  1448. Routines preceded by the %@AB@%_f%@AE@% prefix are model-independent versions. The %@AB@%_f%@AE@%
  1449. prefix indicates that these routines operate with far pointers.%@CR:C6A00040003 @%%@CR:C6A00040004 @%  %@NL@%
  1450. %@NL@%
  1451. ────────────────────────────────────────────────────────────────────────────%@NL@%
  1452. NOTE
  1453.  
  1454. %@AI@%The buffer-manipulation routines assume that the direction flag is cleared.
  1455. %@AI@%If you are using other functions with the buffer-manipulation functions, you
  1456. %@AI@%must ensure that the other functions leave the direction flag alone or
  1457. %@AI@%restore it to its original condition.%@AE@%%@NL@%
  1458. ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
  1459. %@NL@%
  1460. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%
  1461. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1462. %@AB@%_fmemccpy%@AE@%                         Copies the characters from one buffer to
  1463.                                   another until a given character or a 
  1464.                                   given number of characters has been 
  1465.                                   copied
  1466.  
  1467. %@AB@%_fmemchr%@AE@%                          Returns a pointer to the first 
  1468.                                   occurrence, within a specified number of
  1469.                                   characters, of a given character in the 
  1470.                                   buffer
  1471.  
  1472. %@AB@%_fmemcmp%@AE@%                          Compares a specified number of 
  1473.                                   characters from two buffers
  1474.  
  1475. %@AB@%_fmemcpy%@AE@%                          Copies a specified number of characters 
  1476.                                   from one buffer to another
  1477.  
  1478. %@AB@%_fmemicmp%@AE@%                         Compares a specified number of 
  1479.                                   characters from two buffers without 
  1480.                                   regard to case sensitivity
  1481.  
  1482. %@AB@%_fmemmove%@AE@%                         Copies a specified number of characters 
  1483.                                   from one buffer to another
  1484.  
  1485. %@AB@%_fmemset%@AE@%                          Initializes a specified number of bytes 
  1486.                                   in the buffer with a given character
  1487.  
  1488. %@AB@%_outmem%@AE@%                           Prints text of a specified length from a
  1489.                                   memory buffer
  1490.  
  1491. %@NL@%
  1492. %@2@%%@CR:C6A00040005 @%%@AB@%4.2  Data-Conversion Routines%@AE@%%@EH@%%@NL@%
  1493. %@NL@%
  1494. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@% %@CR:C6A00040006 @%%@CR:C6A00040007 @%
  1495. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1496. %@AB@%_strtold%@AE@%                          Converts a string to a %@AB@%long double%@AE@% value
  1497.  
  1498. %@NL@%
  1499. %@2@%%@CR:C6A00040008 @%%@AB@%4.3  Directory-Control Routines%@AE@%%@EH@%%@NL@%
  1500. %@NL@%
  1501. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@% %@CR:C6A00040009 @%%@CR:C6A00040010 @%
  1502. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1503. %@AB@%_chdrive%@AE@%                          Changes the current drive
  1504.  
  1505. %@AB@%_getdcwd%@AE@%                          Gets the current working directory for 
  1506.                                   the specified drive
  1507.  
  1508. %@AB@%_getdrive%@AE@%                         Gets the current disk drive
  1509.  
  1510. %@NL@%
  1511. %@2@%%@CR:C6A00040011 @%%@AB@%4.4  File-Handling Routines%@AE@%%@EH@%%@NL@%
  1512. %@NL@%
  1513. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%%@CR:C6A00040012 @% %@CR:C6A00040013 @%
  1514. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1515. %@AB@%_fullpath%@AE@%                         Makes an absolute path name from a 
  1516.                                   relative path name
  1517.  
  1518. %@NL@%
  1519. %@2@%%@CR:C6A00040014 @%%@AB@%4.5  Graphics Routines%@AE@%%@EH@%%@NL@%
  1520. %@NL@%
  1521. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%%@CR:C6A00040015 @% %@CR:C6A00040016 @%
  1522. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1523. %@AB@%_getarcinfo%@AE@%                       Determines the endpoints, expressed in 
  1524.                                   viewport coordinates, of the most 
  1525.                                   recently drawn arc or pie
  1526.  
  1527. %@AB@%_getgtextvector%@AE@%                   Gets the current orientation for 
  1528.                                   font-text output
  1529.  
  1530. %@AB@%_gettextwindow%@AE@%                    Gets the current text-window boundaries
  1531.  
  1532. %@AB@%_getwritemode%@AE@%                     Gets the current logical write mode for 
  1533.                                   line drawing
  1534.  
  1535. %@AB@%_grstatus%@AE@%                         Returns the status of the most recent 
  1536.                                   graphics function call
  1537.  
  1538. %@AB@%_polygon%@AE@%,%@AB@%%@AE@%                         Draws or scan-fills a polygon
  1539. %@AB@%_polygon_w%@AE@%,%@AB@%%@AE@%                       
  1540. %@AB@%_polygon_wxy%@AE@%                      
  1541.  
  1542. %@AB@%_scrolltextwindow%@AE@%                 Scrolls the current text window up or 
  1543.                                   down
  1544.  
  1545. %@AB@%_setgtextvector%@AE@%                   Sets the current orientation for 
  1546.                                   font-text output
  1547.  
  1548. %@AB@%_setwritemode%@AE@%                     Sets the logical write mode for line 
  1549.                                   drawing
  1550.  
  1551. %@NL@%
  1552. %@2@%%@CR:C6A00040017 @%%@AB@%4.6  Stream Input and Output Routines%@AE@%%@EH@%%@NL@%
  1553. %@NL@%
  1554. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@% %@CR:C6A00040018 @% %@CR:C6A00040019 @%
  1555. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1556. %@AB@%_fsopen%@AE@%                           Opens a stream with file sharing
  1557.  
  1558. %@NL@%
  1559. %@2@%%@CR:C6A00040020 @%%@AB@%4.7  Internationalization Routines%@AE@%%@EH@%%@NL@%
  1560. %@NL@%
  1561. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@% %@CR:C6A00040021 @% %@CR:C6A00040022 @%
  1562. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1563. %@AB@%localecov%@AE@%                         Sets members of a structure to 
  1564.                                   appropriate values for formatting 
  1565.                                   numeric quantities
  1566.  
  1567. %@AB@%setlocale%@AE@%                         Selects the appropriate locale for the 
  1568.                                   program
  1569.  
  1570. %@AB@%strcoll%@AE@%                           Compares strings using locale-specific 
  1571.                                   information
  1572.  
  1573. %@AB@%strftime%@AE@%                          Formats a data and time string
  1574.  
  1575. %@AB@%strxfrm%@AE@%                           Transforms a string based on 
  1576.                                   locale-specific
  1577.                                   information
  1578.  
  1579. %@NL@%
  1580. %@2@%%@CR:C6A00040023 @%%@AB@%4.8  Math Routines%@AE@%%@EH@%%@NL@%
  1581. %@NL@%
  1582. Routines ending with %@AB@%l%@AE@% support an 80-bit data type for the corresponding
  1583. routines. These routines return a %@AB@%long double%@AE@% value.  %@NL@%
  1584. %@NL@%
  1585. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%%@CR:C6A00040024 @% %@CR:C6A00040025 @%
  1586. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1587. %@AB@%acosl%@AE@%                             Calculates the arccosine
  1588.  
  1589. %@AB@%asinl%@AE@%                             Calculates the arcsine
  1590.  
  1591. %@AB@%atanl%@AE@%                             Calculates the arctangent from tangent
  1592.  
  1593. %@AB@%atan2l%@AE@%                            Calculates the arctangent from %@AI@%x%@AE@%, %@AI@%y%@AE@%
  1594.  
  1595. %@AB@%cabsl%@AE@%                             Finds the absolute value of a complex 
  1596.                                   number
  1597.  
  1598. %@AB@%ceill%@AE@%                             Finds the integer ceiling
  1599.  
  1600. %@AB@%cosl%@AE@%                              Calculates the cosine
  1601.  
  1602. %@AB@%coshl%@AE@%                             Calculates the hyperbolic cosine
  1603.  
  1604. %@AB@%expl%@AE@%                              Calculates the exponential function
  1605.  
  1606. %@AB@%fabsl%@AE@%                             Finds the absolute value
  1607.  
  1608. %@AB@%floorl%@AE@%                            Finds the largest integer less than or 
  1609.                                   equal to the
  1610.                                   argument
  1611.  
  1612. %@AB@%fmodl%@AE@%                             Finds the floating-point remainder
  1613.  
  1614. %@AB@%frexpl%@AE@%                            Calculates an exponential value
  1615.  
  1616. %@AB@%hypotl%@AE@%                            Calculates the hypotenuse of a right 
  1617.                                   triangle
  1618.  
  1619. %@AB@%ldexpl%@AE@%                            Converts the mantissa and exponent to a 
  1620.                                   floating-point value
  1621.  
  1622. %@AB@%logl%@AE@%                              Calculates the natural logarithm
  1623.  
  1624. %@AB@%log10l%@AE@%                            Calculates the base-10 logarithm
  1625.  
  1626. %@AB@%modfl%@AE@%                             Finds the integral and fractional parts 
  1627.                                   of the argument
  1628.  
  1629. %@AB@%powl%@AE@%                              Calculates a value raised to a power
  1630.  
  1631. %@AB@%sinl%@AE@%                              Calculates the sine
  1632.  
  1633. %@AB@%sinhl%@AE@%                             Calculates the hyperbolic sine
  1634.  
  1635. %@AB@%sqrtl%@AE@%                             Finds the square root
  1636.  
  1637. %@AB@%tanl%@AE@%                              Calculates the tangent
  1638.  
  1639. %@AB@%tanhl%@AE@%                             Calculates the hyperbolic tangent
  1640.  
  1641. %@NL@%
  1642. %@2@%%@CR:C6A00040026 @%%@AB@%4.9  Memory-Allocation Routines%@AE@%%@EH@%%@NL@%
  1643. %@NL@%
  1644. Routines beginning with %@AB@%_b%@AE@% apply to based heaps. Routines with the %@AB@%_n%@AE@% prefix
  1645. apply to near heaps. Routines beginning with %@AB@%_f%@AE@% apply to far heaps.%@CR:C6A00040027 @%%@CR:C6A00040028 @%  %@NL@%
  1646. %@NL@%
  1647. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%
  1648. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1649. %@AB@%_bfreeseg%@AE@%                         Frees a based heap
  1650.  
  1651. %@AB@%_bheapseg%@AE@%                         Allocates a based heap
  1652.  
  1653. %@AB@%_bcalloc%@AE@%, %@AB@%_fcalloc%@AE@%, %@AB@%_ncalloc%@AE@%      Allocates storage for an array
  1654.  
  1655. %@AB@%_bexpand%@AE@%, %@AB@%_fexpand%@AE@%, %@AB@%_nexpand%@AE@%      Expands or shrinks a block of memory
  1656.  
  1657. %@AB@%_bfree%@AE@%                            Frees an allocated block
  1658.  
  1659. %@AB@%_heapadd%@AE@%, %@AB@%_bheapadd%@AE@%, %@AB@%_fheapadd%@AE@%, %@AB@%%@AE@%  Adds memory to a heap
  1660. %@AB@%_nheapadd%@AE@%                         
  1661.  
  1662. %@AB@%_bheapchk%@AE@%, %@AB@%_fheapchk%@AE@%, %@AB@%_nheapchk%@AE@%   Checks a heap for consistency
  1663.  
  1664. %@AB@%_heapmin%@AE@%,%@AB@%%@AE@%                         Releases unused memory in a heap
  1665. %@AB@%_bheapmin%@AE@%,%@AB@%%@AE@%                        
  1666. %@AB@%_fheapmin%@AE@%,%@AB@%%@AE@%                        
  1667. %@AB@%_nheapmin%@AE@%                         
  1668.  
  1669. %@AB@%_bheapset%@AE@%                         Fills free heap entries with a specified
  1670.                                   value
  1671.  
  1672. %@AB@%_bheapwalk%@AE@%                        Returns information about each entry in 
  1673.                                   a heap
  1674.  
  1675. %@AB@%_bmalloc%@AE@%                          Allocates a block of memory
  1676.  
  1677. %@AB@%_bmsize%@AE@%                           Returns the size of an allocated block
  1678.  
  1679. %@AB@%_brealloc%@AE@%, %@AB@%_frealloc%@AE@%, %@AB@%_nrealloc%@AE@%   Reallocates a block to a new size
  1680.  
  1681. %@NL@%
  1682. %@2@%%@CR:C6A00040029 @%%@AB@%4.10  Process- and Environment-Control Routines%@AE@%%@EH@%%@NL@%
  1683. %@NL@%
  1684. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@% %@CR:C6A00040030 @%%@CR:C6A00040031 @% %@CR:C6A00040032 @% %@CR:C6A00040033 @%
  1685. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1686. %@AB@%_cexit%@AE@%                            Calls functions registered by %@AB@%atexit%@AE@% and
  1687.                                   %@AB@%onexit%@AE@% (if any), then performs complete 
  1688.                                   exit-termination procedures (such as 
  1689.                                   flushing buffers) and returns control to
  1690.                                   the calling program
  1691.  
  1692. %@AB@%_c_exit%@AE@%                           Performs quick exit-termination 
  1693.                                   procedures and returns control to the 
  1694.                                   calling program
  1695.  
  1696. %@NL@%
  1697. %@2@%%@CR:C6A00040034 @%%@AB@%4.11  String-Manipulation Routines%@AE@%%@EH@%%@NL@%
  1698. %@NL@%
  1699. Routines preceded by the %@AB@%_f%@AE@% prefix are model-independent versions. The %@AB@%_f%@AE@%
  1700. prefix indicates that these routines operate with far pointers.%@CR:C6A00040035 @%%@CR:C6A00040036 @%  %@NL@%
  1701. %@NL@%
  1702. ────────────────────────────────────────────────────────────────────────────%@NL@%
  1703. NOTE
  1704.  
  1705. %@AI@%The string-manipulation routines assume that the direction flag is cleared.
  1706. %@AI@%If you are using other functions with the string-manipulation routines, you
  1707. %@AI@%must ensure that the other routines leave the direction flag alone or
  1708. %@AI@%restore it to its original condition.%@AE@%%@NL@%
  1709.  
  1710.  
  1711. ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
  1712. %@NL@%
  1713. %@AB@%Routine%@AE@%                           %@AB@%Effect%@AE@%
  1714. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1715. %@AB@%_fstrcat%@AE@%                          Appends one string to another
  1716.  
  1717. %@AB@%_fstrchr%@AE@%                          Finds first occurrence of a given 
  1718.                                   character in a string
  1719.  
  1720. %@AB@%_fstrcmp%@AE@%                          Compares two strings
  1721.  
  1722. %@AB@%_fstrcpy%@AE@%                          Copies one string to another
  1723.  
  1724. %@AB@%_fstrcspn%@AE@%                         Finds first occurrence in a string of a 
  1725.                                   character from a given character set 
  1726.  
  1727. %@AB@%_fstrdup%@AE@%, %@AB@%_nstrdup%@AE@%                Duplicates a string
  1728.  
  1729. %@AB@%_fstricmp%@AE@%                         Compares two strings without regard to 
  1730.                                   case
  1731.  
  1732. %@AB@%_fstrlen%@AE@%                          Finds the length of a string
  1733.  
  1734. %@AB@%_fstrlwr%@AE@%                          Converts a string to lowercase
  1735.  
  1736. %@AB@%_fstrncat%@AE@%                         Appends the characters of a string
  1737.  
  1738. %@AB@%_fstrncmp%@AE@%                         Compares the characters of two strings
  1739.  
  1740. %@AB@%_fstrncpy%@AE@%                         Copies the characters of one string to 
  1741.                                   another
  1742.  
  1743. %@AB@%_fstrnicmp%@AE@%                        Compares the characters of two strings 
  1744.                                   without regard to case
  1745.  
  1746. %@AB@%_fstrnset%@AE@%                         Sets the characters of string to a given
  1747.                                   character
  1748.  
  1749. %@AB@%_fstrpbrk%@AE@%                         Finds first occurrence of a character 
  1750.                                   from one string in another
  1751.  
  1752. %@AB@%_fstrrchr%@AE@%                         Finds last occurrence of given character
  1753.                                   in string
  1754.  
  1755. %@AB@%_fstrrev%@AE@%                          Reverses a string
  1756.  
  1757. %@AB@%_fstrset%@AE@%                          Sets all the characters of a string to a
  1758.                                   given character
  1759.  
  1760. %@AB@%_strspn%@AE@%, %@AB@%_fstrspn%@AE@%                 Finds first substring from given a 
  1761.                                   character set in string
  1762.  
  1763. %@AB@%_fstrstr%@AE@%                          Finds first occurrence of a given string
  1764.                                   in another 
  1765.  
  1766. %@AB@%_fstrtok%@AE@%                          Finds next token in a string
  1767.  
  1768. %@AB@%_fstrupr%@AE@%                          Converts a string to uppercase
  1769.  
  1770. %@NL@%
  1771. %@NL@%
  1772. %@NL@%
  1773. %@NL@%
  1774. %@NL@%
  1775. %@CR:C6A00050001 @%%@1@%%@AB@%Chapter 5  Error-Message Reference%@AE@%%@EH@%%@NL@%
  1776. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1777. %@NL@%
  1778. This chapter lists error messages that are new with the QuickC Compiler
  1779. version 2.5. Error messages common to versions 2.0 and 2.5 are documented in
  1780. the %@AI@% Microsoft QuickC Tool Kit%@AE@%.  %@NL@%
  1781. %@NL@%
  1782. %@NL@%
  1783. %@2@%%@CR:C6A00050002 @%%@AB@%5.1  Compiler Errors%@AE@%%@EH@%%@NL@%
  1784. %@NL@%
  1785. The error messages produced by the C compiler fall into three categories:%@CR:C6A00050003 @%  %@NL@%
  1786. %@NL@%
  1787. %@NL@%
  1788.   1.  Fatal-error messages%@NL@%
  1789. %@NL@%
  1790.   2.  Compilation-error messages%@NL@%
  1791. %@NL@%
  1792.   3.  Warning messages%@NL@%
  1793. %@NL@%
  1794. %@NL@%
  1795. New error messages for each category are listed below in numerical order,
  1796. with a brief explanation of each error.  %@NL@%
  1797. %@NL@%
  1798. %@NL@%
  1799. %@3@%%@CR:C6A00050004 @%%@AB@%5.1.1  Fatal-Error Messages%@AE@%%@EH@%%@NL@%
  1800. %@NL@%
  1801. Fatal-error messages indicate a severe problem, one that prevents the
  1802. compiler from processing your program any further. These messages have the
  1803. following format:  %@NL@%
  1804. %@NL@%
  1805. %@AI@%%@AE@%filename%@AS@%(%@AE@%%@AI@%line%@AS@%) : fatal error C1%@AE@%xxx%@AS@%:%@AE@% messagetext%@AE@%  %@NL@%
  1806. %@NL@%
  1807. After the compiler displays a fatal-error message, it terminates without
  1808. producing an object file or checking for further errors.%@CR:C6A00050005 @%%@CR:C6A00050006 @%%@CR:C6A00050007 @%  %@NL@%
  1809. %@NL@%
  1810. %@AB@%Number%@AE@%                            %@AB@%Fatal-Error Message%@AE@%
  1811. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  1812. %@AB@%C1005%@AE@%                             %@AB@%string too big for buffer%@AE@%
  1813.  
  1814.                                   A string in a compiler intermediate file
  1815.                                   overflowed a buffer.  
  1816.  
  1817. %@AB@%C1006%@AE@%                             %@AB@%write error on compiler intermediate %@AE@%
  1818.                                   %@AB@%file%@AE@%
  1819.  
  1820.                                   The compiler was unable to create the 
  1821.                                   intermediate files used in the 
  1822.                                   compilation process.  
  1823.  
  1824. %@AB@%C1011%@AE@%                             %@AB@%compiler limit : '%@AE@%%@AI@%identifier%@AE@%%@AB@%' : macro %@AE@%
  1825.                                   %@AB@%definition too big%@AE@%
  1826.  
  1827.                                   The macro definition was longer than 
  1828.                                   allowed.  
  1829.  
  1830.                                   Split the definition into shorter 
  1831.                                   definitions.  
  1832.  
  1833. %@AB@%C1023%@AE@%                             %@AB@%cannot open source file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  1834.  
  1835.                                   The given file either did not exist, 
  1836.                                   could not be opened, or was not found.  
  1837.  
  1838.                                   Make sure the environment settings are 
  1839.                                   valid and that the correct path name for
  1840.                                   the file is specified.  
  1841.  
  1842.                                   If this error appears without an error 
  1843.                                   message, the compiler has run out of 
  1844.                                   file handles. If in DOS, increase the 
  1845.                                   number of file handles by changing the 
  1846.                                   FILES setting CONFIG.SYS to allow a 
  1847.                                   larger number of open files. FILES=20 is
  1848.                                   the recommended setting.  
  1849.  
  1850. %@AB@%C1024%@AE@%                             %@AB@%cannot open include file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  1851.  
  1852.                                   The specified file in an %@AB@%#include%@AE@% 
  1853.                                   preprocessor directive could not be 
  1854.                                   found.  
  1855.  
  1856.                                   Make sure settings for the INCLUDE and 
  1857.                                   TMP environment variables are valid and 
  1858.                                   that the correct path name for the file 
  1859.                                   is specified.  
  1860.  
  1861.                                   If this error appears without an error 
  1862.                                   message, the compiler has run out of 
  1863.                                   file handles. If in DOS, increase the 
  1864.                                   number of file handles by changing the 
  1865.                                   FILES setting in CONFIG.SYS to allow a 
  1866.                                   larger number of open files. FILES%@AS@%=%@AE@%20 is
  1867.                                   the recommended setting.  
  1868.  
  1869. %@AB@%C1025%@AE@%                             %@AB@%compiler terminated by user%@AE@%
  1870.  
  1871.                                   The compiler was stopped by the user.  
  1872.  
  1873. %@AB@%C1026%@AE@%                             %@AB@%parser stack overflow, please simplify %@AE@%
  1874.                                   %@AB@%your program%@AE@%
  1875.  
  1876.                                   The program cannot be processed because 
  1877.                                   the space required to parse the program 
  1878.                                   causes a stack overflow in the compiler.
  1879.  
  1880.                                   Simplify the program by decreasing the 
  1881.                                   complexity of expressions. Decrease the 
  1882.                                   level of nesting in for and switch 
  1883.                                   statements by putting some of the more 
  1884.                                   deeply nested statements in separate 
  1885.                                   functions. Break up very long 
  1886.                                   expressions involving ',' operators or 
  1887.                                   function calls.  
  1888.  
  1889. %@AB@%C1027%@AE@%                             %@AB@%DGROUP data allocation exceeds 64K%@AE@%
  1890.  
  1891.                                   More than 64K of variables were 
  1892.                                   allocated to the default data segment.  
  1893.  
  1894.                                   For compact-, large-, or huge-model 
  1895.                                   programs, compile with the QCL command 
  1896.                                   and use the /Gt option to move items 
  1897.                                   into separate segments. In small- or 
  1898.                                   medium-model programs, consider 
  1899.                                   explicitly allocating some variables 
  1900.                                   outside of DGROUP by using %@AB@%_based%@AE@% or %@AB@%%@AE@%
  1901.                                   %@AB@%_far%@AE@%.  
  1902.  
  1903. %@AB@%C1033%@AE@%                             %@AB@%cannot open assembly language output %@AE@%
  1904.                                   %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  1905.  
  1906.                                   There are three possible causes for this
  1907.                                   error:  
  1908.  
  1909.                                   ■ The given name is not valid.
  1910.  
  1911.                                   ■ The file cannot be opened for lack of 
  1912.                                   space.
  1913.  
  1914.                                   ■ A read-only file with the given name 
  1915.                                   already exists.
  1916.  
  1917. %@AB@%C1036%@AE@%                             %@AB@%cannot open source listing file '%@AE@%%@AI@%%@AE@%
  1918.                                   %@AI@%filename%@AE@%%@AB@%'%@AE@%
  1919.  
  1920.                                   There are three possible causes for this
  1921.                                   error:  
  1922.  
  1923.                                   ■ The given name is not valid.
  1924.  
  1925.                                   ■ The file cannot be opened for lack of 
  1926.                                   space.
  1927.  
  1928.                                   ■ A read-only file with the given name 
  1929.                                   already exists.
  1930.  
  1931. %@AB@%C1040%@AE@%                             %@AB@%unexpected end-of-file in source file '%@AE@%%@AI@%%@AE@%
  1932.                                   %@AI@%filename%@AE@%%@AB@%'%@AE@%
  1933.  
  1934.                                   The compiler detected an unexpected 
  1935.                                   end-of-file condition while creating a 
  1936.                                   source listing or mingled source/object 
  1937.                                   listing.  
  1938.  
  1939. %@AB@%C1042%@AE@%                             %@AB@%cannot open compiler intermediate file -%@AE@%
  1940.                                   %@AB@%no such file or directory%@AE@%
  1941.  
  1942.                                   The compiler could not create 
  1943.                                   intermediate files for use in the 
  1944.                                   compilation process because the TMP 
  1945.                                   environment variable was set to an 
  1946.                                   invalid directory or path.  
  1947.  
  1948. %@AB@%C1043%@AE@%                             %@AB@%cannot open compiler intermediate file%@AE@%
  1949.  
  1950.                                   The compiler could not create 
  1951.                                   intermediate files for use in the 
  1952.                                   compilation process. The exact reason 
  1953.                                   could not be determined.  
  1954.  
  1955.                                   One of the following may be a solution: 
  1956.  
  1957.                                   ■ Make sure that the environment 
  1958.                                   variable TMP points to a drive and 
  1959.                                   directory in which a file can be created.
  1960.  
  1961.                                   ■ Delete unneeded files in the TMP 
  1962.                                   directory.
  1963.  
  1964. %@AB@%C1044%@AE@%                             %@AB@%out of disk space for compiler %@AE@%
  1965.                                   %@AB@%intermediate file%@AE@%
  1966.  
  1967.                                   The compiler could not create 
  1968.                                   intermediate files for use in the 
  1969.                                   compilation process because no more 
  1970.                                   space was available.  
  1971.  
  1972.                                   Make more space available on the disk 
  1973.                                   pointed to by the TMP environment 
  1974.                                   variable and then recompile.  
  1975.  
  1976. %@AB@%C1050%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : code segment too large%@AE@%
  1977.  
  1978.                                   A code segment grew to within 36 bytes 
  1979.                                   of 64K during compilation.  
  1980.  
  1981.                                   A 36-byte pad is used because of a bug 
  1982.                                   in some 80286 chips that can cause 
  1983.                                   programs to exhibit strange behavior 
  1984.                                   when, among other conditions, the size 
  1985.                                   of a code segment is within 36 bytes of 
  1986.                                   64K.  
  1987.  
  1988. %@AB@%C1057%@AE@%                             %@AB@%unexpected end-of-file in macro %@AE@%
  1989.                                   %@AB@%expansion (missing ')'?)%@AE@%
  1990.  
  1991.                                   The compiler has encountered the end of 
  1992.                                   the source file while gathering the 
  1993.                                   arguments of a macro invocation. Usually
  1994.                                   this is the result of a missing closing 
  1995.                                   parenthesis, ), on the macro invocation.
  1996.  
  1997. %@AB@%C1064%@AE@%                             %@AB@%compiler limit : token overflowed %@AE@%
  1998.                                   %@AB@%internal buffer%@AE@%
  1999.  
  2000.                                   The compiler read an identifier that is 
  2001.                                   longer than the internal buffer used for
  2002.                                   identifier names.  
  2003.  
  2004.                                   Shorten the name and recompile.  
  2005.  
  2006. %@AB@%C1071%@AE@%                             %@AB@%unexpected end-of-file found in comment%@AE@%
  2007.  
  2008.                                   The compiler found the end of a file 
  2009.                                   while scanning a comment.  
  2010.  
  2011.                                   Probably a comment was not terminated. 
  2012.                                   Begin at the end of the file and search 
  2013.                                   backward for the beginning of a comment.
  2014.                                   A comment begins with "/*" and ends with
  2015.                                   "*/" as in:  
  2016.  
  2017.                                   /* This is a comment */  
  2018.  
  2019.                                   A comment may not be split across files.
  2020.  
  2021. %@AB@%C1072%@AE@%                             %@AB@%'%@AE@%%@AI@%filename%@AE@%%@AB@%' : cannot read file%@AE@%
  2022.  
  2023.                                   The compiler encountered an error when 
  2024.                                   trying to read a file.  
  2025.  
  2026.                                   Check the file-access attributes and be 
  2027.                                   sure the disk does not have a bad sector.
  2028.  
  2029. %@AB@%C1090%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' data allocation exceeds 64K%@AE@%
  2030.  
  2031.                                   The size of the named segment exceeds 
  2032.                                   64K.  
  2033.  
  2034.                                   This error occurs with %@AB@%_based%@AE@% allocation.
  2035.  
  2036. %@AB@%C1127%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%': segment redefinition%@AE@%
  2037.  
  2038.                                   A segment was overwritten by another 
  2039.                                   with the same name.  
  2040.  
  2041.                                   For example, compiling in large model 
  2042.                                   with  
  2043.  
  2044.                                   %@AS@%#pragma alloc_text("TEXT", func1)%@AE@%
  2045.  
  2046.                                   creates two segments: the default 
  2047.                                   segment "module_TEXT" and the specified 
  2048.                                   segment "_TEXT". However, in small model,
  2049.                                   the default segment is "_TEXT", and the 
  2050.                                   specified segment "_TEXT" will overwrite
  2051.                                   the default segment.  
  2052.  
  2053. %@NL@%
  2054. %@3@%%@CR:C6A00050008 @%%@AB@%5.1.2  Compilation-Error Messages%@AE@%%@EH@%%@NL@%
  2055. %@NL@%
  2056. The messages listed below indicate that your program has errors. They appear
  2057. in the following format:%@CR:C6A00050009 @%%@CR:C6A00050010 @%  %@NL@%
  2058. %@NL@%
  2059. %@AI@%%@AE@%filename%@AS@%(%@AE@%%@AI@%line%@AS@%) : error C2%@AE@%xxx%@AS@%:%@AE@% messagetext%@AE@%  %@NL@%
  2060. %@NL@%
  2061. When the compiler encounters any of the errors listed in this section, it
  2062. continues parsing the program (if possible) and outputs additional error
  2063. messages. However, no object file is produced.  %@NL@%
  2064. %@NL@%
  2065. %@AB@%Number%@AE@%                            %@AB@%Compilation-Error Message%@AE@%
  2066. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  2067. %@AB@%C2027%@AE@%                             %@AB@%use of undefined enum/struct/union '%@AE@%%@AI@%%@AE@%
  2068.                                   %@AI@%identifier%@AE@%%@AB@%'%@AE@%
  2069.  
  2070.                                   The given identifier referred to a 
  2071.                                   structure or union type that was not 
  2072.                                   defined.  
  2073.  
  2074. %@AB@%C2041%@AE@%                             %@AB@%illegal digit '%@AE@%%@AI@%character%@AE@%%@AB@%' for base '%@AE@%%@AI@%%@AE@%
  2075.                                   %@AI@%number%@AE@%%@AB@%'%@AE@%
  2076.  
  2077.                                   The given character was not a legal 
  2078.                                   digit for the base used.  
  2079.  
  2080. %@AB@%C2080%@AE@%                             %@AB@%illegal far _fastcall function%@AE@%
  2081.  
  2082.                                   A %@AB@%far _fastcall%@AE@% function may not be 
  2083.                                   compiled with the /Gw option, or with 
  2084.                                   the /GW option, if stack checking is 
  2085.                                   enabled.  
  2086.  
  2087. %@AB@%C2121%@AE@%                             %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : bad left/right operand%@AE@%
  2088.  
  2089.                                   The left or right operand of the given 
  2090.                                   operator was illegal for that operator. 
  2091.  
  2092. %@AB@%C2124%@AE@%                             %@AB@%divide or mod by zero%@AE@%
  2093.  
  2094.                                   A constant expression was evaluated and 
  2095.                                   found to have a zero denominator.  
  2096.  
  2097. %@AB@%C2128%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : huge array cannot be %@AE@%
  2098.                                   %@AB@%aligned to segment boundary%@AE@%
  2099.  
  2100.                                   The given huge array was large enough to
  2101.                                   cross two segment boundaries, but could 
  2102.                                   not be aligned to both boundaries to 
  2103.                                   prevent an individual array element from
  2104.                                   crossing a boundary.  
  2105.  
  2106.                                   If the size of a huge array causes it to
  2107.                                   cross two boundaries, the size of each 
  2108.                                   array element must be a power of two, so
  2109.                                   that a whole number of elements will fit
  2110.                                   between two segment boundaries.  
  2111.  
  2112. %@AB@%C2129%@AE@%                             %@AB@%static function '%@AE@%%@AI@%function%@AE@%%@AB@%' not found%@AE@%
  2113.  
  2114.                                   A forward reference was made to a static
  2115.                                   function that was never defined.  
  2116.  
  2117. %@AB@%C2136%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : prototype must have %@AE@%
  2118.                                   %@AB@%parameter types%@AE@%
  2119.  
  2120.                                   A function prototype declarator had 
  2121.                                   formal-parameter names, but no types 
  2122.                                   were provided for the parameters.  
  2123.  
  2124.                                   A formal parameter in a function 
  2125.                                   prototype must either have a type or be 
  2126.                                   represented by an ellipsis (...) to 
  2127.                                   indicate a variable number of arguments 
  2128.                                   and no type checking.  
  2129.  
  2130.                                   One cause of this error is a misspelling
  2131.                                   of a type name in a prototype that does 
  2132.                                   not provide the names of formal 
  2133.                                   parameters.  
  2134.  
  2135. %@AB@%C2154%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : does not refer to a segment %@AE@%
  2136.                                   %@AB@%name%@AE@%
  2137.  
  2138.                                   A %@AB@%_based%@AE@%-allocated variable must be 
  2139.                                   allocated in a segment unless it is 
  2140.                                   extern and uninitialized.  
  2141.  
  2142. %@AB@%C2157%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : must be declared before use%@AE@%
  2143.                                   %@AB@%in pragma list%@AE@%
  2144.  
  2145.                                   The function name in the list of 
  2146.                                   functions for an %@AB@%alloc_text%@AE@% pragma has 
  2147.                                   not been declared prior to being 
  2148.                                   referenced in the list.  
  2149.  
  2150. %@AB@%C2158%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : is a function%@AE@%
  2151.  
  2152.                                   The given identifier was specified in 
  2153.                                   the list of variables in a %@AB@%same_seg%@AE@% 
  2154.                                   pragma but was previously declared as a 
  2155.                                   function.  
  2156.  
  2157. %@AB@%C2163%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : not available as an %@AE@%
  2158.                                   %@AB@%intrinsic function%@AE@%
  2159.  
  2160.                                   A function specified in the list of 
  2161.                                   functions for an intrinsic or function 
  2162.                                   pragma is not one of the functions 
  2163.                                   available in intrinsic form.  
  2164.  
  2165. %@AB@%C2164%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : intrinsic function not %@AE@%
  2166.                                   %@AB@%declared%@AE@%
  2167.  
  2168.                                   The given function was not declared 
  2169.                                   before being used in an intrinsic pragma.
  2170.                                   This error appears only when compiling 
  2171.                                   with the /Oi option.  
  2172.  
  2173. %@AB@%C2167%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : too many actual parameters %@AE@%
  2174.                                   %@AB@%for intrinsic function%@AE@%
  2175.  
  2176.                                   A reference to the intrinsic function 
  2177.                                   name contained too many actual 
  2178.                                   parameters.  
  2179.  
  2180. %@AB@%C2168%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : too few actual parameters %@AE@%
  2181.                                   %@AB@%for intrinsic function%@AE@%
  2182.  
  2183.                                   A reference to the intrinsic function 
  2184.                                   name contained too few actual parameters.
  2185.  
  2186. %@AB@%C2169%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : intrinsic function, cannot %@AE@%
  2187.                                   %@AB@%be defined%@AE@%
  2188.  
  2189.                                   An attempt was made to provide a 
  2190.                                   function definition for a function 
  2191.                                   already declared as an intrinsic.  
  2192.  
  2193. %@AB@%C2170%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : not declared as a %@AE@%
  2194.                                   %@AB@%function, cannot be intrinsic%@AE@%
  2195.  
  2196.                                   The intrinsic pragma was used for an 
  2197.                                   item other than a function, or for a 
  2198.                                   function that does not have an intrinsic
  2199.                                   form.  
  2200.  
  2201. %@AB@%C2178%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : storage class for %@AE@%
  2202.                                   %@AB@%same_seg variables must be extern%@AE@%
  2203.  
  2204.                                   The given variable was specified in a %@AB@%%@AE@%
  2205.                                   %@AB@%same_seg%@AE@% pragma, but it was not declared
  2206.                                   with extern storage class.  
  2207.  
  2208. %@AB@%C2179%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : was used in same_seg%@AE@%%@AB@%, but%@AE@%
  2209.                                   %@AB@%storage class is no longer extern%@AE@%
  2210.  
  2211.                                   The given variable was specified in a %@AB@%%@AE@%
  2212.                                   %@AB@%same_seg%@AE@% pragma, but it was redeclared 
  2213.                                   with a storage class other than extern. 
  2214.  
  2215. %@AB@%C2185%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : illegal _based allocation%@AE@%
  2216.  
  2217.                                   A %@AB@%_based%@AE@%-allocated variable that 
  2218.                                   explicitly has extern storage class and 
  2219.                                   is uninitialized may not have a base of 
  2220.                                   any of the following:  
  2221.  
  2222.                                   ■ (_segment) & var
  2223.  
  2224.                                   ■ _segname("_STACK")
  2225.  
  2226.                                   ■ (_segment)_self
  2227.  
  2228.                                   ■ void
  2229.  
  2230.                                   If the variable does not explicitly have
  2231.                                   extern storage class or it is 
  2232.                                   uninitialized, then its base must use 
  2233.                                   _segname("g") where g is any segment 
  2234.                                   name or reserved segment name except 
  2235.                                   "_STACK".  
  2236.  
  2237. %@AB@%C2189%@AE@%                             %@AB@%#error : '%@AE@%%@AI@%string%@AE@%%@AB@%'%@AE@%
  2238.  
  2239.                                   An %@AB@%#error%@AE@% directive was encountered. The
  2240.                                   %@AI@%string%@AE@% is the descriptive text supplied 
  2241.                                   in the directive.  
  2242.  
  2243. %@AB@%C2193%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : already in a segment%@AE@%
  2244.  
  2245.                                   A variable in the %@AB@%same_seg%@AE@% pragma has 
  2246.                                   already been allocated in a segment, 
  2247.                                   using %@AB@%_based%@AE@%.  
  2248.  
  2249. %@AB@%C2194%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : is a text segment%@AE@%
  2250.  
  2251.                                   The given text segment was used where a %@AB@%%@AE@%
  2252.                                   %@AB@%data%@AE@%, %@AB@%const%@AE@%, or %@AB@%bss%@AE@% segment was expected.
  2253.  
  2254. %@AB@%C2195%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : is a data segment%@AE@%
  2255.  
  2256.                                   The given data segment was used where a 
  2257.                                   text segment was expected.  
  2258.  
  2259. %@AB@%C2196%@AE@%                             %@AB@%/ML cannot be used with floating point%@AE@%
  2260.  
  2261.                                   The /ML option requires alternate math. 
  2262.                                   QuickC does not support alternate math. 
  2263.                                   The /ML option is allowed only when no 
  2264.                                   floating-point code is used.  
  2265.  
  2266. %@AB@%C2200%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function has already been %@AE@%
  2267.                                   %@AB@%defined%@AE@%
  2268.  
  2269.                                   A function name passed as an argument in
  2270.                                   an %@AB@%alloc_text%@AE@% pragma has already been 
  2271.                                   defined.  
  2272.  
  2273. %@AB@%C2201%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : storage class must be %@AE@%
  2274.                                   %@AB@%extern%@AE@%
  2275.  
  2276.                                   A function declaration appears within a 
  2277.                                   block, but the function is not declared 
  2278.                                   extern. This causes an error if the /Za 
  2279.                                   option is in effect.  
  2280.  
  2281.                                   For example, the following example code 
  2282.                                   causes this error, when compiled  with 
  2283.                                   /Za:  
  2284.  
  2285.                                   %@AS@%main()%@AE@%
  2286.                                   %@AS@%{%@AE@%
  2287.                                   %@AS@%    static int func1();%@AE@%
  2288.                                   %@AS@%}%@AE@%
  2289.  
  2290. %@AB@%C2207%@AE@%                             %@AB@%'%@AE@%%@AI@%member%@AE@%%@AB@%' in struct/union '%@AE@%%@AI@%tag%@AE@%%@AB@%' has a %@AE@%
  2291.                                   %@AB@%zero-sized array%@AE@%
  2292.  
  2293.                                   The given member in the given structure 
  2294.                                   or union contains an array without a 
  2295.                                   subscript or with a zero subscript. Such
  2296.                                   an array is legal only as the last 
  2297.                                   member of a structure or union.  
  2298.  
  2299. %@AB@%C2208%@AE@%                             %@AB@%no members defined using this type%@AE@%
  2300.  
  2301.                                   An %@AB@%enum%@AE@%, %@AB@%struct%@AE@%, or %@AB@%union%@AE@% was defined 
  2302.                                   without any members. This is an error 
  2303.                                   only when compiling with /Za; otherwise,
  2304.                                   it is a warning.  
  2305.  
  2306. %@AB@%C2209%@AE@%                             %@AB@%type cast in _based construct must be %@AE@%
  2307.                                   %@AB@%(_segment)%@AE@%
  2308.  
  2309.                                   The only type allowed within a cast in a
  2310.                                   %@AB@%_based%@AE@% declarator is (%@AB@%_segment%@AE@%).  
  2311.  
  2312. %@AB@%C2210%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : must be near/far data %@AE@%
  2313.                                   %@AB@%pointer%@AE@%
  2314.  
  2315.                                   The base in a %@AB@%_based%@AE@% declarator may not 
  2316.                                   be an array, a function, or a %@AB@%_based%@AE@% 
  2317.                                   pointer.  
  2318.  
  2319. %@AB@%C2211%@AE@%                             %@AB@%(_segment) applied to function %@AE@%
  2320.                                   %@AB@%identifier '%@AE@%%@AI@%function%@AE@%%@AB@%'%@AE@%
  2321.  
  2322.                                   The item cast in a %@AB@%_based%@AE@% declarator 
  2323.                                   must not be a function.  
  2324.  
  2325. %@AB@%C2212%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : _based not available for %@AE@%
  2326.                                   %@AB@%functions/pointers to functions%@AE@%
  2327.  
  2328.                                   Functions cannot be %@AB@%_based%@AE@%-allocated. 
  2329.                                   Use the %@AB@%alloc_text%@AE@% pragma.  
  2330.  
  2331. %@AB@%C2213%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : illegal argument to %@AE@%
  2332.                                   %@AB@%_based%@AE@%
  2333.  
  2334.                                   A symbol used as a base must have type %@AB@%%@AE@%
  2335.                                   %@AB@%_segment%@AE@% or be a near or far pointer.  
  2336.  
  2337. %@AB@%C2214%@AE@%                             %@AB@%pointers based on void require the use %@AE@%
  2338.                                   %@AB@%of :>%@AE@%
  2339.  
  2340.                                   A %@AB@%_based%@AE@% pointer based on void cannot be
  2341.                                   dereferenced. Use the :> operator to 
  2342.                                   create an address that can be 
  2343.                                   dereferenced.  
  2344.  
  2345. %@AB@%C2215%@AE@%                             %@AB@%:> operator only for objects based on %@AE@%
  2346.                                   %@AB@%void%@AE@%
  2347.  
  2348.                                   The right operand of the :> operator 
  2349.                                   must be a pointer based on void, as in  
  2350.  
  2351.                                   %@AS@%char _based(void) *cbvpi%@AE@%
  2352.  
  2353. %@AB@%C2216%@AE@%                             %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' may not be used with '%@AE@%%@AI@%%@AE@%
  2354.                                   %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
  2355.  
  2356.                                   The given function attributes are 
  2357.                                   incompatible.  
  2358.  
  2359.                                   Some combinations of attributes that 
  2360.                                   cause this error are  
  2361.  
  2362.                                   ■ %@AB@%_saveregs%@AE@% and %@AB@%_interrupt%@AE@%
  2363.  
  2364.                                   ■ %@AB@%_fastcall%@AE@% and %@AB@%_saveregs%@AE@%
  2365.  
  2366.                                   ■ %@AB@%_fastcall%@AE@% and %@AB@%_interrupt%@AE@%
  2367.  
  2368.                                   ■ %@AB@%_fastcall%@AE@% and %@AB@%_export%@AE@%
  2369.  
  2370. %@AB@%C2217%@AE@%                             %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' must be used with '%@AE@%%@AI@%%@AE@%
  2371.                                   %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
  2372.  
  2373.                                   The first function attribute requires 
  2374.                                   the second attribute to be used.  
  2375.  
  2376.                                   Some causes for this error include  
  2377.  
  2378.                                   ■ An interrupt function explicitly 
  2379.                                   declared as near. Interrupt functions 
  2380.                                   must
  2381.                                   be far.
  2382.  
  2383.                                   ■ An interrupt function or a function 
  2384.                                   with a variable number of arguments, 
  2385.                                   when that function is declared with the %@AB@%%@AE@%
  2386.                                   %@AB@%_fortran%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fastcall%@AE@% 
  2387.                                   attribute. Functions declared with the 
  2388.                                   _interrupt attribute or with a variable 
  2389.                                   number of arguments must use the C 
  2390.                                   calling conventions. Remove the %@AB@%%@AE@%
  2391.                                   %@AB@%_fortran%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fastcall%@AE@% 
  2392.                                   attribute from the function declaration.
  2393.  
  2394. %@AB@%C2218%@AE@%                             %@AB@%type in _based construct must be void%@AE@%
  2395.  
  2396.                                   The only type allowed within a %@AB@%_based%@AE@% 
  2397.                                   construct is %@AB@%void%@AE@%.  
  2398.  
  2399. %@AB@%C2219%@AE@%                             %@AB@%syntax error : type qualifier must be %@AE@%
  2400.                                   %@AB@%after '*'%@AE@%
  2401.  
  2402.                                   Either %@AB@%const%@AE@% or %@AB@%volatile%@AE@% appeared where 
  2403.                                   a type or qualifier is not allowed, as 
  2404.                                   in  
  2405.  
  2406.                                   %@AS@%int (const *p);%@AE@%
  2407.  
  2408. %@AB@%C2220%@AE@%                             %@AB@%warning treated as error - no object %@AE@%
  2409.                                   %@AB@%file generated%@AE@%
  2410.  
  2411.                                   When the compiler option /WX is used, 
  2412.                                   the first warning generated by the 
  2413.                                   compiler causes this error message to be
  2414.                                   displayed.  
  2415.  
  2416.                                   Either correct the condition that caused
  2417.                                   the warning, or compile at a lower 
  2418.                                   warning level or without /WX.  
  2419.  
  2420. %@AB@%C2221%@AE@%                             %@AB@%'.' : left operand points to %@AE@%
  2421.                                   %@AB@%struct/union, use '->'%@AE@%
  2422.  
  2423.                                   The left operand of the '.' operator 
  2424.                                   must be a struct/union type. It cannot 
  2425.                                   be a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.  
  2426.  
  2427.                                   This error usually means that a '->' 
  2428.                                   operator must be used.  
  2429.  
  2430. %@AB@%C2222%@AE@%                             %@AB@%'->' : left operand has struct/union %@AE@%
  2431.                                   %@AB@%type, use '.'%@AE@%
  2432.  
  2433.                                   The left operand of the '->' operator 
  2434.                                   must be a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
  2435.                                   It cannot be a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.  
  2436.  
  2437.                                   This error usually means that a '.' 
  2438.                                   operator must be used.  
  2439.  
  2440. %@AB@%C2223%@AE@%                             %@AB@%left of '%@AE@%%@AI@%-> member%@AE@%%@AB@%' must point to %@AE@%
  2441.                                   %@AB@%struct/union%@AE@%
  2442.  
  2443.                                   The left operand of the '->' operator is
  2444.                                   not a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.  
  2445.  
  2446.                                   This error can occur when the left 
  2447.                                   operand is an undefined variable. 
  2448.                                   Undefined variables have type %@AB@%int%@AE@%.  
  2449.  
  2450. %@AB@%C2224%@AE@%                             %@AB@%left of '%@AE@%%@AI@%.member%@AE@%%@AB@%' must have struct/union%@AE@%
  2451.                                   %@AB@%type%@AE@%
  2452.  
  2453.                                   The left operand of the '.' operator is 
  2454.                                   not a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.  
  2455.  
  2456.                                   This error can occur when the left 
  2457.                                   operand is an undefined variable. 
  2458.                                   Undefined variables have type %@AB@%int%@AE@%.  
  2459.  
  2460. %@AB@%C2225%@AE@%                             %@AB@%'%@AE@%%@AI@%tagname%@AE@%%@AB@%' : first member of struct is %@AE@%
  2461.                                   %@AB@%unnamed%@AE@%
  2462.  
  2463.                                   The %@AB@%struct%@AE@% with the given tag started 
  2464.                                   with an unnamed member (an alignment 
  2465.                                   member). %@AB@%Struct%@AE@% definitions must start 
  2466.                                   with a named member.  
  2467.  
  2468. %@AB@%C2418%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : not in a register%@AE@%
  2469.  
  2470.                                   An in-line assembler instruction 
  2471.                                   referenced a variable with register 
  2472.                                   storage class that has not actually been
  2473.                                   allocated in a register.  
  2474.  
  2475.                                   To correct this, remove the register 
  2476.                                   keyword from the variable definition, 
  2477.                                   and make sure that this instruction is 
  2478.                                   legal with a memory operand.  
  2479.  
  2480. %@AB@%C2429%@AE@%                             %@AB@%'%@AE@%%@AI@%label%@AE@%%@AB@%' : illegal far label reference%@AE@%
  2481.  
  2482.                                   %@AB@%FAR PTR%@AE@% may not be used on jumps or 
  2483.                                   calls to labels. Far references to 
  2484.                                   functions are allowed as long as the 
  2485.                                   function has been declared.  
  2486.  
  2487. %@NL@%
  2488. %@3@%%@CR:C6A00050011 @%%@AB@%5.1.3  Warning Messages%@AE@%%@EH@%%@NL@%
  2489. %@NL@%
  2490. The messages listed in this section indicate potential problems but do not
  2491. hinder compiling and linking.%@CR:C6A00050012 @%%@CR:C6A00050013 @%%@CR:C6A00050014 @%  %@NL@%
  2492. %@NL@%
  2493. %@AB@%Number %@AE@%                           %@AB@%Warning Message%@AE@%
  2494. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  2495. %@AB@%C4001%@AE@%                             %@AB@%nonstandard extension used - '%@AE@%%@AI@%extension%@AE@%%@AB@%'%@AE@%
  2496.  
  2497.                                   The given nonstandard language extension
  2498.                                   was used when the /Ze option was 
  2499.                                   specified.  
  2500.  
  2501.                                   If the /Za option has been specified, 
  2502.                                   this condition generates a syntax error.
  2503.  
  2504. %@AB@%C4007%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : must be '%@AE@%%@AI@%attribute%@AE@%%@AB@%'%@AE@%
  2505.  
  2506.                                   The attribute of the given function was 
  2507.                                   not explicitly stated. The compiler 
  2508.                                   forced the attribute.  
  2509.  
  2510.                                   For example, the function main must have
  2511.                                   the %@AB@%_cdecl%@AE@% attribute.  
  2512.  
  2513. %@AB@%C4008%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : _fastcall attribute on %@AE@%
  2514.                                   %@AB@%data ignored%@AE@%
  2515.  
  2516.                                   The %@AB@%_fastcall%@AE@% attribute on the given 
  2517.                                   data identifier was ignored.  
  2518.  
  2519. %@AB@%C4023%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : _based pointer passed to %@AE@%
  2520.                                   %@AB@%unprototyped function: parameter '%@AE@%%@AI@%number%@AE@%
  2521.                                   %@AB@%'%@AE@%
  2522.  
  2523.                                   When in a near data model, only the 
  2524.                                   offset portion of a %@AB@%_based%@AE@% pointer is 
  2525.                                   passed to an unprototyped function. If 
  2526.                                   the function expects a far pointer, the 
  2527.                                   resulting code will be wrong. In any 
  2528.                                   data model, if the function is defined 
  2529.                                   to take a %@AB@%_based%@AE@% pointer with a 
  2530.                                   different base, the resulting code may 
  2531.                                   be unpredictable.  
  2532.  
  2533.                                   If a prototype is used before the call, 
  2534.                                   the call will be generated correctly.  
  2535.  
  2536. %@AB@%C4050%@AE@%                             %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : different code attributes%@AE@%
  2537.  
  2538.                                   The function-pointer expressions used 
  2539.                                   with %@AI@%operator%@AE@% had different code 
  2540.                                   attributes. The attribute involved is 
  2541.                                   either %@AB@%_export%@AE@% or%@AB@%_loadds%@AE@%.  
  2542.  
  2543.                                   This is a warning and not an error, 
  2544.                                   because %@AB@%_export%@AE@% and %@AB@%_loadds%@AE@% affect only 
  2545.                                   entry sequences and not calling 
  2546.                                   conventions.  
  2547.  
  2548. %@AB@%C4054%@AE@%                             %@AB@%insufficient memory may affect %@AE@%
  2549.                                   %@AB@%optimization%@AE@%
  2550.  
  2551.                                   Not enough memory was available to do 
  2552.                                   all requested optimizations. This 
  2553.                                   message appears if available memory is 
  2554.                                   within 64K of the absolute minimum that 
  2555.                                   will accommodate the executable file.  
  2556.  
  2557. %@AB@%C4056%@AE@%                             %@AB@%floating-point overflow%@AE@%
  2558.  
  2559.                                   The compiler generated a floating-point 
  2560.                                   exception while doing constant 
  2561.                                   arithmetic on floating-point items at 
  2562.                                   compile time.  
  2563.  
  2564.                                   For example:  
  2565.  
  2566.                                   %@AS@%float fp_val = 1.0e100;%@AE@%
  2567.  
  2568.                                   In this example, the floating-point 
  2569.                                   constant %@AS@% 1.0e100 %@AE@% exceeds the maximum 
  2570.                                   allowable value for a double-precision 
  2571.                                   data item.  
  2572.  
  2573. %@AB@%C4059%@AE@%                             %@AB@%segment lost in conversion%@AE@%
  2574.  
  2575.                                   The conversion of a far pointer (a full 
  2576.                                   segmented address) or %@AB@%_based%@AE@% pointer to 
  2577.                                   a near pointer (a segment offset) or %@AB@%%@AE@%
  2578.                                   %@AB@%_based%@AE@% pointer resulted in the loss of 
  2579.                                   the segment address.  
  2580.  
  2581. %@AB@%C4063%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function too large for %@AE@%
  2582.                                   %@AB@%post-optimizer%@AE@%
  2583.  
  2584.                                   Not enough space was available to 
  2585.                                   optimize the given function.  
  2586.  
  2587.                                   One of the following may be a solution: 
  2588.  
  2589.                                   ■ Recompile with fewer optimizations.
  2590.  
  2591.                                   ■ Divide the function into two or more 
  2592.                                   smaller functions.
  2593.  
  2594. %@AB@%C4065%@AE@%                             %@AB@%recoverable heap overflow in %@AE@%
  2595.                                   %@AB@%post-optimizer - some optimizations may %@AE@%
  2596.                                   %@AB@%be missed%@AE@%
  2597.  
  2598.                                   Some optimizations were skipped because 
  2599.                                   not enough space was available for 
  2600.                                   optimization.  
  2601.  
  2602.                                   One of the following may be a solution: 
  2603.  
  2604.                                   ■ Recompile with fewer optimizations.
  2605.  
  2606.                                   ■ Divide the function into two or more 
  2607.                                   smaller functions.
  2608.  
  2609. %@AB@%C4066%@AE@%                             %@AB@%local symbol-table overflow - some local%@AE@%
  2610.                                   %@AB@%symbols may be missing in listings%@AE@%
  2611.  
  2612.                                   The listing generator ran out of heap 
  2613.                                   space for local variables, so the source
  2614.                                   listing may not contain symbol-table 
  2615.                                   information for all local variables.  
  2616.  
  2617. %@AB@%C4067%@AE@%                             %@AB@%unexpected characters following '%@AE@%%@AI@%%@AE@%
  2618.                                   %@AI@%directive%@AE@%%@AB@%' directive - newline expected%@AE@%
  2619.  
  2620.                                   Extra characters followed a preprocessor
  2621.                                   directive and were ignored. This warning
  2622.                                   appears only when compiling with the /Za
  2623.                                   option.  
  2624.  
  2625.                                   For example, the following code causes 
  2626.                                   this warning:  
  2627.  
  2628.                                   %@AS@%#endif    NO_EXT_KEYS%@AE@%
  2629.  
  2630.                                   To remove the warning, compile with /Ze 
  2631.                                   or use comment delimiters:  
  2632.  
  2633.                                   %@AS@%#endif    /* NO_EXT_KEYS */%@AE@%
  2634.  
  2635. %@AB@%C4072%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : no function prototype on %@AE@%
  2636.                                   %@AB@%_fastcall function%@AE@%
  2637.  
  2638.                                   A %@AB@%_fastcall%@AE@% function was called without 
  2639.                                   first being prototyped.  
  2640.  
  2641.                                   Functions that are %@AB@%_fastcall%@AE@% should be 
  2642.                                   prototyped to guarantee that the 
  2643.                                   registers assigned at each point of call
  2644.                                   are the same as the registers assumed 
  2645.                                   when the function is defined. A function
  2646.                                   defined in the new ANSI style is a 
  2647.                                   prototype.  
  2648.  
  2649.                                   A prototype must be added when this 
  2650.                                   warning appears, unless the function 
  2651.                                   takes no arguments or takes only 
  2652.                                   arguments that cannot be passed in the 
  2653.                                   general- purpose registers.  
  2654.  
  2655. %@AB@%C4073%@AE@%                             %@AB@%scoping too deep, deepest scoping merged%@AE@%
  2656.                                   %@AB@%when debugging%@AE@%
  2657.  
  2658.                                   Declarations appeared at a static 
  2659.                                   nesting level greater than 13. As a 
  2660.                                   result, all de-clarations beyond this 
  2661.                                   level will seem to appear at the same 
  2662.                                   level.  
  2663.  
  2664. %@AB@%C4078%@AE@%                             %@AB@%case constant '%@AE@%%@AI@%value%@AE@%%@AB@%' too big for the %@AE@%
  2665.                                   %@AB@%type of switch expression%@AE@%
  2666.  
  2667.                                   A value appearing in a case statement 
  2668.                                   was larger than the size of the type in 
  2669.                                   the %@AB@%switch%@AE@% expression. The compiler 
  2670.                                   converted the case value to the type of 
  2671.                                   the %@AB@%switch%@AE@% expression.  
  2672.  
  2673.                                   A problem can occur when two case 
  2674.                                   constants have different values before 
  2675.                                   being cast but the same value afterward.
  2676.  
  2677. %@AB@%C4080%@AE@%                             %@AB@%expected identifier for segment name, %@AE@%
  2678.                                   %@AB@%found '%@AE@%%@AI@%token%@AE@%%@AB@%'%@AE@%
  2679.  
  2680.                                   The first argument in the argument list 
  2681.                                   for the %@AB@%alloc_text%@AE@% pragma is missing a 
  2682.                                   segment name. This happens if the first 
  2683.                                   token in the argument list is not an 
  2684.                                   identifier.  
  2685.  
  2686.                                   The pragma was ignored.  
  2687.  
  2688. %@AB@%C4081%@AE@%                             %@AB@%expected a comma, found '%@AE@%%@AI@%token%@AE@%%@AB@%'%@AE@%
  2689.  
  2690.                                   A comma (,) was missing between two 
  2691.                                   arguments of a pragma.  
  2692.  
  2693.                                   The pragma was ignored.  
  2694.  
  2695. %@AB@%C4096%@AE@%                             %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' must be used with '%@AE@%%@AI@%%@AE@%
  2696.                                   %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
  2697.  
  2698.                                   The use of %@AI@%attribute2%@AE@% requires the use 
  2699.                                   of %@AI@%attribute1%@AE@%.  
  2700.  
  2701.                                   For example, using a variable number of 
  2702.                                   arguments (...) requires that %@AB@%_cdecl%@AE@% be 
  2703.                                   used. Also, _interrupt functions must be
  2704.                                   %@AB@%_far%@AE@% and %@AB@%_cdecl%@AE@%.  
  2705.  
  2706.                                   The compiler assumed %@AI@%attribute1%@AE@% for the 
  2707.                                   function.  
  2708.  
  2709. %@AB@%C4104%@AE@%                             %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : near data in same_seg %@AE@%
  2710.                                   %@AB@%pragma, ignored%@AE@%
  2711.  
  2712.                                   The given near variable was specified in
  2713.                                   a %@AB@%same_seg%@AE@% pragma.  
  2714.  
  2715.                                   The %@AI@%identifier%@AE@% was ignored.  
  2716.  
  2717. %@AB@%C4106%@AE@%                             %@AB@%pragma requires integer between 1 and %@AE@%
  2718.                                   %@AB@%127%@AE@%
  2719.  
  2720.                                   An integer constant in the range 1-127 
  2721.                                   must be specified with the %@AB@%page%@AE@% and %@AB@%skip%@AE@%
  2722.                                   pragmas.  
  2723.  
  2724.                                   The compiler assumed 1 was specified.  
  2725.  
  2726. %@AB@%C4107%@AE@%                             %@AB@%pragma requires integer between 15 and %@AE@%
  2727.                                   %@AB@%255%@AE@%
  2728.  
  2729.                                   An integer constant in the range 15-255 
  2730.                                   must be specified with the %@AB@%pagesize%@AE@% 
  2731.                                   pragma.  
  2732.  
  2733.                                   The compiler assumed 63 was specified.  
  2734.  
  2735. %@AB@%C4108%@AE@%                             %@AB@%pragma requires integer between 79 and %@AE@%
  2736.                                   %@AB@%132%@AE@%
  2737.  
  2738.                                   An integer constant in the range 79-132 
  2739.                                   must be specified with the %@AB@%linesize%@AE@% 
  2740.                                   pragma.  
  2741.  
  2742.                                   The compiler assumed 79 was specified.  
  2743.  
  2744. %@AB@%C4119%@AE@%                             %@AB@%different bases '%@AE@%%@AI@%name1%@AE@%%@AB@%' and '%@AE@%%@AI@%name2%@AE@%%@AB@%' %@AE@%
  2745.                                   %@AB@%specified%@AE@%
  2746.  
  2747.                                   The %@AB@%_based%@AE@% pointers in the expression 
  2748.                                   have different symbolic bases. There may
  2749.                                   be truncation or loss in the code 
  2750.                                   generated.  
  2751.  
  2752. %@AB@%C4120%@AE@%                             %@AB@%_based/unbased mismatch%@AE@%
  2753.  
  2754.                                   The expression contains a conversion 
  2755.                                   between a %@AB@%_based%@AE@% pointer and another 
  2756.                                   pointer that is unbased. Some 
  2757.                                   information may have been truncated.  
  2758.  
  2759.                                   This warning commonly occurs when a %@AB@%%@AE@%
  2760.                                   %@AB@%_based%@AE@% pointer is passed to a function 
  2761.                                   that accepts a near or far pointer.  
  2762.  
  2763. %@AB@%C4123%@AE@%                             %@AB@%different base expressions specified%@AE@%
  2764.  
  2765.                                   The expression contains a conversion 
  2766.                                   between %@AB@%_based%@AE@% pointers, but the base 
  2767.                                   expressions of the %@AB@%_based%@AE@% pointers are 
  2768.                                   different. Some of the %@AB@%_based%@AE@% 
  2769.                                   conversions may be unexpected.  
  2770.  
  2771. %@AB@%C4124%@AE@%                             %@AB@%_fastcall with stack checking is %@AE@%
  2772.                                   %@AB@%inefficient%@AE@%
  2773.  
  2774.                                   The %@AB@%_fastcall%@AE@% keyword is used for 
  2775.                                   generating fast code, but stack checking
  2776.                                   causes slower code to be generated.  
  2777.  
  2778.                                   Use the /Gs option or the %@AB@%check_stack%@AE@% 
  2779.                                   pragma to turn off stack checking when 
  2780.                                   using %@AB@%_fastcall%@AE@%.  
  2781.  
  2782.                                   This warning is informational and is 
  2783.                                   issued only for the first function 
  2784.                                   declared under these conditions.  
  2785.  
  2786. %@AB@%C4125%@AE@%                             %@AB@%decimal digit terminates octal escape %@AE@%
  2787.                                   %@AB@%sequence%@AE@%
  2788.  
  2789.                                   An octal escape sequence in a character 
  2790.                                   or string constant was terminated with a
  2791.                                   decimal digit.  
  2792.  
  2793.                                   The compiler evaluated the octal number 
  2794.                                   without the decimal digit, and assumed 
  2795.                                   the decimal digit was a character.  
  2796.  
  2797.                                   The following example causes this 
  2798.                                   warning:  
  2799.  
  2800.                                   %@AS@%char array1[] = "\\709";%@AE@%
  2801.  
  2802.                                   If the digit 9 was intended as a 
  2803.                                   character and was not a typing error, 
  2804.                                   correct the example as follows:  
  2805.  
  2806.                                   %@AS@%char array[] = "\\0709";  /* String %@AE@%
  2807.                                   %@AS@%containing "89" */%@AE@%
  2808.  
  2809. %@AB@%C4126%@AE@%                             %@AB@%'%@AE@%%@AI@%flag%@AE@%%@AB@%' : unknown memory model flag%@AE@%
  2810.  
  2811.                                   The flag used with the /A option was not
  2812.                                   recognized and was ignored.  
  2813.  
  2814. %@AB@%C4127%@AE@%                             %@AB@%conditional expression is constant%@AE@%
  2815.  
  2816.                                   The controlling expression of an if 
  2817.                                   statement or while loop evaluates to a 
  2818.                                   constant.  
  2819.  
  2820.                                   As a result, the code in the body of the
  2821.                                   if statement or while loop is either 
  2822.                                   always executed or never executed.  
  2823.  
  2824.                                   This warning is informational.  
  2825.  
  2826. %@AB@%C4128%@AE@%                             %@AB@%storage-class specifier after type%@AE@%
  2827.  
  2828.                                   A storage-class specifier (auto, extern,
  2829.                                   register, static) appears after a type 
  2830.                                   in a declaration. The compiler assumed 
  2831.                                   the storage class specifier occurred 
  2832.                                   before the type.  
  2833.  
  2834.                                   New-style code places the storage-class 
  2835.                                   specifier first.  
  2836.  
  2837. %@AB@%C4129%@AE@%                             %@AB@%'%@AE@%%@AI@%character%@AE@%%@AB@%' : unrecognized character %@AE@%
  2838.                                   %@AB@%escape sequence%@AE@%
  2839.  
  2840.                                   The character following a backslash in a
  2841.                                   character or string constant was not 
  2842.                                   recognized as a valid escape sequence.  
  2843.  
  2844.                                   As a result, the backslash is ignored 
  2845.                                   and not printed, and the character 
  2846.                                   following the backslash is printed.  
  2847.  
  2848.                                   To print a single backslash ( \ ), 
  2849.                                   specify a double backslash ( \\ ).  
  2850.  
  2851. %@AB@%C4130%@AE@%                             %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : logical operation on %@AE@%
  2852.                                   %@AB@%address of string constant%@AE@%
  2853.  
  2854.                                   The operator was used with the address 
  2855.                                   of a string literal. Unexpected code was
  2856.                                   generated.  
  2857.  
  2858.                                   For example, the following code causes 
  2859.                                   this warning:  
  2860.  
  2861.                                   %@AS@%char *pc;%@AE@%
  2862.                                   %@AS@%pc = "Hello";%@AE@%
  2863.                                   %@AS@%if (pc == "Hello") ...%@AE@%
  2864.  
  2865.                                   The if statement compares the value 
  2866.                                   stored in the pointer pc to the address 
  2867.                                   of the string %@AS@% "Hello"%@AE@%, which is 
  2868.                                   separately allocated each time it occurs
  2869.                                   in the code. It does not compare the 
  2870.                                   string pointed to by %@AS@%pc%@AE@% with the string %@AS@%%@AE@%
  2871.                                   %@AS@%"Hello"%@AE@%.  
  2872.  
  2873.                                   To compare strings, use the strcmp 
  2874.                                   function.  
  2875.  
  2876. %@AB@%C4131%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : uses old-style declarator%@AE@%
  2877.  
  2878.                                   The function declaration or definition 
  2879.                                   is not a prototype.  
  2880.  
  2881.                                   New-style function declarations are in 
  2882.                                   prototype form.  
  2883.  
  2884.                                   ■ old style
  2885.  
  2886.                                   %@AS@%int addrec( name, id )%@AE@%
  2887.                                   %@AS@%char *name;%@AE@%
  2888.                                   %@AS@%int id;%@AE@%
  2889.                                   %@AS@%{ }%@AE@%
  2890.  
  2891.                                   ■ new style
  2892.  
  2893.                                   %@AS@%int addrec( char *name, int id )%@AE@%
  2894.                                   %@AS@%{ }%@AE@%
  2895.  
  2896. %@AB@%C4132%@AE@%                             %@AB@%'%@AE@%%@AI@%object%@AE@%%@AB@%' : const object should be %@AE@%
  2897.                                   %@AB@%initialized%@AE@%
  2898.  
  2899.                                   The value of a %@AB@%const%@AE@% object cannot be 
  2900.                                   changed, so the only way to give the %@AB@%%@AE@%
  2901.                                   %@AB@%const%@AE@% object a value is to initialize it.
  2902.  
  2903.                                   It will not be possible to assign a 
  2904.                                   value to %@AI@%object%@AE@%.  
  2905.  
  2906. %@AB@%C4135%@AE@%                             %@AB@%conversion between different integral %@AE@%
  2907.                                   %@AB@%types%@AE@%
  2908.  
  2909.                                   Information was lost between two 
  2910.                                   integral types.  
  2911.  
  2912.                                   For example, the following code causes 
  2913.                                   this warning:  
  2914.  
  2915.                                   %@AS@%int intvar;%@AE@%
  2916.                                   %@AS@%long longvar;%@AE@%
  2917.                                   %@AS@%intvar = longvar;%@AE@%
  2918.  
  2919.                                   If the information is merely interpreted
  2920.                                   differently, this warning is not given, 
  2921.                                   as in the following example:  
  2922.  
  2923.                                   %@AS@%unsigned uintvar = intvar;%@AE@%
  2924.  
  2925. %@AB@%C4136%@AE@%                             %@AB@%conversion between different floating %@AE@%
  2926.                                   %@AB@%types%@AE@%
  2927.  
  2928.                                   Information was lost or truncated 
  2929.                                   between two floating types.  
  2930.  
  2931.                                   For example, the following code causes 
  2932.                                   this warning:  
  2933.  
  2934.                                   %@AS@%double doublevar;%@AE@%
  2935.                                   %@AS@%float floatvar;%@AE@%
  2936.                                   %@AS@%floatvar = doublevar;%@AE@%
  2937.  
  2938.                                   Note that unsuffixed floating-point 
  2939.                                   constants have type double, so the 
  2940.                                   following code causes this warning:  
  2941.  
  2942.                                   %@AS@%floatvar = 1.0;%@AE@%
  2943.  
  2944.                                   If the floating-point constant should be
  2945.                                   treated as float type, use the %@AS@%F%@AE@% (or %@AS@%f%@AE@%) 
  2946.                                   suffix on the constant to prevent the 
  2947.                                   following warning:  
  2948.  
  2949.                                   %@AS@%floatvar = 1.0F;%@AE@%
  2950.  
  2951. %@AB@%C4137%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : no return value from %@AE@%
  2952.                                   %@AB@%floating-point function%@AE@%
  2953.  
  2954.                                   The given function had no return 
  2955.                                   statement.  
  2956.  
  2957.                                   A long double function returns its value
  2958.                                   on the floating-point stack or the 
  2959.                                   emulated stack. If the function does not
  2960.                                   return a value, a run-time 
  2961.                                   floating-point stack underflow may occur.
  2962.  
  2963. %@AB@%C4138%@AE@%                             %@AB@%'*/' found outside of comment%@AE@%
  2964.  
  2965.                                   The compiler found a closing comment 
  2966.                                   delimiter (*/) without a preceding 
  2967.                                   opening delimiter. It assumed a space 
  2968.                                   between the asterisk (*) and the forward
  2969.                                   slash ( / ).  
  2970.  
  2971.                                   The following example causes this 
  2972.                                   warning:  
  2973.  
  2974.                                   %@AS@%int */*comment*/ptr;%@AE@%
  2975.  
  2976.                                   In this example, the compiler assumed a 
  2977.                                   space before the first comment delimiter
  2978.                                   ( /* ), and issued the warning but 
  2979.                                   compiled the line normally. To remove 
  2980.                                   the warning, insert the assumed space.  
  2981.  
  2982.                                   Usually, the cause of this warning is an
  2983.                                   attempt to nest comments.  
  2984.  
  2985.                                   To comment out sections of code that may
  2986.                                   contain comments, enclose the code in an
  2987.                                   %@AB@%#if%@AE@%/%@AB@%#endif%@AE@% block and set the controlling
  2988.                                   expression to zero, as in:  
  2989.  
  2990.                                   %@AS@%#if 0%@AE@%
  2991.                                   %@AS@%int my_variable;   /* Declaration %@AE@%
  2992.                                   %@AS@%currently not needed */%@AE@%
  2993.                                   %@AS@%#endif%@AE@%
  2994.  
  2995. %@AB@%C4139%@AE@%                             %@AB@%'%@AE@%%@AI@%hexnumber%@AE@%%@AB@%' : hex escape sequence is out%@AE@%
  2996.                                   %@AB@%of range%@AE@%
  2997.  
  2998.                                   A hex escape sequence appearing in a 
  2999.                                   character or string constant was too 
  3000.                                   large to be converted to a character.  
  3001.  
  3002.                                   If in a string constant, the compiler 
  3003.                                   cast the low byte of the hexadecimal 
  3004.                                   number to a %@AB@%char%@AE@%. If in a %@AB@%char%@AE@% constant,
  3005.                                   the compiler made the cast and then sign
  3006.                                   extended the result. If in a %@AB@%char%@AE@% 
  3007.                                   constant and compiled with /J, the 
  3008.                                   compiler cast the value to an unsigned %@AB@%%@AE@%
  3009.                                   %@AB@%char%@AE@%.  
  3010.  
  3011.                                   For example, ' \\ x1ff ' is out of range
  3012.                                   for a character. Note that the following
  3013.                                   code causes this warning:  
  3014.  
  3015.                                   %@AS@%printf("\\x7Bell\\n");%@AE@%
  3016.  
  3017.                                   The number %@AS@% 7be %@AE@% is a legal hex number, 
  3018.                                   but is too large for a character. To 
  3019.                                   correct this example, use three hex 
  3020.                                   digits:  
  3021.  
  3022.                                   %@AS@%printf("\\x007Bell\\n");%@AE@%
  3023.  
  3024. %@AB@%C4140%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' redefined : preceding %@AE@%
  3025.                                   %@AB@%references may be invalid%@AE@%
  3026.  
  3027.                                   The compiler issues this warning if a 
  3028.                                   function definition changes between 
  3029.                                   incremental compilations.  
  3030.  
  3031.                                   References previous to the redefinition 
  3032.                                   use the previous definition. Subsequent 
  3033.                                   references use the new definition.  
  3034.  
  3035.                                   For example:  
  3036.  
  3037.                                   %@AS@%main()%@AE@%
  3038.                                   %@AS@%{%@AE@%
  3039.                                   %@AS@%func1 ();%@AE@%
  3040.                                   %@AS@%}%@AE@%
  3041.                                   %@AS@%int func1 ()%@AE@%
  3042.                                   %@AS@%{ }%@AE@%
  3043.  
  3044.                                   If this program is compiled with the /Gi
  3045.                                   option, and later the %@AS@% func1 %@AE@% definition
  3046.                                   is changed to %@AS@% long func1%@AE@%, the compiler 
  3047.                                   issues this message to warn that calls 
  3048.                                   to %@AS@% func1 %@AE@% may be of the wrong type.  
  3049.  
  3050.                                   Be sure that function calls reference 
  3051.                                   the correct type; if not, recompile 
  3052.                                   without /Gi. To avoid the problem 
  3053.                                   altogether, use function prototypes.  
  3054.  
  3055. %@AB@%C4185%@AE@%                             %@AB@%near call to '%@AE@%%@AI@%function%@AE@%%@AB@%' in different %@AE@%
  3056.                                   %@AB@%segment%@AE@%
  3057.  
  3058.                                   The given function was specified in an %@AB@%%@AE@%
  3059.                                   %@AB@%alloc_text%@AE@% pragma without being declared
  3060.                                   with %@AB@%_far%@AE@%, and then was called from text
  3061.                                   segment.  
  3062.  
  3063.                                   The compiler generated a near call.  
  3064.  
  3065.                                   Although this is a warning message 
  3066.                                   rather than an error message, the 
  3067.                                   resulting code will not work correctly. 
  3068.  
  3069. %@AB@%C4186%@AE@%                             %@AB@%string too long - truncated to 40 %@AE@%
  3070.                                   %@AB@%characters%@AE@%
  3071.  
  3072.                                   The string argument for a title or 
  3073.                                   subtitle pragma exceeded the maximum 
  3074.                                   allow-able length and was truncated.  
  3075.  
  3076. %@AB@%C4200%@AE@%                             %@AB@%local variable '%@AE@%%@AI@%identifier%@AE@%%@AB@%' used without%@AE@%
  3077.                                   %@AB@%having been initialized%@AE@%
  3078.  
  3079.                                   A reference was made to a local variable
  3080.                                   that had not been assigned a value. As a
  3081.                                   result, the value of the variable is 
  3082.                                   unpredictable.  
  3083.  
  3084.                                   This warning is given only when 
  3085.                                   compiling with global register 
  3086.                                   allocation on (/Oe).  
  3087.  
  3088. %@AB@%C4201%@AE@%                             %@AB@%local variable '%@AE@%%@AI@%identifier%@AE@%%@AB@%' may be used %@AE@%
  3089.                                   %@AB@%without having been initialized%@AE@%
  3090.  
  3091.                                   A reference was made to a local variable
  3092.                                   that might not have been assigned a 
  3093.                                   value. As a result, the value of the 
  3094.                                   variable may be unpredictable.  
  3095.  
  3096.                                   This warning is given only when 
  3097.                                   compiling with the global register 
  3098.                                   allocation on (/Oe).  
  3099.  
  3100. %@AB@%C4202%@AE@%                             %@AB@%unreachable code%@AE@%
  3101.  
  3102.                                   The flow of control can never reach the 
  3103.                                   indicated line.  
  3104.  
  3105.                                   This warning is given only when 
  3106.                                   compiling with one of the global 
  3107.                                   optimizations (/Oe, /Og, or /Ol).  
  3108.  
  3109. %@AB@%C4203%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function too large for %@AE@%
  3110.                                   %@AB@%global optimizations%@AE@%
  3111.  
  3112.                                   The named function was too large to fit 
  3113.                                   in memory and be compiled with the 
  3114.                                   selected optimization. The compiler did 
  3115.                                   not perform any global optimiza- tions 
  3116.                                   (/Oe, /Og, or /Ol). Other /O 
  3117.                                   optimizations, such as /Oa and /Oi, are 
  3118.                                   still performed.  
  3119.  
  3120.                                   One of the following may remove this 
  3121.                                   warning:  
  3122.  
  3123.                                   ■ Recompile with fewer optimizations.
  3124.  
  3125.                                   ■ Divide the function into two or more 
  3126.                                   smaller functions.
  3127.  
  3128. %@AB@%C4204%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : in-line assembler precludes%@AE@%
  3129.                                   %@AB@%global optimizations%@AE@%
  3130.  
  3131.                                   The use of in-line assembler in the 
  3132.                                   named function prevented the specified 
  3133.                                   global optimizations (/Oe, /Og, or /Ol) 
  3134.                                   from being performed.  
  3135.  
  3136. %@AB@%C4205%@AE@%                             %@AB@%statement has no effect%@AE@%
  3137.  
  3138.                                   The indicated statement will have no 
  3139.                                   effect on the program execution.  
  3140.  
  3141.                                   The following are examples of statements
  3142.                                   with no effect:  
  3143.  
  3144.                                   %@AS@%1;%@AE@%
  3145.                                   %@AS@%a + 1%@AE@%
  3146.                                   %@AS@%; b == c;%@AE@%
  3147.  
  3148. %@AB@%C4206%@AE@%                             %@AB@%assignment within conditional expression%@AE@%
  3149.  
  3150.                                   The test value in a conditional 
  3151.                                   expression was the result of an 
  3152.                                   assignment.  
  3153.  
  3154.                                   This warning is informational.  
  3155.  
  3156.                                   An assignment has a value (the value at 
  3157.                                   the left side of the assignment) that 
  3158.                                   can be used legally in another 
  3159.                                   expression, including a test expression.
  3160.                                   However, the intention may have been to 
  3161.                                   test a relation instead of an assignment.
  3162.  
  3163.                                   For example, the following line, which 
  3164.                                   causes this warning, assigns %@AS@% b %@AE@% to %@AS@% a %@AE@% 
  3165.                                   and compares the value of %@AS@% a %@AE@% with 0:  
  3166.  
  3167.                                   %@AS@%if (a = b) ...%@AE@%
  3168.  
  3169.                                   However, the following line tests 
  3170.                                   whether %@AS@% a %@AE@% and %@AS@% b %@AE@% are equal:  
  3171.  
  3172.                                   %@AS@%if (a == b) ...%@AE@%
  3173.  
  3174. %@AB@%C4209%@AE@%                             %@AB@%comma operator within array index %@AE@%
  3175.                                   %@AB@%expression%@AE@%
  3176.  
  3177.                                   The value used as an index into an array
  3178.                                   was the last one of multiple expressions
  3179.                                   separated by the comma operator.  
  3180.  
  3181.                                   It is legal for an array index to be the
  3182.                                   value of the last expression in a series
  3183.                                   of expressions separated by the comma 
  3184.                                   operator. However, the intent may have 
  3185.                                   been to use the expressions to specify 
  3186.                                   multiple indexes into a multidimensional
  3187.                                   array.  
  3188.  
  3189.                                   For example, the following line, which 
  3190.                                   causes this warning, is legal in C, and 
  3191.                                   specifies the index %@AS@% c %@AE@% into array %@AS@% a:  %@AE@%
  3192.  
  3193.                                   %@AS@%a[b,c]%@AE@%
  3194.  
  3195.                                   However, the following line uses both %@AS@% b%@AE@%
  3196.                                   %@AS@%%@AE@% and %@AS@% c %@AE@% as indexes into a two- 
  3197.                                   dimensional array:  
  3198.  
  3199.                                   %@AS@%a[b][c]%@AE@%
  3200.  
  3201. %@AB@%C4300%@AE@%                             %@AB@%insufficient memory to process debugging%@AE@%
  3202.                                   %@AB@%information%@AE@%
  3203.  
  3204.                                   The program was compiled with the /Zi 
  3205.                                   option, but not enough memory was 
  3206.                                   available to create the required 
  3207.                                   debugging information.  
  3208.  
  3209.                                   One of the following may be a solution: 
  3210.  
  3211.                                   ■ Split the current file into two or 
  3212.                                   more files and compile them separately.
  3213.  
  3214.                                   ■ Remove other programs or drivers 
  3215.                                   running in the system which could be 
  3216.                                   consuming significant amounts of memory.
  3217.  
  3218. %@AB@%C4301%@AE@%                             %@AB@%loss of debugging information caused by %@AE@%
  3219.                                   %@AB@%optimization%@AE@%
  3220.  
  3221.                                   Some optimizations, such as code motion,
  3222.                                   cause references to nested variables to 
  3223.                                   be moved. The information about the 
  3224.                                   level at which the variables are 
  3225.                                   declared may be lost. As a result, all 
  3226.                                   declarations will seem to be at nesting 
  3227.                                   level 1.  
  3228.  
  3229. %@AB@%C4323%@AE@%                             %@AB@%potential divide by 0%@AE@%
  3230.  
  3231.                                   The second operand in a divide operation
  3232.                                   evaluated to zero at compile time, 
  3233.                                   giving undefined results.  
  3234.  
  3235.                                   The 0 operand may have been generated by
  3236.                                   the compiler, as in the following  
  3237.                                   example:  
  3238.  
  3239.                                   %@AS@%func1() { int i,j,k; i /= j && k; }%@AE@%
  3240.  
  3241. %@AB@%C4324%@AE@%                             %@AB@%potential mod by 0%@AE@%
  3242.  
  3243.                                   The second operand in a remainder 
  3244.                                   operation evaluated to zero at compile 
  3245.                                   time, giving undefined results.  
  3246.  
  3247. %@AB@%C4414%@AE@%                             %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : short jump to function %@AE@%
  3248.                                   %@AB@%converted to near%@AE@%
  3249.  
  3250.                                   Short jumps generate a one-byte 
  3251.                                   instruction. The instruction includes a 
  3252.                                   short offset that represents the 
  3253.                                   distance between the jump and the 
  3254.                                   function definition. The compiler must 
  3255.                                   generate a special record for the jump, 
  3256.                                   which requires the jump to be either %@AB@%%@AE@%
  3257.                                   %@AB@%NEAR%@AE@% or %@AB@%FAR%@AE@%, but not %@AB@%SHORT%@AE@%. The compiler
  3258.                                   made the conversion.  
  3259.  
  3260.                                   For example, the following code causes 
  3261.                                   this warning:  
  3262.  
  3263.                                   %@AS@%main()%@AE@%
  3264.                                   %@AS@%{%@AE@%
  3265.                                   %@AS@%    _asm jmp SHORT main%@AE@%
  3266.                                   %@AS@%}%@AE@%
  3267.  
  3268. %@NL@%
  3269. %@2@%%@CR:C6A00050015 @%%@AB@%5.2  Command-Line Error Messages%@AE@%%@EH@%%@NL@%
  3270. %@NL@%
  3271. Messages that indicate errors on the command line used to invoke the
  3272. compiler have one of the following formats:%@CR:C6A00050016 @%%@CR:C6A00050017 @%%@CR:C6A00050018 @%  %@NL@%
  3273. %@NL@%
  3274. %@AS@%  command line error D2xxx: messagetext  Error
  3275. %@AS@%  command line warning D4xxx: messagetext  Warning%@AE@%%@NL@%
  3276. %@NL@%
  3277. The compiler issues a warning message and, if possible, continues
  3278. processing. In some cases, command-line errors are fatal and the compiler
  3279. terminates processing.  %@NL@%
  3280. %@NL@%
  3281. When the QCL compiler encounters any of the errors listed in this section,
  3282. it terminates, producing no object file.  %@NL@%
  3283. %@NL@%
  3284. %@AB@%Number %@AE@%                           %@AB@%Command-Line Message%@AE@%
  3285. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3286. %@AB@%D2013%@AE@%                             %@AB@%incomplete model specification%@AE@%
  3287.  
  3288.                                   A customized memory model was 
  3289.                                   incompletely specified with the /A%@AI@%string%@AE@%
  3290.                                   option.  
  3291.  
  3292.                                   Two types of options begin with /A:  
  3293.  
  3294.                                   ■ The /A%@AI@%string%@AE@% customized memory-model 
  3295.                                   option requires three letters in the 
  3296.                                   string. The letters specify the 
  3297.                                   code-pointer size, data-pointer size, 
  3298.                                   and data-segment setup attributes of the
  3299.                                   memory model.
  3300.  
  3301.                                   ■ The /A%@AI@%x%@AE@% option for specifying a 
  3302.                                   standard memory model requires one 
  3303.                                   uppercase letter. A lowercase letter is 
  3304.                                   interpreted to be part of a customized 
  3305.                                   memory-model specification. For example:
  3306.  
  3307.                                   %@AS@%qcl /As%@AE@%
  3308.  
  3309. %@STUB@%    A single lowercase letter can be used only if it is a segment setup
  3310.     option and is used in combination with a standard memory model.%@NL@%
  3311. %@NL@%
  3312. %@AB@%D2030%@AE@%                             %@AB@%INTERNAL COMPILER ERROR in '%@AE@%%@AI@%component%@AE@%%@AB@%' %@AE@%
  3313.                                   %@AB@%Contact Microsoft Product Support %@AE@%
  3314.                                   %@AB@%Services%@AE@%
  3315.  
  3316.                                   The driver detects an error in the 
  3317.                                   specified component, which could be P1, 
  3318.                                   P2, P3, MASM, LINK, or BIND.  
  3319.  
  3320.                                   Note the circumstances of the error and 
  3321.                                   notify Microsoft Corporation by 
  3322.                                   following the instructions in the 
  3323.                                   Microsoft Product Assistance Request 
  3324.                                   form at the back of one of your manuals.
  3325.  
  3326. %@AB@%D2031%@AE@%                             %@AB@%too many flags/files on command line%@AE@%
  3327.  
  3328.                                   There are more than 128 arguments 
  3329.                                   combined from the command line and the 
  3330.                                   CL environment variable.  
  3331.  
  3332.                                   Reduce the number of arguments. You can 
  3333.                                   do this by compiling fewer files at one 
  3334.                                   time.  
  3335.  
  3336. %@NL@%
  3337. %@2@%%@CR:C6A00050019 @%%@AB@%5.3  Run-Time Error Message%@AE@%%@EH@%%@NL@%
  3338. %@NL@%
  3339. The following message may be generated at run time.  %@NL@%
  3340. %@NL@%
  3341. A run-time error message takes the following general form:  %@NL@%
  3342. %@NL@%
  3343. %@AI@%run-time error%@AE@% R6%@AI@%nnn%@AE@%- %@AI@%messagetext%@AE@%  %@NL@%
  3344. %@NL@%
  3345. %@AB@%Number%@AE@%                            %@AB@%Run-Time Error Message%@AE@%
  3346. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3347. %@AB@%R6010%@AE@%                             %@AB@%abnormal program termination%@AE@%
  3348.  
  3349.                                   This error is displayed by the abort( ) 
  3350.                                   routine. The program terminates with 
  3351.                                   exit code 3, unless an abort( ) signal 
  3352.                                   handler has been defined by using the 
  3353.                                   signal( ) function.  
  3354.  
  3355. %@NL@%
  3356. %@2@%%@CR:C6A00050020 @%%@AB@%5.4  QLINK Error Messages%@AE@%%@EH@%%@NL@%
  3357. %@NL@%
  3358. This section lists error messages generated by the QuickC linker (QLINK) and
  3359. the special incremental linker (ILINK) that is invoked when you compile
  3360. QuickC programs with the /Gi or /Li option. Note that in most cases, QuickC
  3361. will invoke QLINK if ILINK fails.%@CR:C6A00050021 @%%@CR:C6A00050022 @%  %@NL@%
  3362. %@NL@%
  3363. Fatal errors, which cause the linker to stop execution, have the following
  3364. format:  %@NL@%
  3365. %@NL@%
  3366. %@AS@%  location  : error L1  xxx  :  messagetext%@AE@%%@NL@%
  3367. %@NL@%
  3368. Nonfatal errors, which indicate problems in the executable file, do not
  3369. cause QLINK to stop execution; QLINK produces the executable file. Nonfatal
  3370. error messages have the following format:  %@NL@%
  3371. %@NL@%
  3372. %@AS@%  location  : error L2  xxx  :  messagetext  %@AE@%%@NL@%
  3373. %@NL@%
  3374. Warnings indicate possible problems in the executable file. QLINK produces
  3375. the executable file. Warnings have the following format:  %@NL@%
  3376. %@NL@%
  3377. %@AS@%  location  : warning L4  xxx  :  messagetext  %@AE@%%@NL@%
  3378. %@NL@%
  3379. In all three kinds of messages, %@AI@%location%@AE@% is the input file associated with
  3380. the error, or %@AS@% QLINK %@AE@% if there is no input file. If the input file is an
  3381. .OBJ or .LIB file and a module name is associated with the error, the module
  3382. name is enclosed in paren-theses, as shown in the following examples:  %@NL@%
  3383. %@NL@%
  3384. %@AS@%  SLIBC.LIB(_file)
  3385. %@AS@%  MAIN.OBJ(main.c)
  3386. %@AS@%  TEXT.OBJ%@AE@%%@NL@%
  3387. %@NL@%
  3388. %@NL@%
  3389. %@3@%%@CR:C6A00050023 @%%@AB@%5.4.1  Fatal-Error Messages%@AE@%%@EH@%%@NL@%
  3390. %@NL@%
  3391. The following error messages may appear when you link object files:  %@NL@%
  3392. %@NL@%
  3393. %@AB@%Number%@AE@%                            %@AB@%Run-Time Error Message%@AE@%
  3394. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3395. %@AB@%L1030%@AE@%                             %@AB@%missing internal name%@AE@%
  3396.  
  3397.                                   An IMPORTS statement specified an 
  3398.                                   ordinal in the module-definition file 
  3399.                                   without including the internal name of 
  3400.                                   the routine.  
  3401.  
  3402.                                   The name must be given if the import is 
  3403.                                   by ordinal.  
  3404.  
  3405. %@AB@%L1031%@AE@%                             %@AB@%module description redefined%@AE@%
  3406.  
  3407.                                   A DESCRIPTION statement in the 
  3408.                                   module-definition file was specified 
  3409.                                   more than once.  
  3410.  
  3411. %@AB@%L1032%@AE@%                             %@AB@%module name redefined%@AE@%
  3412.  
  3413.                                   The module name was specified more than 
  3414.                                   once (in a NAME or LIBRARY  statement). 
  3415.  
  3416. %@AB@%L1040%@AE@%                             %@AB@%too many exported entries%@AE@%
  3417.  
  3418.                                   The program exceeded the limit of 65,535
  3419.                                   exported names.  
  3420.  
  3421. %@AB@%L1041%@AE@%                             %@AB@%resident-name table overflow%@AE@%
  3422.  
  3423.                                   The size of the resident-name table 
  3424.                                   exceeds 65,535 bytes.  
  3425.  
  3426.                                   An entry in the resident-name table is 
  3427.                                   made for each exported routine 
  3428.                                   designated RESIDENTNAME, and consists of
  3429.                                   the name plus three bytes of information.
  3430.                                   The first entry is the module name.  
  3431.  
  3432.                                   Reduce the number of exported routines 
  3433.                                   or change some to nonresident status.  
  3434.  
  3435. %@AB@%L1042%@AE@%                             %@AB@%nonresident-name table overflow%@AE@%
  3436.  
  3437.                                   The size of the nonresident-name table 
  3438.                                   exceeds 65,535 bytes.  
  3439.  
  3440.                                   An entry in the nonresident-name table 
  3441.                                   is made for each exported routine not 
  3442.                                   designated RESIDENTNAME, and consists of
  3443.                                   the name plus three bytes of information.
  3444.                                   The first entry is the DESCRIPTION 
  3445.                                   statement.  
  3446.  
  3447.                                   Reduce the number of exported routines 
  3448.                                   or change some to resident status.  
  3449.  
  3450. %@AB@%L1044%@AE@%                             %@AB@%imported-name table overflow%@AE@%
  3451.  
  3452.                                   The size of the imported-names table 
  3453.                                   exceeds 65,535 bytes.  
  3454.  
  3455.                                   An entry in the imported-names table is 
  3456.                                   made for each new name given in the 
  3457.                                   IMPORTS section, including the module 
  3458.                                   names, and consists of the name plus one
  3459.                                   byte.  
  3460.  
  3461.                                   Reduce the number of imports.  
  3462.  
  3463. %@AB@%L1064%@AE@%                             %@AB@%out of memory%@AE@%
  3464.  
  3465.                                   The linker was not able to allocate 
  3466.                                   enough memory from the operating system 
  3467.                                   to link the program.  
  3468.  
  3469.                                   Reduce the size of the program in terms 
  3470.                                   of code, data, and symbols.  
  3471.  
  3472. %@AB@%L1078%@AE@%                             %@AB@%file-segment alignment too small%@AE@%
  3473.  
  3474.                                   The segment-alignment size given with 
  3475.                                   the /ALIGNMENT:%@AI@%number%@AE@% option was too 
  3476.                                   small.  
  3477.  
  3478.                                   Try increasing the number.  
  3479.  
  3480. %@AB@%L1092%@AE@%                             %@AB@%cannot open module-definition file%@AE@%
  3481.  
  3482.                                   The linker could not open the 
  3483.                                   module-definition file specified on the 
  3484.                                   command line or in the response file.  
  3485.  
  3486. %@AB@%L1115%@AE@%                             %@AB@%'%@AE@%%@AI@%option%@AE@%%@AB@%' : option incompatible with %@AE@%
  3487.                                   %@AB@%overlays%@AE@%
  3488.  
  3489.                                   The given option is not compatible with 
  3490.                                   overlays.  
  3491.  
  3492.                                   Remove the option or else do not use 
  3493.                                   overlaid modules.  
  3494.  
  3495. %@NL@%
  3496. %@3@%%@CR:C6A00050024 @%%@AB@%5.4.2  Nonfatal-Error Messages%@AE@%%@EH@%%@NL@%
  3497. %@NL@%
  3498. The following nonfatal-error messages may appear when you link object files:
  3499. %@NL@%
  3500. %@NL@%
  3501. %@AB@%Number%@AE@%                            %@AB@%Error Message%@AE@%
  3502. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3503. %@AB@%L2000%@AE@%                             %@AB@%imported starting address%@AE@%
  3504.  
  3505.                                   The program starting address as 
  3506.                                   specified in the END statement in a MASM
  3507.                                   file is an imported routine.  
  3508.  
  3509. %@AB@%L2022%@AE@%                             %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' (alias '%@AE@%%@AI@%internalname%@AE@%%@AB@%') : %@AE@%
  3510.                                   %@AB@%export undefined%@AE@%
  3511.  
  3512.                                   The internal name of the given exported 
  3513.                                   routine is undefined.  
  3514.  
  3515. %@AB@%L2023%@AE@%                             %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' (alias '%@AE@%%@AI@%internalname%@AE@%%@AB@%') : %@AE@%
  3516.                                   %@AB@%export imported%@AE@%
  3517.  
  3518.                                   The internal name of the given exported 
  3519.                                   routine conflicts with the internal name
  3520.                                   of a previously imported routine. The 
  3521.                                   set of imported and exported names 
  3522.                                   cannot overlap.  
  3523.  
  3524. %@AB@%L2026%@AE@%                             %@AB@%entry ordinal '%@AE@%%@AI@%number%@AE@%%@AB@%', name '%@AE@%%@AI@%name%@AE@%%@AB@%' : %@AE@%
  3525.                                   %@AB@%multiple definitions for same ordinal%@AE@%
  3526.  
  3527.                                   The given exported name with the given 
  3528.                                   ordinal number conflicted with a 
  3529.                                   different exported name previously 
  3530.                                   assigned to the same ordinal. Only one 
  3531.                                   name can be associated with a particular
  3532.                                   ordinal.  
  3533.  
  3534. %@AB@%L2027%@AE@%                             %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : ordinal too large for export%@AE@%
  3535.  
  3536.                                   The given exported name was assigned an 
  3537.                                   ordinal that exceeded the limit of 
  3538.                                   65,535.  
  3539.  
  3540. %@AB@%L2028%@AE@%                             %@AB@%automatic data segment plus heap exceed %@AE@%
  3541.                                   %@AB@%64K%@AE@%
  3542.  
  3543.                                   The total size of data declared in 
  3544.                                   DGROUP, plus the value given in HEAPSIZE
  3545.                                   in the module-definition file, plus the 
  3546.                                   stack size given by the /STACK option or
  3547.                                   STACKSIZE module-definition file 
  3548.                                   statement, exceeds 64K.  
  3549.  
  3550.                                   Reduce near-data allocation, HEAPSIZE, 
  3551.                                   or stack.  
  3552.  
  3553. %@AB@%L2049%@AE@%                             %@AB@%no segments defined%@AE@%
  3554.  
  3555.                                   No code or initialized data was defined 
  3556.                                   in the program. The resulting executable
  3557.                                   file is not likely to be valid.  
  3558.  
  3559. %@AB@%L2050%@AE@%                             %@AB@%16/32 bit attribute conflict - segment: %@AE@%
  3560.                                   %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' in group: '%@AE@%%@AI@%group%@AE@%%@AB@%'%@AE@%
  3561.  
  3562.                                   16-bit segments cannot be grouped with 
  3563.                                   32-bit segments.  
  3564.  
  3565. %@AB@%L2051%@AE@%                             %@AB@%start address not equal to 0x100 for %@AE@%
  3566.                                   %@AB@%/TINY%@AE@%
  3567.  
  3568.                                   The program starting address, as 
  3569.                                   specified in the .COM file, must have a 
  3570.                                   starting value equal to 100 hex (0x100 
  3571.                                   or 0x0100). Any other value is illegal. 
  3572.  
  3573.                                   Put the following line of assembly 
  3574.                                   source code in front of the code 
  3575.                                   segment:  
  3576.  
  3577.                                   %@AS@%ORG 100h%@AE@%  
  3578.  
  3579. %@AB@%L2052%@AE@%                             %@AB@%'%@AE@%%@AI@%symbol%@AE@%%@AB@%' : unresolved external - %@AE@%
  3580.                                   %@AB@%possible calling convention mismatch%@AE@%
  3581.  
  3582.                                   A symbol was declared to be external in 
  3583.                                   one or more modules, but the linker 
  3584.                                   could not find it publicly defined in 
  3585.                                   any module or library.  
  3586.  
  3587.                                   The name of the unresolved external 
  3588.                                   symbol is given, then a list of object 
  3589.                                   modules which contain references to this
  3590.                                   symbol is given. The error message and 
  3591.                                   the list are written to the map file, if
  3592.                                   one exists.  
  3593.  
  3594.                                   This error occurs when a prototype for 
  3595.                                   an externally defined function is 
  3596.                                   omitted from a program that is compiled 
  3597.                                   with the Fastcall option (/Ox). The 
  3598.                                   calling convention for fastcall does not
  3599.                                   match the assumptions that are made when
  3600.                                   a prototype is not included for an 
  3601.                                   external function.  
  3602.  
  3603.                                   Either include a prototype for the 
  3604.                                   function, or compile without the /Ox 
  3605.                                   option.  
  3606.  
  3607. %@NL@%
  3608. %@3@%%@CR:C6A00050025 @%%@AB@%5.4.3  Warning Messages%@AE@%%@EH@%%@NL@%
  3609. %@NL@%
  3610. The following warning messages may appear when you link object files:  %@NL@%
  3611. %@NL@%
  3612. %@AB@%Number%@AE@%                            %@AB@%Warning Message%@AE@%
  3613. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3614. %@AB@%L4004%@AE@%                             %@AB@%possible fixup overflow at '%@AE@%%@AI@%offset%@AE@%%@AB@%' in %@AE@%
  3615.                                   %@AB@%segment '%@AE@%%@AI@%segment%@AE@%%@AB@%'%@AE@%
  3616.  
  3617.                                   A near call/jump was made to another 
  3618.                                   segment which was not a member of the 
  3619.                                   same group as the segment from which the
  3620.                                   call/jump was made.  
  3621.  
  3622.                                   This call/jump can cause an incorrect 
  3623.                                   address calculation when the distance 
  3624.                                   between the paragraph address (frame 
  3625.                                   number) of the segment group and the 
  3626.                                   target segment is greater than 64K, even
  3627.                                   when the distance between the segment 
  3628.                                   where the call/jump was actually made 
  3629.                                   and the target segment is less than 64K.
  3630.  
  3631. %@AB@%L4017%@AE@%                             %@AB@%'%@AE@%%@AI@%option%@AE@%%@AB@%' : unrecognized option name; %@AE@%
  3632.                                   %@AB@%option ignored%@AE@%
  3633.  
  3634.                                   An unrecognized character followed the 
  3635.                                   option indicator (/).  
  3636.  
  3637.                                   An example of this warning is  
  3638.  
  3639.                                   %@AS@%QLINK /ABCDEF main;%@AE@%
  3640.  
  3641. %@AB@%L4019%@AE@%                             %@AB@%/TINY disables /INCREMENTAL%@AE@%
  3642.  
  3643.                                   A .COM file always requires a full link 
  3644.                                   and cannot be incrementally linked.  
  3645.  
  3646.                                   The /TINY and /INCREMENTAL options are 
  3647.                                   incompatible. When they are used 
  3648.                                   together, the linker ignores 
  3649.                                   /INCREMENTAL.  
  3650.  
  3651. %@AB@%L4023%@AE@%                             %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' ('%@AE@%%@AI@%internalname%@AE@%%@AB@%') : export %@AE@%
  3652.                                   %@AB@%internal name conflict%@AE@%
  3653.  
  3654.                                   The internal name of the given exported 
  3655.                                   routine conflicted with the internal 
  3656.                                   name of a previous import definition or 
  3657.                                   export definition.  
  3658.  
  3659. %@AB@%L4024%@AE@%                             %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : multiple definitions for export%@AE@%
  3660.                                   %@AB@%name%@AE@%
  3661.  
  3662.                                   The given name was exported more than 
  3663.                                   once, an action that is not allowed.  
  3664.  
  3665. %@AB@%L4025%@AE@%                             %@AB@%'%@AE@%%@AI@%modulename%@AE@%%@AB@%'.'%@AE@%%@AI@%importname%@AE@%%@AB@%'('%@AE@%%@AI@%internalname%@AE@%%@AB@%')%@AE@%
  3666.                                   %@AB@%: import internal name conflict%@AE@%
  3667.  
  3668.                                   The internal name of the given imported 
  3669.                                   routine (import is either a name or a 
  3670.                                   number) conflicted with the internal 
  3671.                                   name of a previous export or import.  
  3672.  
  3673. %@AB@%L4026%@AE@%                             %@AB@%'%@AE@%%@AI@%modulename%@AE@%%@AB@%'.'%@AE@%%@AI@%importname%@AE@%%@AB@%'('%@AE@%%@AI@%internalname%@AE@%%@AB@%')%@AE@%
  3674.                                   %@AB@%: self-imported%@AE@%
  3675.  
  3676.                                   The given imported routine was imported 
  3677.                                   from the module being linked. This is 
  3678.                                   not supported on some systems.  
  3679.  
  3680. %@AB@%L4027%@AE@%                             %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : multiple definitions for import%@AE@%
  3681.                                   %@AB@%internal name%@AE@%
  3682.  
  3683.                                   The given internal name was imported 
  3684.                                   more than once. Previous import 
  3685.                                   definitions are ignored.  
  3686.  
  3687. %@AB@%L4028%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : segment already defined%@AE@%
  3688.  
  3689.                                   The given segment was defined more than 
  3690.                                   once in the SEGMENTS statement of the 
  3691.                                   module-definition file.  
  3692.  
  3693. %@AB@%L4030%@AE@%                             %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : segment attributes changed %@AE@%
  3694.                                   %@AB@%to conform with automatic data segment%@AE@%
  3695.  
  3696.                                   The given logical segment in the group 
  3697.                                   DGROUP was given sharing attributes 
  3698.                                   (SHARED/NONSHARED) that differed from 
  3699.                                   the automatic data attributes as 
  3700.                                   declared by the DATA instance 
  3701.                                   specification (SINGLE/MULTIPLE). The 
  3702.                                   attri-butes are converted to conform to 
  3703.                                   those of DGROUP.  
  3704.  
  3705.                                   The name DGROUP is predefined as the 
  3706.                                   automatic data segment. DGROUP cannot 
  3707.                                   contain code segments because the linker
  3708.                                   always considers DGROUP to be a data 
  3709.                                   segment.  
  3710.  
  3711. %@AB@%L4040%@AE@%                             %@AB@%stack size ignored for /TINY%@AE@%
  3712.  
  3713.                                   The linker ignores stack size if /TINY 
  3714.                                   is given and if the stack segment has 
  3715.                                   been defined in front of the code 
  3716.                                   segment.  
  3717.  
  3718. %@AB@%L4042%@AE@%                             %@AB@%cannot open old version%@AE@%
  3719.  
  3720.                                   The file specified in the OLD statement 
  3721.                                   in the module-definition file could not 
  3722.                                   be opened.  
  3723.  
  3724. %@AB@%L4045%@AE@%                             %@AB@%name of output file is '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  3725.  
  3726.                                   The linker had to change the name of the
  3727.                                   output file to the given file name.  
  3728.  
  3729.                                   If the output file is specified without 
  3730.                                   an extension, the linker assumes the 
  3731.                                   default extension .EXE. Creating a Quick
  3732.                                   library, .DLL file, or .COM file forces 
  3733.                                   the linker to use an extension other 
  3734.                                   than .EXE:  
  3735.  
  3736. %@AB@%Output File Specification%@AE@%         %@AB@%Extension%@AE@%
  3737. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3738. /TINY option                      .COM
  3739.  
  3740. /QUICKLIB option                  .QLB 
  3741.  
  3742. LIBRARY statement in .DEF file    .DLL
  3743.  
  3744. %@AB@%L4047%@AE@%                             %@AB@%Multiple code segments in module of %@AE@%
  3745.                                   %@AB@%overlaid program incompatible with %@AE@%
  3746.                                   %@AB@%/CODEVIEW%@AE@%
  3747.  
  3748.                                   When debugging with CodeView, if there 
  3749.                                   are multiple code segments defined in 
  3750.                                   one module (.OBJ file) by use of the 
  3751.                                   compiler %@AB@%#pragma alloc_text()%@AE@% and the 
  3752.                                   program is built as an overlaid program,
  3753.                                   you can access the symbolic information 
  3754.                                   for only the first code segment in 
  3755.                                   overlay. Symbolic information for the 
  3756.                                   rest of the code segments in overlay is 
  3757.                                   not accessible.  
  3758.  
  3759. %@NL@%
  3760. %@2@%%@CR:C6A00050026 @%%@AB@%5.5  NMAKE Error Messages%@AE@%%@EH@%%@NL@%
  3761. %@NL@%
  3762. Error messages from the NMAKE utility have one of the following formats:%@CR:C6A00050027 @%%@CR:C6A00050028 @%  %@NL@%
  3763. %@NL@%
  3764. %@AS@%  {filename |  NMAKE} :  fatal error U1  xxx: messagetext
  3765. %@AS@%  {filename |  NMAKE} :  warning U4  xxx: messagetext%@AE@%%@NL@%
  3766. %@NL@%
  3767. The message begins with the input-file name (%@AI@%filename%@AE@%) and line number, if
  3768. one exists, or with the name of the utility.  %@NL@%
  3769. %@NL@%
  3770. %@NL@%
  3771. %@3@%%@CR:C6A00050029 @%%@AB@%5.5.1  Fatal-Error Messages%@AE@%%@EH@%%@NL@%
  3772. %@NL@%
  3773. NMAKE generates the following error messages:  %@NL@%
  3774. %@NL@%
  3775. %@AB@%Number%@AE@%                            %@AB@%Error message%@AE@%
  3776. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  3777. %@AB@%U1006%@AE@%                             %@AB@%syntax: missing closing double quotation%@AE@%
  3778.                                   %@AB@%mark%@AE@%
  3779.  
  3780.                                   An opening double quotation mark (") 
  3781.                                   appeared without a closing double 
  3782.                                   quotation mark.  
  3783.  
  3784. %@AB@%U1007%@AE@%                             %@AB@%double quotation mark not allowed in %@AE@%
  3785.                                   %@AB@%name%@AE@%
  3786.  
  3787.                                   The specified target name or file name 
  3788.                                   contained a double quotation mark (").  
  3789.  
  3790.                                   Double quotation marks can surround a 
  3791.                                   file name but not be contained within it.
  3792.  
  3793. %@AB@%U1045%@AE@%                             %@AB@%'internal error message'%@AE@%
  3794.  
  3795.                                   Note the circumstances of the error and 
  3796.                                   notify Microsoft Corporation by 
  3797.                                   following the instructions in the 
  3798.                                   Microsoft Product Assistance Request 
  3799.                                   form at the back of one of your manuals.
  3800.  
  3801. %@AB@%U1051%@AE@%                             %@AB@%out of memory%@AE@%
  3802.  
  3803.                                   The program ran out of space in the far 
  3804.                                   heap.  
  3805.  
  3806.                                   Split the description file into smaller 
  3807.                                   and simpler pieces.  
  3808.  
  3809. %@AB@%U1052%@AE@%                             %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%' not found%@AE@%
  3810.  
  3811.                                   The file was not found.  
  3812.  
  3813.                                   The file name may not be properly 
  3814.                                   specified in the makefile.  
  3815.  
  3816. %@AB@%U1053%@AE@%                             %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%' unreadable%@AE@%
  3817.  
  3818.                                   The file cannot be read.  
  3819.  
  3820.                                   The following are possible causes of 
  3821.                                   this error:  
  3822.  
  3823.                                   ■ The file does not have appropriate 
  3824.                                   attributes for reading.
  3825.  
  3826.                                   ■ A bad area exists on disk.
  3827.  
  3828.                                   ■ A bad file-allocation table exists.
  3829.  
  3830.                                   ■ The file is locked.
  3831.  
  3832. %@AB@%U1054%@AE@%                             %@AB@%cannot create in-line file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  3833.  
  3834.                                   NMAKE failed in its attempt to create 
  3835.                                   the file given by name.%@AI@%  %@AE@%
  3836.  
  3837.                                   The following are possible causes of 
  3838.                                   this error:  
  3839.  
  3840.                                   ■ The file already exists with a 
  3841.                                   read-only attribute.
  3842.  
  3843.                                   ■ There is insufficient disk space to 
  3844.                                   create the file.
  3845.  
  3846. %@AB@%U1055%@AE@%                             %@AB@%out of environment space%@AE@%
  3847.  
  3848.                                   The environment space limit was reached.
  3849.  
  3850.                                   Restart the program with a larger 
  3851.                                   environment space or with fewer 
  3852.                                   environment variables.  
  3853.  
  3854. %@AB@%U1056%@AE@%                             %@AB@%cannot find command processor%@AE@%
  3855.  
  3856.                                   The command processor was not found.  
  3857.  
  3858.                                   NMAKE uses COMMAND.COM or CMD.EXE as a 
  3859.                                   command processor to execute commands. 
  3860.                                   It looks for the command processor first
  3861.                                   by the full path name given by the 
  3862.                                   COMSPEC environment variable. If COMSPEC
  3863.                                   does not exist, NMAKE searches the 
  3864.                                   directories specified by the PATH 
  3865.                                   environment variable.  
  3866.  
  3867. %@AB@%U1057%@AE@%                             %@AB@%cannot delete temporary file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  3868.  
  3869.                                   NMAKE failed to delete the temporary 
  3870.                                   in-line file.  
  3871.  
  3872. %@AB@%U1058%@AE@%                             %@AB@%terminated by user%@AE@%
  3873.  
  3874.                                   Execution of NMAKE was aborted by CTRL+C
  3875.                                   or CTRL+BREAK.  
  3876.  
  3877. %@AB@%U1060%@AE@%                             %@AB@%unable to close file : '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  3878.  
  3879.                                   NMAKE encountered an error while closing
  3880.                                   a file.  
  3881.  
  3882.                                   One of the following may have occurred: 
  3883.  
  3884.                                   ■ The file is a read-only file.
  3885.  
  3886.                                   ■ There is a locking or sharing 
  3887.                                   violation.
  3888.  
  3889.                                   ■ The disk is full.
  3890.  
  3891. %@AB@%U1061%@AE@%                             %@AB@%/F option requires a file name%@AE@%
  3892.  
  3893.                                   The /F command-line option requires the 
  3894.                                   name of the description file to be 
  3895.                                   specified.  
  3896.  
  3897.                                   To use standard input, specify '-' as 
  3898.                                   the description file name.  
  3899.  
  3900. %@AB@%U1062%@AE@%                             %@AB@%missing file name with /X option%@AE@%
  3901.  
  3902.                                   The /X command-line option requires the 
  3903.                                   name of the file to which diagnostic 
  3904.                                   error output should be redirected.  
  3905.  
  3906.                                   To use standard input, specify '-' as 
  3907.                                   the output file name.  
  3908.  
  3909. %@AB@%U1063%@AE@%                             %@AB@%missing macro name before '='%@AE@%
  3910.  
  3911.                                   NMAKE detected an equal sign (=) without
  3912.                                   a preceding name.  
  3913.  
  3914.                                   This error can occur in a recursive call
  3915.                                   when the macro corresponding to the 
  3916.                                   macro name expands to nothing.  
  3917.  
  3918. %@AB@%U1064%@AE@%                             %@AB@%MAKEFILE not found and no target %@AE@%
  3919.                                   %@AB@%specified%@AE@%
  3920.  
  3921.                                   No description file was found, and no 
  3922.                                   target was specified.  
  3923.  
  3924.                                   A description file can be specified 
  3925.                                   either with the /F option or through the
  3926.                                   default file MAKEFILE. Note that NMAKE 
  3927.                                   can create a target using an inference 
  3928.                                   rule even if no description file is 
  3929.                                   specified.  
  3930.  
  3931. %@AB@%U1065%@AE@%                             %@AB@%invalid option '%@AE@%%@AI@%option%@AE@%%@AB@%'%@AE@%
  3932.  
  3933.                                   The option specified is not a valid 
  3934.                                   option for NMAKE.  
  3935.  
  3936. %@AB@%U1066%@AE@%                             %@AB@%option '/N' not supported; use NMAKE%@AE@%
  3937.  
  3938.                                   NMAKE's shell program NMK.COM does not 
  3939.                                   support the /N option.  
  3940.  
  3941.                                   Use NMAKE /N.  
  3942.  
  3943. %@AB@%U1083%@AE@%                             %@AB@%target macro '$(macroname)' expands to %@AE@%
  3944.                                   %@AB@%nothing%@AE@%
  3945.  
  3946.                                   A target was specified as a macro name 
  3947.                                   that has not been defined or has null 
  3948.                                   value.  
  3949.  
  3950.                                   NMAKE cannot process a null target.  
  3951.  
  3952. %@AB@%U1084%@AE@%                             %@AB@%in-line file not allowed in inference %@AE@%
  3953.                                   %@AB@%rules%@AE@%
  3954.  
  3955.                                   In-line file syntax is not allowed in 
  3956.                                   inference rules and can be used only in 
  3957.                                   a target-dependency block.  
  3958.  
  3959. %@AB@%U1094%@AE@%                             %@AB@%syntax error : only (no)keep allowed %@AE@%
  3960.                                   %@AB@%here%@AE@%
  3961.  
  3962.                                   Something other than KEEP or NOKEEP 
  3963.                                   appeared at the end of the syntax for 
  3964.                                   creating an in-line file.  
  3965.  
  3966.                                   The syntax for generating an in-line 
  3967.                                   file allows an action to be specified 
  3968.                                   after the second pair of angle brackets.
  3969.                                   Valid actions are KEEP and NOKEEP. Other
  3970.                                   actions are errors.  
  3971.  
  3972.                                   The KEEP option specifies that NMAKE 
  3973.                                   should leave the in-line file on disk. 
  3974.                                   The NOKEEP option causes NMAKE to delete
  3975.                                   the file before exiting. The default is 
  3976.                                   NOKEEP.  
  3977.  
  3978. %@AB@%U1095%@AE@%                             %@AB@%expanded command line '%@AE@%%@AI@%commandline%@AE@%%@AB@%' too %@AE@%
  3979.                                   %@AB@%long%@AE@%
  3980.  
  3981.                                   After macro expansion, the command line 
  3982.                                   shown exceeded the length limit for 
  3983.                                   command lines for the operating system. 
  3984.  
  3985.                                   DOS permits up to 128 characters on a 
  3986.                                   command line.  
  3987.  
  3988.                                   If the command is a QLINK command line, 
  3989.                                   use a response file.  
  3990.  
  3991. %@AB@%U1096%@AE@%                             %@AB@%cannot open file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  3992.  
  3993.                                   The given file could not be opened, 
  3994.                                   either because the disk was full or 
  3995.                                   because the file has been set to be 
  3996.                                   read-only.  
  3997.  
  3998. %@AB@%U1097%@AE@%                             %@AB@%extmake syntax usage error, no dependent%@AE@%
  3999.  
  4000.                                   No dependent was given.  
  4001.  
  4002.                                   In extmake syntax, the target under 
  4003.                                   consideration must have either an 
  4004.                                   implicit dependent or an explicit 
  4005.                                   dependent.  
  4006.  
  4007. %@AB@%U1098%@AE@%                             %@AB@%extmake syntax in '%@AE@%%@AI@%string%@AE@%%@AB@%' incorrect%@AE@%
  4008.  
  4009.                                   The part of the string shown contains an
  4010.                                   extmake syntax error.  
  4011.  
  4012. %@NL@%
  4013. %@3@%%@CR:C6A00050030 @%%@AB@%5.5.2  Compilation-Error Message%@AE@%%@EH@%%@NL@%
  4014. %@NL@%
  4015. NMAKE generates the following compilation-error messages:  %@NL@%
  4016. %@NL@%
  4017. %@AB@%Number%@AE@%                            %@AB@%Compilation-Error Message%@AE@%
  4018. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  4019. %@AB@%U2001%@AE@%                             %@AB@%no more file handles (too many files %@AE@%
  4020.                                   %@AB@%open)%@AE@%
  4021.  
  4022.                                   NMAKE could not find a free file handle.
  4023.  
  4024.                                   One of the following may be a solution: 
  4025.  
  4026.                                   ■ Reduce recursion in the build 
  4027.                                   procedures.
  4028.  
  4029.                                   ■ Increase the number of file handles by
  4030.                                   changing the FILES setting in
  4031.                                   CONFIG.SYS to allow a larger number of 
  4032.                                   open files. FILES =20 is the recommended
  4033.                                   setting.
  4034.  
  4035. %@NL@%
  4036. %@3@%%@CR:C6A00050031 @%%@AB@%5.5.3  Warning Messages%@AE@%%@EH@%%@NL@%
  4037. %@NL@%
  4038. NMAKE generates the following warning messages:  %@NL@%
  4039. %@NL@%
  4040. %@AB@%Number%@AE@%                            %@AB@%Warning Message%@AE@%
  4041. %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
  4042. %@AB@%U4001%@AE@%                             %@AB@%command file can be invoked only from %@AE@%
  4043.                                   %@AB@%command line%@AE@%
  4044.  
  4045.                                   A command file cannot be invoked from 
  4046.                                   within another command file. Such an 
  4047.                                   invocation is ignored.  
  4048.  
  4049.                                   The command file should contain the 
  4050.                                   entire remaining command line.  
  4051.  
  4052. %@AB@%U4002%@AE@%                             %@AB@%resetting value of special macro '%@AE@%%@AI@%%@AE@%
  4053.                                   %@AI@%macroname%@AE@%%@AB@%'%@AE@%
  4054.  
  4055.                                   The value of a macro such as $(MAKE) was
  4056.                                   changed within a description file.  
  4057.  
  4058.                                   The name by which this program was 
  4059.                                   invoked is not a tagged section in the 
  4060.                                   TOOLS.INI file.  
  4061.  
  4062. %@AB@%U4003%@AE@%                             %@AB@%no match found for wild card '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  4063.  
  4064.                                   There are no file names that match the 
  4065.                                   specified target or dependent file with 
  4066.                                   the wild-card characters asterisk (*) 
  4067.                                   and question mark (?).  
  4068.  
  4069. %@AB@%U4004%@AE@%                             %@AB@%too many rules for target '%@AE@%%@AI@%targetname%@AE@%%@AB@%'%@AE@%
  4070.  
  4071.                                   Multiple blocks of build commands were 
  4072.                                   specified for a target using single 
  4073.                                   colons (:) as separators.  
  4074.  
  4075. %@AB@%U4005%@AE@%                             %@AB@%ignoring rule '%@AE@%%@AI@%rule%@AE@%%@AB@%' (extension not in %@AE@%
  4076.                                   %@AB@%.SUFFIXES)%@AE@%
  4077.  
  4078.                                   The rule was ignored because the 
  4079.                                   suffix(es) in the rule are not listed in
  4080.                                   the .SUFFIXES list.  
  4081.  
  4082. %@AB@%U4006%@AE@%                             %@AB@%special macro undefined : '%@AE@%%@AI@%macroname%@AE@%%@AB@%'%@AE@%
  4083.  
  4084.                                   The special macro name is undefined and 
  4085.                                   expands to nothing.  
  4086.  
  4087. %@AB@%U4007%@AE@%                             %@AB@%file name '%@AE@%%@AI@%filename%@AE@%%@AB@%' too long; %@AE@%
  4088.                                   %@AB@%truncating to 8.3%@AE@%
  4089.  
  4090.                                   The base name of the file has more than 
  4091.                                   eight characters, or the extension has 
  4092.                                   more than three characters. NMAKE 
  4093.                                   truncates the name to an eight-character
  4094.                                   base and a three-character extension.  
  4095.  
  4096. %@AB@%U4008%@AE@%                             %@AB@%removed target '%@AE@%%@AI@%target%@AE@%%@AB@%'%@AE@%
  4097.  
  4098.                                   Execution of NMAKE was interrupted while
  4099.                                   NMAKE was trying to build the given 
  4100.                                   target, and therefore the target was 
  4101.                                   incomplete. Because the target was not 
  4102.                                   specified in the .PRECIOUS list, NMAKE 
  4103.                                   has deleted it.  
  4104.  
  4105. %@AB@%U4009%@AE@%                             %@AB@%duplicate in-line file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
  4106.  
  4107.                                   The given file name is the same as the 
  4108.                                   name of an earlier in-line file.  
  4109.  
  4110.                                   Reuse of this name caused the earlier 
  4111.                                   file to be overwritten. This will 
  4112.                                   probably cause unexpected results.  
  4113.  
  4114. %@NL@%
  4115. %@NL@%
  4116.