home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-03-01 | 200.0 KB | 4,075 lines |
- %@1@%%@AB@%Microsoft QuickC Compiler - UPDATE%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
-
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- %@AB@%Microsoft (R) QuickC (R) Compiler - UPDATE%@AE@%%@NL@%
- %@NL@%
- %@AB@%VERSION 2.5%@AE@%%@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- %@NL@%
- %@NL@%
- MICROSOFT CORPORATION %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%%@NL@%
- %@NL@%
-
-
- Information in this document is subject to change without notice and does
- not represent a commitment on the part of Microsoft Corporation. The
- software described in this document is furnished under a license agreement
- or nondisclosure agreement. The software may be used or copied only in
- accordance with the terms of the agreement. It is against the law to copy
- the software on any medium except as specifically allowed in the license or
- nondisclosure agreement. No part of this manual may be reproduced or trans-
- mitted in any form or by any means, electronic or mechanical, including
- photocopying and recording, for any purpose without the express written
- permission of Microsoft.
- (C) Copyright Microsoft Corporation, 1990. All rights reserved.%@NL@%
- %@NL@%
-
- Printed and bound in the United States of America.%@NL@%
- %@NL@%
-
- Microsoft, MS, MS-DOS, QuickC, and CodeView are registered
- trademarks of
- Microsoft Corporation.%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- Document No. SY10426-0290
-
- %@AI@% %@AE@%OEM D703-2Z
- %@AI@%%@AE@%
- 10
- 9
- 8
- 7
- 6
- 5
- 4
- 3
- 2
- 1
- %@AI@%%@AE@%%@NL@%
- %@NL@%
-
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@1@%%@AB@%Table of Contents%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%%@NL@%
- %@NL@%
-
- %@NL@%
- %@AB@%Introduction%@AE@%%@BO: 1e38@%%@NL@%
- Enhancements for QuickC 2.5%@BO: 21e8@%%@NL@%
- About This Book%@BO: 264e@%%@NL@%
- Key to Document Conventions%@BO: 2943@%%@NL@%
- %@NL@%
- %@AB@%Chapter 1%@AE@%%@BO: 34c5@% %@AB@%User Interface Changes%@AE@%%@NL@%
- %@NL@%
- 1.1%@BO: 3727@% File Menu Changes%@NL@%
- 1.2%@BO: 3b68@% View Menu Changes%@NL@%
- 1.3%@BO: 3ff1@% Search Menu Changes%@NL@%
- 1.4%@BO: 4540@% Make Menu Changes%@NL@%
- 1.5%@BO: 4f53@% Debug Menu: New Quickwatch Command%@NL@%
- 1.6%@BO: 5a11@% Options Menu Changes%@NL@%
- 1.6.1%@BO: 5f29@% Compiler Flags Dialog-Box Changes%@NL@%
- 1.6.2%@BO: 641e@% Linker Flags Dialog-Box Changes%@NL@%
- 1.6.3%@BO: 6767@% Display Dialog-Box Changes%@NL@%
- 1.6.4%@BO: 6c6b@% New Color Command%@NL@%
- 1.7%@BO: 7461@% Help Menu Changes%@NL@%
- %@NL@%
- %@AB@%Chapter 2%@AE@%%@BO: 7737@% %@AB@%Language Differences%@AE@%%@NL@%
- %@NL@%
- 2.1%@BO: 7b90@% ANSI Compatibility%@NL@%
- 2.1.1%@BO: 7cd1@% ANSI-Mandated New Features%@NL@%
- 2.1.2%@BO: 832a@% Integer Promotion Rules%@NL@%
- 2.1.3%@BO: 8780@% Defining NULL as a Pointer%@NL@%
- 2.1.4%@BO: 88f0@% Shift Operators%@NL@%
- 2.1.5%@BO: 8c89@% Pointers to Type Definitions%@NL@%
- 2.1.6%@BO: 91a0@% Identifying Nonstandard Keywords%@NL@%
- 2.1.7%@BO: 95f8@% Trigraphs%@NL@%
- 2.1.8%@BO: 9950@% ANSI Nonconformance%@NL@%
- 2.2%@BO: 9c1c@% New Language Keywords%@NL@%
- 2.2.1%@BO: 9d45@% In-Line Assembler%@NL@%
- 2.2.2%@BO: 9ea9@% Based Pointers and Objects%@NL@%
- 2.2.3%@BO: a125@% Long Double Types%@NL@%
- 2.2.4%@BO: a4fd@% The _fastcall Function Attribute (/Gr Option)%@NL@%
- 2.3%@BO: b1d0@% New Language Features%@NL@%
- 2.3.1%@BO: b2ca@% Strings and Macros%@NL@%
- 2.3.2%@BO: b426@% Tiny Memory Model (.COM Files)%@NL@%
- 2.3.3%@BO: b727@% Custom Memory Models%@NL@%
- 2.3.4%@BO: c3a9@% Omitting Names of Nested Structures and Unions%@NL@%
- 2.3.5%@BO: cb61@% Unsized Arrays as the Last Member of a Structure%@NL@%
- 2.3.6%@BO: cee4@% Improved Warnings%@NL@%
- 2.3.7%@BO: d1e0@% Macros%@NL@%
- 2.4%@BO: d2b7@% Changes and Deletions%@NL@%
- 2.4.1%@BO: d3ab@% Deleted Features%@NL@%
- 2.4.2%@BO: d4b8@% Conditional Compilation and Signed Values%@NL@%
- 2.4.3%@BO: d72e@% The const and volatile Qualifiers%@NL@%
- 2.4.4%@BO: da66@% Memory Allocation%@NL@%
- 2.4.5%@BO: dc28@% Memory Used by Command-Line Arguments%@NL@%
- 2.4.6%@BO: ddc9@% Format Specifiers in printf and scanf%@NL@%
- 2.4.7%@BO: e275@% Functions that Return Float Values%@NL@%
- 2.4.8%@BO: e49c@% The char Variable Alignment%@NL@%
- %@NL@%
- %@AB@%Chapter 3%@AE@%%@BO: e5f4@% %@AB@%Compiler, Linker, and Utility Changes%@AE@%%@NL@%
- %@NL@%
- 3.1%@BO: e952@% Compiler Options%@NL@%
- 3.2%@BO: f7f2@% Linker Options%@NL@%
- 3.3%@BO: fe3f@% LIB Options%@NL@%
- 3.4%@BO: ffc4@% NMAKE Options%@NL@%
- %@NL@%
- %@AB@%Chapter 4%@AE@%%@BO: 10256@% %@AB@%Library Changes%@AE@%%@NL@%
- %@NL@%
- 4.1%@BO: 10432@% Buffer-Manipulation Routines%@NL@%
- 4.2%@BO: 10dbb@% Data-Conversion Routines%@NL@%
- 4.3%@BO: 10f42@% Directory-Control Routines%@NL@%
- 4.4%@BO: 11188@% File-Handling Routines%@NL@%
- 4.5%@BO: 11331@% Graphics Routines%@NL@%
- 4.6%@BO: 11959@% Stream Input and Output Routines%@NL@%
- 4.7%@BO: 11ad5@% Internationalization Routines%@NL@%
- 4.8%@BO: 11ec8@% Math Routines%@NL@%
- 4.9%@BO: 12918@% Memory-Allocation Routines%@NL@%
- 4.10%@BO: 130ab@% Process- and Environment-Control Routines%@NL@%
- 4.11%@BO: 13457@% String-Manipulation Routines%@NL@%
- %@NL@%
- %@AB@%Chapter 5%@AE@%%@BO: 14174@% %@AB@%Error-Message Reference%@AE@%%@NL@%
- %@NL@%
- 5.1%@BO: 14304@% Compiler Errors%@NL@%
- 5.1.1%@BO: 144cc@% Fatal-Error Messages%@NL@%
- 5.1.2%@BO: 17897@% Compilation-Error Messages%@NL@%
- 5.1.3%@BO: 1d5eb@% Warning Messages%@NL@%
- 5.2%@BO: 276ff@% Command-Line Error Messages%@NL@%
- 5.3%@BO: 28504@% Run-Time Error Message%@NL@%
- 5.4%@BO: 288a7@% QLINK Error Messages%@NL@%
- 5.4.1%@BO: 28e72@% Fatal-Error Messages%@NL@%
- 5.4.2%@BO: 2a2b9@% Nonfatal-Error Messages%@NL@%
- 5.4.3%@BO: 2bac8@% Warning Messages%@NL@%
- 5.5%@BO: 2dc1c@% NMAKE Error Messages%@NL@%
- 5.5.1%@BO: 2de14@% Fatal-Error Messages%@NL@%
- 5.5.2%@BO: 30b30@% Compilation-Error Message%@NL@%
- 5.5.3%@BO: 30f76@% Warning Messages%@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A-Intro @%%@1@%%@AB@%Introduction%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- The Microsoft(R) QuickC(R) Compiler version 2.5 offers a variety of new
- features that support the latest advances in C language technology. The main
- enhancements in this version include language compatibility with Microsoft C
- version 6.0, increased ANSI compatibility, and improvements to the user
- interface. %@NL@%
- %@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- NOTE
-
- %@AI@%The term "DOS" refers to both the MS-DOS%@AI@%(R)%@AE@%%@AI@% and IBM Personal Computer DOS
- %@AI@%operating systems. The name of a specific operating system is used when it
- %@AI@%is necessary to note features that are unique to that system.%@AE@%%@AE@%%@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00000001 @%%@AB@%Enhancements for QuickC 2.5%@AE@%%@EH@%%@NL@%
- %@NL@%
- Here's a quick summary of the enhancements for QuickC version 2.5. The
- following chapters describe these features in more detail. %@NL@%
- %@NL@%
- %@NL@%
- ■ Language compatibility with Microsoft C version 6.0%@NL@%
- %@NL@%
- ■ Increased ANSI standard C compatibility %@NL@%
- %@NL@%
- ■ Support for the tiny memory model%@NL@%
- %@NL@%
- ■ Enhanced graphics library%@NL@%
- %@NL@%
- ■ New Quickwatch debugging feature%@NL@%
- %@NL@%
- ■ Customized color window support
- %@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- NOTE
-
- %@AI@%Due to the size of the expanded run-time libraries, QuickC 2.5 must be used
- %@AI@%with a hard disk.%@AE@%%@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- The QuickC Advisor has also been updated to provide information on all
- QuickC language, user interface, and compiler features. Consult the Advisor
- for detailed information on any of the features mentioned in this book. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00000002 @%%@AB@%About This Book%@AE@%%@EH@%%@NL@%
- %@NL@%
- This book is divided into five chapters: %@NL@%
- %@NL@%
- %@NL@%
- ■ Chapter 1, "User Interface Changes," discusses the changes in menus,
- menu commands, dialog boxes, and error messages.%@NL@%
- %@NL@%
- ■ Chapter 2, "Language Differences," describes the differences between
- QuickC 2.5 and QuickC 2.0.%@NL@%
- %@NL@%
- ■ Chapter 3, "Compiler, Linker, and Utility Changes," lists the new
- utility and QCL compile and link options.%@NL@%
- %@NL@%
- ■ Chapter 4, "Library Changes," lists the new library routines and
- summarizes their use.%@NL@%
- %@NL@%
- ■ Chapter 5, "Error-Message Reference," lists the new QuickC error
- messages.%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00000003 @%%@AB@%Key to Document Conventions%@AE@%%@EH@%%@NL@%
- %@NL@%
- This book uses the following document conventions: %@NL@%
- %@NL@%
- %@AB@%Example%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- COPY TEST.OBJ C: Uppercase letters represent DOS commands
- and file names.
-
- %@AB@%printf%@AE@% Boldface letters indicate standard
- features of the C language: keywords,
- operators, and standard library
- functions.
-
- %@AI@%expression%@AE@% Words in italics indicate placeholders
- for information you must supply, such as
- a file name. Italics are also
- occasionally used for emphasis in the
- text.
-
- %@AS@%main()%@AE@% This typeface is used for example
- %@AS@%{%@AE@% programs, program fragments, and the
- %@AS@%}%@AE@% names of user-defined functions and
- variables. It also indicates user input
- and screen output. %@AS@% %@AE@%
-
- %@AB@%CL%@AE@% %@AI@%options%@AE@% «%@AI@%files...%@AE@%» A horizontal ellipsis following an item
- indicates that more items having the
- same form may follow.
-
- %@AS@%while( )%@AE@%%@AS@%%@AE@% A vertical ellipsis tells you that part
- %@AS@%{%@AE@% of the example program has been
- %@AS@% .%@AE@% intentionally omitted.
- %@AS@% .%@AE@%
- %@AS@% .%@AE@%
- %@AS@%}%@AE@%
-
- SHIFT Small capital letters denote names of
- keys on the keyboard. A plus sign ( + )
- indicates a combination of keys. For
- example, SHIFT+F5 tells you to hold down
- the SHIFT key while pressing the F5 key.
-
- "array pointer" The first time a new term is defined, it
- is enclosed in quotation marks. Since
- some knowledge of programming is assumed,
- common terms such as memory or branch
- are not defined.
-
- American National Standards The first time an acronym appears, it is
- Institute (ANSI) spelled out.
-
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A00010001 @%%@1@%%@AB@%Chapter 1 User Interface Changes%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- The changes in version 2.5 of the QuickC Compiler environment implement new
- features, such as the Quickwatch command, as well as improvements to
- existing features. This chapter describes the changes; they are grouped
- according to the menu in which they appear. %@NL@%
- %@NL@%
- Remember, you can use online help to get information about all environment
- features, including those described in this section. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00010002 @%%@AB@%1.1 File Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following changes are found in the File menu:%@CR:C6A00010003 @%%@CR:C6A00010004 @%%@CR:C6A00010005 @% %@NL@%
- %@NL@%
- %@AB@%Change%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Read-only file warning If you select a read-only file with the
- Open command in the File menu, a dialog
- box informs you the file is read-only.
-
- Closing notepad files In QuickC 2.5, closing the Notepad
- window saves and frees the file. In
- QuickC 2.0, when you load a file in the
- Notepad window and then close it, the
- file is not freed. The file therefore
- cannot be loaded into the Program
- window.%@CR:C6A00010006 @%
-
- %@NL@%
- %@2@%%@CR:C6A00010007 @%%@AB@%1.2 View Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following change is found in the View menu:%@CR:C6A00010008 @%%@CR:C6A00010009 @%%@CR:C6A00010010 @% %@NL@%
- %@NL@%
- %@AB@%Change%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Registers window The Registers window displayed with the
- Windows command in the View menu has
- been modified to display information
- about the math coprocessor chip and
- emulator. Additionally, pressing TAB
- moves the cursor forward between
- modifiable fields, while pressing
- SHIFT+TAB moves the cursor backward
- between modifiable fields. Pressing
- ENTER or double-clicking the Left mouse
- button allows you to modify a register.
-
- %@NL@%
- %@2@%%@CR:C6A00010011 @%%@AB@%1.3 Search Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following changes are found in the Search menu:%@CR:C6A00010012 @%%@CR:C6A00010013 @%%@CR:C6A00010014 @% %@NL@%
- %@NL@%
- %@AB@%Change%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- New Go to command The Go to... command has been added to
- the Search menu. This command displays a
- dialog box into which you type a desired
- line number. Then QuickC moves the
- cursor to that line.%@CR:C6A00010015 @%
-
- Selected text shortcut key Since the backslash key ( \ ) is not
- available on standard European keyboards,
- the shortcut key for the Selected Text
- command has been changed from CTRL+\ to
- CTRL+F3. CTRL+\ is now the shortcut key
- for the Find command in the Search menu.
- The effect of CTRL+\ can be modified
- with the MKKEY utility.
-
-
-
- %@NL@%
- %@2@%%@CR:C6A00010016 @%%@AB@%1.4 Make Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following changes are found in the Make menu:%@CR:C6A00010017 @%%@CR:C6A00010018 @%%@CR:C6A00010019 @% %@NL@%
- %@NL@%
- %@AB@%Change%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Canceling the build process With version 2.5, pressing ESC cancels a
- compile, but not a link. The dialog box
- tells you to press CTRL+BREAK to cancel
- both compiling and linking. Previously,
- when either the Build or the Rebuild All
- command was given, the dialog box said
- to press ESC to cancel compiling and
- linking.%@CR:C6A00010020 @%
-
- .H files in the program list QuickC 2.5 supports adding .H files to
- the program list with the Edit Program
- List command. QuickC treats all .C files
- as dependents of the .H files in the
- list. If an include file is modified,
- QuickC performs a full rebuild. If you
- have hand-edited a makefile to encode .H
- file dependencies, then QuickC does not
- display these include files as part of
- the program list in the Edit Program
- List dialog box. If QuickC rewrites the
- hand-edited makefile, these include-file
- dependencies are not modified.%@CR:C6A00010021 @% %@CR:C6A00010022 @%
-
- Alphabetical file File names are now displayed
- display in the alphabetically in the program list and
- program list in the dialog box displayed by choosing
- the Source command in the View menu.
- Consequently, names of .LIB files are
- displayed at the end of the list,
- eliminating the need to scroll over
- names of files that cannot be opened
- with the Source command.
-
- %@NL@%
- %@2@%%@CR:C6A00010023 @%%@AB@%1.5 Debug Menu: New Quickwatch Command%@AE@%%@EH@%%@NL@%
- %@NL@%
- The Quickwatch command is a new feature in QuickC 2.5. It gives you a faster
- view of variables and expressions than does the Watch Value command. To use
- Quickwatch%@CR:C6A00010024 @%%@CR:C6A00010025 @%%@CR:C6A00010026 @%%@CR:C6A00010027 @%%@CR:C6A00010028 @% %@NL@%
- %@NL@%
- %@NL@%
- 1. Move the cursor to the variable you want to watch, or highlight the
- expression you want to watch.%@NL@%
- %@NL@%
- 2. Choose the Quickwatch command from the Debug menu or press SHIFT+F9%@NL@%
- %@NL@%
- %@NL@%
- QuickC displays a dialog box with the selected variable or expression along
- with the current value. See Figure 1.1. %@NL@%
- %@NL@%
- %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
- %@NL@%
- Instead of placing the cursor on the variable or highlighting the expression
- you want to watch, you can select Quickwatch, or press SHIFT+F9, and type an
- expression in the text box of the dialog box. %@NL@%
- %@NL@%
- The lower part of the Quickwatch dialog box contains the following buttons:
- %@NL@%
- %@NL@%
- Zoom Modify Value Evaluate Cancel Add Watch Help %@NL@%
- %@NL@%
- The Zoom button expands or contracts an array or structure. Zoom displays
- the values of the array members or structure elements in the List box. To
- show levels of expansion in the List box, nested elements are indented one
- space. If the expression has already been expanded, the Zoom button
- contracts the items. If a variable can be expanded, it has a "+" prefix. If
- a variable can be contracted, it has a "-" prefix. If the expression cannot
- be expanded or contracted and Zoom is selected, QuickC beeps. %@NL@%
- %@NL@%
- The Evaluate button uses the current expression in the Expression text box
- as the new base variable. If the expression can be expanded, the Zoom button
- displays items in the List box. %@NL@%
- %@NL@%
- To further expand nested items shown in the List box, select item names with
- the mouse or cursor. The item names are copied to the Expression text box,
- and the appropriate values are displayed in the Value text box and the List
- box. Then you can use the Zoom button to expand or contract the nested
- items. %@NL@%
- %@NL@%
- The Add Watch button adds the current expression to the Watch window. If the
- expression is already included in the Watch window, Add Watch has no effect.
- %@NL@%
- %@NL@%
- The Modify Value button changes the value of the expression to the value
- entered in the Value text box. When you select Modify Value, QuickC records
- and displays the updated value in the List box. %@NL@%
- %@NL@%
- The Cancel button closes the Quickwatch dialog box. %@NL@%
- %@NL@%
- The Help button displays information about using the Quickwatch dialog box.
- %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00010029 @%%@AB@%1.6 Options Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following changes are found in the Options menu:%@CR:C6A00010030 @%%@CR:C6A00010031 @%%@CR:C6A00010032 @% %@NL@%
- %@NL@%
- %@AB@%Change%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Run/Debug command-line length In QuickC 2.5, the Command Line text box
- limitation in the Run/Debug dialog box accepts up
- to 126 characters. A warning message is
- displayed if the length of text exceeds
- 126 characters. QuickC 2.0 accepts up to
- 256 characters. However, only the first
- 126 characters are used.
-
- Compiler flags, linker flags, Numerous changes have been made to the
- and display dialog box changes compiler flags, linker flags, and
- display dialog boxes. They are described
- in the following sections.
-
- New color command Enhanced options for setting colors in
- QuickC are described below.
-
- %@NL@%
- %@3@%%@CR:C6A00010033 @%%@AB@%1.6.1 Compiler Flags Dialog-Box Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The Compiler Flags dialog box, shown in Figure 1.2, contains the following
- modifications: %@NL@%
- %@NL@%
- %@NL@%
- ■ The Compiler Flags dialog box, displayed by selecting the Compiler
- Flags button in the Make dialog box, has been modified to support the
- tiny memory model.%@NL@%
- %@NL@%
- ■ The Warning Level option has been changed from a set of option buttons
- to a text box, and this option now supports warning levels up to 4. If
- you enter an invalid warning level, QuickC displays a warning message.%@NL@%
- %@NL@%
- ■ In QuickC version 2.5, the Full CodeView check box replaces the Line
- Numbers Only option under Debug Flags in version 2.0. If Full CodeView
- is checked, QuickC generates complete information on the Microsoft
- CodeView(R) debugger. If the option is left unchecked, QuickC
- generates line number information.%@NL@%
- %@NL@%
- ■ Three Custom Flags text boxes have been added to the dialog box. They
- allow you to specify additional Global, Debug, and Release compiler
- directives. %@NL@%
- %@NL@%
- %@STUB@% %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00010034 @%%@AB@%1.6.2 Linker Flags Dialog-Box Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The Linker Flags dialog box, shown in Figure 1.3, contains the following
- changes:%@CR:C6A00010035 @% %@NL@%
- %@NL@%
- %@NL@%
- ■ The Global Flags check boxes contain a new option called Generate .COM
- File. This option uses the tiny memory model to create .COM files.%@NL@%
- %@NL@%
- ■ A new Memory Needs text box allows you to specify the amount of memory
- to allocate for a program.%@NL@%
- %@NL@%
- ■ The new Custom Flags text box allows you to specify additional Global
- linker directives, as well as those for Debug and Release versions of
- the program. Enter linker directives in the appropriate text box.%@NL@%
- %@NL@%
- %@STUB@% %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00010036 @%%@AB@%1.6.3 Display Dialog-Box Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The Display dialog box, shown in Figure 1.4, has been changed as follows: %@NL@%
- %@NL@%
- %@NL@%
- ■ The Save Before Build check box controls whether files are saved
- before building.%@NL@%
- %@NL@%
- ■ The Keep Tabs option controls tab settings. If the option is off, tabs
- are converted to the appropriate number of spaces. Then when the file
- is saved, leading spaces are converted back to tabs. If the option is
- on, tabs are always treated as tabs and are never converted to spaces.
- The default for this option is off, which is equivalent to the QuickC
- 2.0 method of handling tabs.%@CR:C6A00010037 @%%@CR:C6A00010038 @%%@NL@%
- %@NL@%
- ■ The Show 8087 check box controls whether the 8087 registers are
- displayed in the Registers window.%@NL@%
- %@NL@%
- ■ When you check the Save Before Build check box, QuickC saves any
- changes in open files before it builds the program.%@NL@%
- %@NL@%
- %@NL@%
- %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
- %@NL@%
- The Display dialog box no longer contains a color selection option. Expanded
- color options are now available through the Color command in the Options
- menu. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00010039 @%%@AB@%1.6.4 New Color Command%@AE@%%@EH@%%@NL@%
- %@NL@%
- The Color command in the Options menu gives you greater control over the
- appearance of QuickC. Items such as menus, borders, buttons, and text within
- windows (such as source, errors, and registers) can all be given unique
- colors (see Figure 1.5). %@NL@%
- %@NL@%
- %@AU@%(This figure may be found in the printed book.)%@AE@%%@NL@%
- %@NL@%
- Four predefined color sets are available. All four color sets can be
- modified. %@NL@%
- %@NL@%
- %@AB@%Color Set%@AE@% %@AB@%Description%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- 1 Defines the color set for 16-color
- display monitors
-
- 2 Defines the color set for 8-color
- displays
-
- 3 Specifies the color set for monochrome
- displays
-
- LCD Defines the color set for Liquid Crystal
- Displays
-
- You can customize the color of a window item by selecting that item from the
- Item list box, then changing the values in the Foreground and Background
- list boxes. Changing an item's color modifies it only within the selected
- color set. %@NL@%
- %@NL@%
- The Redraw button redraws the screen with the new color values. Color
- changes take place when the OK button is pressed. %@NL@%
- %@NL@%
- The Default button restores the normal color values. The default colors for
- each set are shown in the following list: %@NL@%
- %@NL@%
- %@AB@%Color Set%@AE@% %@AB@%Default%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- 1 QuickC 2.0 #1
-
- 2 QuickBasic 4.5 8-color
-
- 3 QuickC 2.0 #3
-
- LCD QuickC 2.0 LCD
-
- %@NL@%
- %@2@%%@CR:C6A00010040 @%%@AB@%1.7 Help Menu Changes%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following changes are found in the Help menu:%@CR:C6A00010041 @%%@CR:C6A00010042 @%%@CR:C6A00010043 @% %@NL@%
- %@NL@%
- %@NL@%
- ■ In QuickC 2.5, if a low memory condition exists when you try to access
- online help, a dialog box appears and asks if you want to close the
- current program first, thus freeing enough memory to run help.%@NL@%
- %@NL@%
- ■ In QuickC 2.0, if there isn't enough memory to access online help,
- QuickC displays an %@AS@% Out of Memory %@AE@% error. At this point, the only way
- to get help information is to exit QuickC and start over again.%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A00020001 @%%@1@%%@AB@%Chapter 2 Language Differences%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- This chapter describes the language differences between versions 2.5 and 2.0
- of the QuickC Compiler. Some of the changes are required by the American
- National Standards Institute (ANSI) standard for the C programming language.
- Other changes improve or augment the existing capabilities of QuickC and
- make it compatible with Microsoft C version 6.0.%@CR:C6A00020002 @% %@NL@%
- %@NL@%
- The chapter is divided into four sections: %@NL@%
- %@NL@%
- %@NL@%
- ■ ANSI Compatibility%@NL@%
- %@NL@%
- ■ New Language Keywords%@NL@%
- %@NL@%
- ■ New Language Features%@NL@%
- %@NL@%
- ■ Changes and Deletions%@NL@%
- %@NL@%
- %@NL@%
- Many of the changes described in this chapter do not affect code written for
- previous versions of QuickC. In some cases, however, you may have to modify
- existing code before compiling with version 2.5. Refer to section 2.4,
- "Changes and Deletions," for revisions that may impact your program. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00020003 @%%@AB@%2.1 ANSI Compatibility%@AE@%%@EH@%%@NL@%
- %@NL@%
- A number of changes have been made to the compiler to support the ANSI
- stan-dard. These include additions that make QuickC programs more portable
- and allow you to take advantage of more ANSI features.%@CR:C6A00020004 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020005 @%%@AB@%2.1.1 ANSI-Mandated New Features%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following ANSI-mandated features are new to QuickC 2.5: %@NL@%
- %@NL@%
- %@NL@%
- ■ Both %@AB@%long %@AE@%and %@AB@%unsigned long%@AE@% values are allowed in switch expressions
- and case constants. Previous versions of QuickC allow only %@AB@%char%@AE@% and
- %@AB@%int%@AE@% values in this context.%@CR:C6A00020006 @%%@NL@%
- %@NL@%
- ■ QuickC supports %@AB@%unsigned long%@AE@% decimal constants. It is now possible to
- initialize %@AB@%unsigned long%@AE@% variables with values larger than %@AB@%MAX_LONG%@AE@%
- using decimal (rather than hexadecimal or octal) constants.%@CR:C6A00020007 @%%@NL@%
- %@NL@%
- ■ You can declare %@AB@%signed%@AE@% as well as %@AB@%unsigned%@AE@% bitfields. %@CR:C6A00020008 @%%@CR:C6A00020009 @%%@NL@%
- %@NL@%
- ■ Bitfields are permitted in unions.%@CR:C6A00020010 @%%@NL@%
- %@NL@%
- ■ Storage classes or types (or both) are now required on variable
- declarations. QuickC previously assumed that declarations without a
- specific type were integer declarations. An untyped declaration now
- generates a warning.%@CR:C6A00020011 @%%@NL@%
- %@NL@%
- ■ The LOCALE.H header file is new to version 2.5. It declares functions
- and structures for describing conventions, such as the currency
- symbol, that vary from one country to another.%@CR:C6A00020012 @%%@NL@%
- %@NL@%
- ■ The semantics for %@AB@%volatile%@AE@% have been implemented. Previously, %@AB@%volatile%@AE@%
- was only syntactically implemented.%@CR:C6A00020013 @%%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020014 @%%@AB@%2.1.2 Integer Promotion Rules%@AE@%%@EH@%%@NL@%
- %@NL@%
- The ANSI standard changes the method of evaluation of some expressions that
- mix signed and unsigned integers. Earlier versions of QuickC attempt to
- preserve an expression's unsigned nature as much as possible. Version 2.5
- attempts to preserve the expression's value.%@CR:C6A00020015 @%%@CR:C6A00020016 @% %@NL@%
- %@NL@%
- In version 2.5, an %@AB@%unsigned char%@AE@% promotes to a %@AB@%signed int%@AE@%; an %@AB@%unsigned int%@AE@%
- promotes to a %@AB@%signed long%@AE@%. %@NL@%
- %@NL@%
- In version 2.0, an %@AB@%unsigned char%@AE@% promotes to an %@AB@%unsigned int%@AE@%; an %@AB@%unsigned
- %@AB@%int%@AE@% promotes to an %@AB@%unsigned long%@AE@%. %@NL@%
- %@NL@%
- For example: %@NL@%
- %@NL@%
- %@AS@% main()
- %@AS@% {
- %@AS@% long int li = -256L;
- %@AS@% test( li );
- %@AS@% }%@AE@%%@NL@%
- %@NL@%
- %@AS@% test( long li )
- %@AS@% {
- %@AS@% if( li < 0xffff )
- %@AS@% puts( "QuickC 2.5 does a signed comparison" );
- %@AS@% else puts( "QuickC 2.0 does an unsigned comparison" );
- %@AS@% }%@AE@%%@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020017 @%%@AB@%2.1.3 Defining NULL as a Pointer%@AE@%%@EH@%%@NL@%
- %@NL@%
- The constant %@AB@%NULL %@AE@%is now defined as %@AS@% ((void *)0)%@AE@%. Previous versions of
- QuickC define %@AB@%NULL%@AE@% as 0x0000 in the small and medium models and as
- 0x00000000L in the compact and large models.%@CR:C6A00020018 @%%@CR:C6A00020019 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020020 @%%@AB@%2.1.4 Shift Operators%@AE@%%@EH@%%@NL@%
- %@NL@%
- Shift operators now give a result that is of the same type as the left
- operand. For example, consider the code fragment%@CR:C6A00020021 @%%@CR:C6A00020022 @% %@NL@%
- %@NL@%
- %@AS@% short short_int;
- %@AS@% long long_int;
- %@AS@% short_int = 0x0001;
- %@AS@% long_int = short_int << 16L;%@AE@%%@NL@%
- %@NL@%
- To adhere to the ANSI standard, QuickC 2.5 maintains the size of the left
- operand. The variable %@AS@% short_int %@AE@% has 16 bits. Shifting left 16 times
- produces a value of 0, which is then assigned to %@AS@% long_int%@AE@%. %@NL@%
- %@NL@%
- QuickC previously yielded a result that was the size of the "widest" (or
- largest) of the two values. In the example above, the short value is
- automatically cast to a long because 16L is long. The value assigned to %@AS@%
- %@AS@%long_int %@AE@% is 0x00010000L in QuickC 2.0. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020023 @%%@AB@%2.1.5 Pointers to Type Definitions%@AE@%%@EH@%%@NL@%
- %@NL@%
- The rules for handling pointers to type definitions have changed subtly. For
- example, QuickC 2.5 interprets%@CR:C6A00020024 @%%@CR:C6A00020025 @% %@NL@%
- %@NL@%
- %@AS@% typedef int far f_int;
- %@AS@% f_int *fp_i;%@AE@%%@NL@%
- %@NL@%
- as being equivalent to %@NL@%
- %@NL@%
- %@AS@% int far *fp_i;%@AE@%%@NL@%
- %@NL@%
- which means %@AS@% fp_i %@AE@% is a near variable that is a far pointer to an integer.
- The address of the integer contains 32 bits. The size of the address of %@AS@%
- %@AS@%fp_i %@AE@% is memory model dependent. %@AS@% %@AE@%%@NL@%
- %@NL@%
- QuickC 2.0 interprets the declaration as %@NL@%
- %@NL@%
- %@AS@% int *far fp_i;%@AE@%%@NL@%
- %@NL@%
- where %@AS@% fp_i %@AE@% is a far variable that is a near pointer to an integer. The
- address of %@AS@% fp_i %@AE@% is 32 bits. The size of the integer's address is
- indeterminate. %@NL@%
- %@NL@%
- This change in handling pointers to type definitions affects type
- definitions containing %@AB@%_near%@AE@%, %@AB@%_far%@AE@%, %@AB@%_based%@AE@%, and other modifiers. Although
- these are Microsoft-specific keywords, their new behavior is consistent with
- the ANSI standard's requirements for the %@AB@%const %@AE@%and %@AB@%volatile %@AE@%keywords. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020026 @%%@AB@%2.1.6 Identifying Nonstandard Keywords%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following modifiers are specific to QuickC; they are not part of the
- ANSI standard. To identify these implementation-defined keywords as
- non-ANSI, an initial underscore has been added.%@CR:C6A00020027 @%%@CR:C6A00020028 @% %@NL@%
- %@NL@%
- %@AB@%QuickC 2.5 Keyword%@AE@% %@AB@%QuickC 2.0 Keyword%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_far%@AE@% %@AB@%far%@AE@%
-
- %@AB@%_huge%@AE@% %@AB@%huge%@AE@%
-
- %@AB@%_near%@AE@% %@AB@%near%@AE@%
-
- %@AB@%_cdecl%@AE@% %@AB@%cdecl%@AE@%
-
- %@AB@%_fortran%@AE@% %@AB@%fortran%@AE@%
-
- %@AB@%_interrupt%@AE@% %@AB@%interrupt%@AE@%
-
- %@AB@%_pascal%@AE@% %@AB@%pascal%@AE@%
-
- The compiler still accepts the obsolescent versions of these keywords,
- unless you use the /Za (disable extensions) option. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020029 @%%@AB@%2.1.7 Trigraphs%@AE@%%@EH@%%@NL@%
- %@NL@%
- To maintain ANSI compatibility with and portability to other systems, QuickC
- supports the trigraphs listed below. The compiler interprets each sequence
- in the left column as equivalent to the character shown in the right column.%@CR:C6A00020030 @%%@CR:C6A00020031 @%
- %@NL@%
- %@NL@%
- %@AB@%Trigraph%@AE@% %@AB@%Character%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- ??= #
-
- ??( [
-
- ??/ \
-
- ??) ]
-
- ??' ^
-
- ??< {
-
- ??! |
-
- ??> }
-
- ??- ~
-
- %@NL@%
- %@3@%%@CR:C6A00020032 @%%@AB@%2.1.8 ANSI Nonconformance%@AE@%%@EH@%%@NL@%
- %@NL@%
- Areas in which QuickC version 2.5 does not follow the ANSI standard include
- the following:%@CR:C6A00020033 @% %@NL@%
- %@NL@%
- %@NL@%
- ■ QuickC does not support multibyte characters, wide-character constants
- and string constants comprising wide characters, and the related
- library functions and types.%@NL@%
- %@NL@%
- ■ QuickC contains some extended keywords (such as %@AB@%_near%@AE@% and %@AB@%_far%@AE@%),
- non-ANSI macros and types in header files, and extended library
- function names (such as %@AB@%read %@AE@%and %@AB@%write%@AE@%) that exceed ANSI name-space
- maximums.%@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00020034 @%%@AB@%2.2 New Language Keywords%@AE@%%@EH@%%@NL@%
- %@NL@%
- This section describes keywords that do not exist in previous versions of
- QuickC. Details about the use of these keywords can be found in the online
- help.%@CR:C6A00020035 @%%@CR:C6A00020036 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020037 @%%@AB@%2.2.1 In-Line Assembler%@AE@%%@EH@%%@NL@%
- %@NL@%
- A new pseudoinstruction, %@AB@%_emit%@AE@%, has been added for use with the in-line
- assembler. This pseudoinstruction allows you to define a single immediate
- byte at the current location in the current text segment.%@CR:C6A00020038 @%%@CR:C6A00020039 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020040 @%%@AB@%2.2.2 Based Pointers and Objects%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC 2.5 supports the following new keywords and operators: %@AB@%_based%@AE@%,
- %@AB@%_segment%@AE@%, %@AB@%_segname%@AE@%, and %@AB@%:>%@AE@%. They are used to declare and manipulate based
- objects.%@CR:C6A00020041 @%%@CR:C6A00020042 @%%@CR:C6A00020043 @%%@CR:C6A00020044 @% %@NL@%
- %@NL@%
- Based object support is included in QuickC 2.5 for the sake of compatibility
- with Microsoft C version 6.0. Refer to Chapter 2, "Managing Memory," in %@AI@%
- %@AI@%Microsoft C Advanced Programming Techniques%@AE@% for further details. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020045 @%%@AB@%2.2.3 Long Double Types%@AE@%%@EH@%%@NL@%
- %@NL@%
- Because the 80%@AI@%x%@AE@%87 family of math coprocessors supports an 80-bit
- floating-point type, QuickC version 2.5 stores %@AB@%long double%@AE@% variables in the
- 80%@AI@%x%@AE@%87 10-byte (80-bit) form. %@NL@%
- %@NL@%
- QuickC version 2.0 recognizes %@AB@%long double%@AE@% and %@AB@%double%@AE@% as different types,
- with both types stored in memory as 64-bit quantities.%@CR:C6A00020046 @% %@NL@%
- %@NL@%
- Certain library functions have been modified to handle the %@AB@%long double%@AE@% type.
- The %@AB@%printf%@AE@% and %@AB@%scanf%@AE@% family of functions supports %@AB@%long double%@AE@% values; their
- format has the %@AB@%l%@AE@% type prefix. The library contains new versions of the
- transcendental functions as well as intrinsic forms that accept %@AB@%long double%@AE@%
- arguments. The names of these functions have a trailing %@AB@%l%@AE@% (for example,
- %@AB@%cosl%@AE@%). %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020047 @%%@AB@%2.2.4 The _fastcall Function Attribute (/Gr Option)%@AE@%%@EH@%%@NL@%
- %@NL@%
- The new %@AB@%_fastcall%@AE@% function attribute enables QuickC to pass function
- arguments in processor registers instead of on the stack. This ability
- results in faster function calls when a QuickC program is built with
- Microsoft C version 6.0.%@CR:C6A00020048 @% %@NL@%
- %@NL@%
- You can define fastcall functions in two ways. Use the %@AB@%_fastcall%@AE@% function
- attribute to declare an individual function as fastcall: %@NL@%
- %@NL@%
- %@AS@% int _fastcall FastFunc( void );%@AE@%%@NL@%
- %@NL@%
- Additionally, the /Gr option enables the fastcall function-calling
- convention for all functions that are not explicitly prototyped with the
- %@AB@%_cdecl%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fortran %@AE@%attributes. Using /Gr on the command line
- causes each function in the module to compile as %@AB@%_fastcall%@AE@% unless the
- function is declared with a conflicting attribute, or the name of the
- function is %@AB@%main%@AE@%. %@NL@%
- %@NL@%
- None of the library functions have the fastcall attribute; their arguments
- are passed on the stack, not in registers. If you compile with the /Gr
- option, you must include the correct header file for each library function
- or write a prototype for the function using the %@AB@%_cdecl%@AE@% attribute. %@NL@%
- %@NL@%
- A fastcall function can receive up to three 16-bit arguments. Arguments are
- passed in the AX, BX, and DX registers. Fastcall arguments are passed in the
- registers shown below. If you pass one character argument, it is passed in
- the AL register. If you pass two character arguments, the second argument is
- passed in DL, and so on. %@NL@%
- %@NL@%
- %@AB@%Argument Type%@AE@% %@AB@%Registers%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Character AL, DL, BL
-
- Short integer AX, DX, BX
-
- Near pointer BX, AX, DX
-
- Long integer DX:AX
-
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- %@AU@%WARNING%@AE@%%@NL@%
- %@NL@%
- Future versions of QuickC may pass fastcall arguments in different
- registers.%@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- %@NL@%
- If all of the registers for a particular type have already been used, or if
- an argument is not one of the types listed above, it is pushed on the stack
- as usual. Given an argument list of types %@AB@%long%@AE@%, %@AB@%float%@AE@%, and %@AB@%short%@AE@%, QuickC
- passes the %@AB@%long %@AE@%in DX:AX, pushes the %@AB@%float%@AE@%, and passes the %@AB@%short %@AE@%in BX.
- Fastcall functions return any floating-point value on the floating-point
- processor stack. %@NL@%
- %@NL@%
- The treatment of character arguments is also dependent on prototypes. If
- there is no prototype, the argument is promoted to %@AB@%short%@AE@%. %@NL@%
- %@NL@%
- The %@AB@%_fastcall %@AE@%convention is not compatible with any of the following
- attributes: %@AB@%_interrupt%@AE@%, %@AB@%_saveregs%@AE@%, %@AB@%_export%@AE@%, %@AB@%_cdecl%@AE@%, %@AB@%_fortran%@AE@%, or %@AB@%_pascal%@AE@%.
- Consult online help for more information on these attributes. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00020049 @%%@AB@%2.3 New Language Features%@AE@%%@EH@%%@NL@%
- %@NL@%
- A number of new language features have been implemented in version 2.5 to
- maintain compatibility with Microsoft C version 6.0.%@CR:C6A00020050 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020051 @%%@AB@%2.3.1 Strings and Macros%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC now allows longer string literals (up to 2K) and longer macro
- expansions (up to 12K). In low memory conditions, the macro expansion space
- could be limited to 6K.%@CR:C6A00020052 @%%@CR:C6A00020053 @%%@CR:C6A00020054 @%%@CR:C6A00020055 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020056 @%%@AB@%2.3.2 Tiny Memory Model (.COM Files)%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC 2.5 supports the tiny memory model, which produces .COM files rather
- than .EXE files. In the tiny memory model, all of your program code and data
- must fit in a single 64K segment.%@CR:C6A00020057 @%%@CR:C6A00020058 @%%@CR:C6A00020059 @% %@NL@%
- %@NL@%
- The /AT option selects the tiny model. This option causes the linker to use
- the /NOE and /TINY options. Within the linker, /TINY turns on the
- /FARCALLTRANSLATION option to help eliminate far-segment relocations. If you
- invoke QLINK separately on your own .OBJ files, link with the CRTCOM library
- and make it first in the .OBJ list. The /TINY option is incompatible with
- the /INCREMENTAL option. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020060 @%%@AB@%2.3.3 Custom Memory Models%@AE@%%@EH@%%@NL@%
- %@NL@%
- For most programs, using one of the standard memory models is sufficient. In
- special cases, however, you may need to create a customized memory model.
- For example, you might want to create a huge-compact model that would allow
- huge data items but only one code segment.%@CR:C6A00020061 @%%@CR:C6A00020062 @%%@CR:C6A00020063 @% %@NL@%
- %@NL@%
- You can create a custom memory model with the /A compiler option. /A must be
- followed by three letters representing the following memory-model
- attributes: %@NL@%
- %@NL@%
- %@NL@%
- ■ Code pointer size%@NL@%
- %@NL@%
- ■ Data pointer size%@NL@%
- %@NL@%
- ■ Stack- and data-segment setup%@NL@%
- %@NL@%
- %@NL@%
- Table 2.1 shows the options used for defining code pointers, data pointers,
- and stack- and data-segment setup in custom memory models. %@NL@%
- %@NL@%
- %@AB@%Table %@AB@%2.1 Custom Memory Model Options%@AE@%%@AE@%
-
- %@TH: 22 932 02 34 08 34 @%
- Attribute Option Meaning
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- Code Addresses s Near (16-bit)
-
- l Far (32-bit)
-
- Data Pointers n Near (6-bit)
-
- f Far (32-bit)
-
- h Huge (32-bit normalized)
-
- Stack-and Data-Segment Setup d Assume SS==DS (default)
-
- u Assume SS!=DS; DS is reloaded on
- function entry.
-
- w Assume SS!=DS; DS is not
- reloaded on function entry.
-
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
-
- %@TE: 22 932 02 34 08 34 @%
-
- You must specify all three options, but the letters can follow /A in any
- order. To specify the huge-compact model mentioned earlier, for example, you
- can use /Ashd, /Ahsd, or some other ordering of the following letters: s
- (for near code addresses), h (for huge data pointers), and d (for the
- default data- and stacksegment setup). %@NL@%
- %@NL@%
- The easiest way to customize a memory model is to use a standard memory
- model and modify the stack-setup option. A stack- and data-segment option
- from Table 2.1 overrides the corresponding part of the standard memory-model
- configuration; Table 2.2 shows the standard models' equivalents. Since /AS
- is the equivalent of /Asnd, then /ASw is the equivalent of /Asnw. %@NL@%
- %@NL@%
- %@AB@%Table %@AB@%2.2 Standard Memory Model Equivalents%@AE@%%@AE@%
-
- %@TH: 17 458 03 22 54 @%
- Standard Customized
- Memory Model Equivalent
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /AT none
-
- /AS /Asnd
-
- /AM /Alnd
-
- /AC /Asfd
-
- /AL /Alfd
-
- /AH /Alhd
-
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
-
- %@TE: 17 458 03 22 54 @%
-
- %@NL@%
- %@3@%%@CR:C6A00020064 @%%@AB@%2.3.4 Omitting Names of Nested Structures and Unions%@AE@%%@EH@%%@NL@%
- %@NL@%
- If a structure or union is nested inside another structure or union, you can
- declare the inner one without using a variable name. This rule allows you to
- access inner members of such nested constructs using fewer variable names.
- The following example demonstrates this technique using nested structures:%@CR:C6A00020065 @%%@CR:C6A00020066 @%%@CR:C6A00020067 @% %@NL@%
- %@NL@%
- %@AS@% #include.h
- %@AS@%
- %@AS@% void main( void )
- %@AS@% {
- %@AS@% struct ours
- %@AS@% {
- %@AS@% int mine, yours;
- %@AS@% };
- %@AS@%
- %@AS@% struct mystruct
- %@AS@% {
- %@AS@% float bobber;
- %@AS@% struct ours;
- %@AS@% char name[9];
- %@AS@% } sample;
- %@AS@%
- %@AS@% sample.yours = 100;
- %@AS@% printf( "sample.yours: %i\n", sample.yours );
- %@AS@% }%@AE@%%@NL@%
- %@NL@%
- The example declares two structure types. The first structure type, named %@AS@%
- %@AS@%ours%@AE@%, contains two %@AB@%int%@AE@% members. The second, named %@AS@% mystruct%@AE@%, contains three
- members, one of which is a structure of type %@AS@% ours%@AE@%. %@NL@%
- %@NL@%
- The second structure type declares its structure member using only the
- structure tag %@AS@% ours%@AE@%. It does not supply a variable name after the tag: %@NL@%
- %@NL@%
- %@AS@% struct ours;%@AE@%%@NL@%
- %@NL@%
- Thus, subsequent parts of the program can access members of the nested
- structure without specifying a name: %@NL@%
- %@NL@%
- %@AS@% sample.yours = 100;%@AE@%%@NL@%
- %@NL@%
- In contrast, if the nested structure had been declared using a variable
- name, as in %@NL@%
- %@NL@%
- %@AS@% struct ours var_name;%@AE@%%@NL@%
- %@NL@%
- subsequent statements would have to use that name as well: %@NL@%
- %@NL@%
- %@AS@% sample.var_name.yours = 100;%@AE@%%@NL@%
- %@NL@%
- As you can see, declaring the nested structure without a variable name saves
- some typing. The same rule applies to unions nested inside structures. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020068 @%%@AB@%2.3.5 Unsized Arrays as the Last Member of a Structure%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC now allows an unsized or zero-sized array as the last member of a
- structure. The declaration of such a structure would look like this:%@CR:C6A00020069 @%%@CR:C6A00020070 @%%@CR:C6A00020071 @% %@NL@%
- %@NL@%
- %@AS@% struct var_length
- %@AS@% {
- %@AS@% <set of declarations>;
- %@AS@% <type> array[];
- %@AS@% };%@AE@%%@NL@%
- %@NL@%
- Unsized arrays can appear only as the last member of a structure. Structures
- containing unsized array declarations can be nested within other structures
- as long as no further members are declared in any enclosing structures.
- Arrays of such structures are not allowed. %@NL@%
- %@NL@%
- When you apply the %@AB@%sizeof %@AE@%operator to a variable of this type, or to the
- type itself, QuickC assumes the array has the size zero. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020072 @%%@AB@%2.3.6 Improved Warnings%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC version 2.5 supports a new warning level (4), which provides even
- more stringent error checking than the warning levels in version 2.0. You
- can set this warning level from the command line by supplying the /W4
- compiler option, or from the QuickC environment with the Compiler Flags
- dialog box shown with the Make command on the Options menu.%@CR:C6A00020073 @% %@NL@%
- %@NL@%
- At warning level 4, QuickC can generate the following new warnings: %@NL@%
- %@NL@%
- %@NL@%
- ■ Nonportable (non-ANSI) constructs%@NL@%
- %@NL@%
- ■ Undefined or implementation-defined constructs%@NL@%
- %@NL@%
- %@NL@%
- Consult online help for more information about these warnings. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020074 @%%@AB@%2.3.7 Macros%@AE@%%@EH@%%@NL@%
- %@NL@%
- The number of macros definable with /D options in QuickC has increased from
- 20 to 30.%@CR:C6A00020075 @%%@CR:C6A00020076 @% %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00020077 @%%@AB@%2.4 Changes and Deletions%@AE@%%@EH@%%@NL@%
- %@NL@%
- This section describes QuickC 2.0 features that are changed or deleted in
- QuickC 2.5. Note that these changes may affect existing programs. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020078 @%%@AB@%2.4.1 Deleted Features%@AE@%%@EH@%%@NL@%
- %@NL@%
- The %@AB@%data_seg%@AE@% pragma has been deleted.%@CR:C6A00020079 @%%@CR:C6A00020080 @% %@NL@%
- %@NL@%
- The memory management routine %@AB@%sbrk%@AE@% has been deleted. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020081 @%%@AB@%2.4.2 Conditional Compilation and Signed Values%@AE@%%@EH@%%@NL@%
- %@NL@%
- Version 2.0 of QuickC treats conditional-compilation expressions as %@AB@%signed
- %@AB@%long%@AE@% values. Version 2.5 evaluates these expressions using the same rules as
- expressions in C. For example, the expression%@CR:C6A00020082 @%%@CR:C6A00020083 @%%@CR:C6A00020084 @% %@NL@%
- %@NL@%
- %@AS@% #if 0xFFFFFFFFL > 1UL
- %@AS@% .
- %@AS@% .
- %@AS@% .
- %@AS@% #endif%@AE@%%@NL@%
- %@NL@%
- evaluates as true. It is evaluated as false in version 2.0, since the signed
- value would be less than the unsigned value. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020085 @%%@AB@%2.4.3 The const and volatile Qualifiers%@AE@%%@EH@%%@NL@%
- %@NL@%
- The %@AB@%const%@AE@% and %@AB@%volatile %@AE@%qualifiers must be placed after the type they
- qualify. The declaration%@CR:C6A00020086 @%%@CR:C6A00020087 @% %@NL@%
- %@NL@%
- %@AS@% int (const *p);%@AE@%%@NL@%
- %@NL@%
- is now treated as a syntax error. Previous versions of QuickC accept this
- construction. %@NL@%
- %@NL@%
- The following declarations are legal: %@NL@%
- %@NL@%
- %@AS@% int const *p_ci; /* pointer to constant int */
- %@AS@% int const (*p_ci); /* pointer to constant int */
- %@AS@% int *const cp_i; /* constant pointer to int */
- %@AS@% int (*const cp_i); /* constant pointer to int */%@AE@%%@NL@%
- %@NL@%
- Consult online help for more information about %@AB@%const%@AE@% and %@AB@%volatile%@AE@%. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020088 @%%@AB@%2.4.4 Memory Allocation%@AE@%%@EH@%%@NL@%
- %@NL@%
- The %@AB@%_fmalloc %@AE@%function attempts to allocate far memory. In version 2.5,
- %@AB@%_fmalloc%@AE@% returns a null pointer if far memory isn't available, even if near
- memory is available. In previous versions of QuickC, %@AB@%_fmalloc%@AE@% calls %@AB@%_nmalloc
- %@AB@%%@AE@%if far memory is not available.%@CR:C6A00020089 @%%@CR:C6A00020090 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020091 @%%@AB@%2.4.5 Memory Used by Command-Line Arguments%@AE@%%@EH@%%@NL@%
- %@NL@%
- In QuickC 2.5, the command-line argument strings are allocated through
- %@AB@%malloc%@AE@%, which means they are in far memory in the compact and large memory
- models. Previous versions of QuickC place the command-line argument strings
- and environment strings in the near heap.%@CR:C6A00020092 @% %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020093 @%%@AB@%2.4.6 Format Specifiers in printf and scanf%@AE@%%@EH@%%@NL@%
- %@NL@%
- The %@AB@%printf%@AE@% format specifier modifiers %@AB@%N%@AE@%, %@AB@%F%@AE@%, %@AB@%h%@AE@%, and%@AB@% l%@AE@% have changed. These
- specifiers are documented in online help.%@CR:C6A00020094 @%%@CR:C6A00020095 @% %@NL@%
- %@NL@%
- The specifier %@AB@%%Np%@AE@% is a synonym for %@AB@%%hp%@AE@%, but the latter is preferred.
- Likewise, %@AB@%%Fp%@AE@% is a synonym for %@AB@%%lp%@AE@%. %@NL@%
- %@NL@%
- For %@AB@%scanf%@AE@%, the modifiers %@AB@%N%@AE@% and %@AB@%F%@AE@% refer to the distance to the object being
- read in; that is, whether the pointer itself is allocated near or far. The
- modifiers %@AB@%h%@AE@% and%@AB@% l%@AE@% refer to the size of the object (16-bit near pointer or
- 32-bit far pointer). In these examples, %@NL@%
- %@NL@%
- %@AS@% scanf("%Nlp", n_fp);
- %@AS@% scanf("%Fhp", f_np);%@AE@%%@NL@%
- %@NL@%
- the first line reads an address that resides in near memory (%@AS@%N%@AE@%) but holds a
- 32-bit far pointer variable (%@AS@%lp%@AE@%). The second line reads a near pointer value
- (%@AS@%hp%@AE@%) into a pointer variable that resides in far memory (%@AS@%F%@AE@%). %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020096 @%%@AB@%2.4.7 Functions that Return Float Values%@AE@%%@EH@%%@NL@%
- %@NL@%
- In QuickC 2.5, a prototype or definition such as%@CR:C6A00020097 @% %@NL@%
- %@NL@%
- %@AS@% float funcname();%@AE@%%@NL@%
- %@NL@%
- is interpreted as %@AS@% %@AE@%%@NL@%
- %@NL@%
- %@AS@% float funcname()%@AE@%%@NL@%
- %@NL@%
- so the function returns a %@AB@%float%@AE@% value. %@NL@%
- %@NL@%
- Whereas version 2.0 interprets it as %@AS@% %@AE@%%@NL@%
- %@NL@%
- %@AS@% double funcname()%@AE@%%@NL@%
- %@NL@%
- returning a %@AB@%double%@AE@% value. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00020098 @%%@AB@%2.4.8 The char Variable Alignment%@AE@%%@EH@%%@NL@%
- %@NL@%
- QuickC 2.5 does not align %@AB@%char%@AE@% variables on even addresses unless a variable
- is local. Similarly, literal constant strings are not aligned as they are in
- QuickC version 2.0%@CR:C6A00020099 @% %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A00030001 @%%@1@%%@AB@%Chapter 3 Compiler, Linker, and Utility Changes%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- The QuickC Compiler version 2.5 supports a variety of new compiler, linker,
- and utility options. Most of these options provide compatibility with
- Microsoft C version 6.0. Since QuickC can be used as a prototyping
- environment for programs that will ultimately be compiled with Microsoft C,
- the compiler supports the development of programs that run under non-DOS
- operating systems. Refer to the Microsoft C version 6.0 documentation for
- additional information. %@NL@%
- %@NL@%
- This chapter is divided into sections alphabetically listing compiler,
- linker, and utility changes. For detailed information on the options,
- consult the online help. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00030002 @%%@AB@%3.1 Compiler Options%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following compiler options are new to QuickC 2.5:%@CR:C6A00030003 @% %@NL@%
- %@NL@%
- %@AB@%Option%@AE@% %@AB@%Instruction%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /A%@AI@%xxx%@AE@% Use custom memory model. The %@AI@%xxx%@AE@% is a
- three-letter representation of the
- memory-model attributes: code pointer
- size, data pointer size, and stack and
- data segment setup. You must use all
- three letters (in any order) following
- /A. See Chapter 2, "Language
- Differences," for additional information.
-
- /AT Use tiny memory model. This option
- creates a program with the .COM
- extension. The program has a single 64K
- segment for both code and data.
-
- /G1 Use 80186 instructions.
-
- /Gd Use the %@AB@%_cdecl%@AE@% calling convention for
- all functions in the module. See Chapter
- 2, "Language Differences," for more
- information.
-
- /Ge Generate calls to the stack-checking
- routine.
-
- /Gr Use the %@AB@%_fastcall%@AE@% calling convention for
- functions not explicitly given the %@AB@%%@AE@%
- %@AB@%_cdecl%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fortran%@AE@% attribute.
- See Chapter 2, "Language Differences,"
- for additional information.
-
- /ND%@AI@%data_segment_name%@AE@% Name the data segment of a %@AI@%%@AE@%
- %@AI@%data_segment_name%@AE@% module. This option is
- commonly used to create and compile
- modules that contain only data.
-
- /nologo Suppress the startup banner display.
-
- /V%@AI@%string%@AE@% Embed %@AI@%string%@AE@%, which specifies a version
- number, in the object file.
-
- /W%@AI@%x%@AE@% Use warning level %@AI@%x%@AE@%, where %@AI@%x%@AE@% is from 0
- to 4.
-
- %@AB@%Level%@AE@%%@AB@%Effect%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- 0 Turns off all warnings
-
- 1 Reports only severe errors
-
- 2 Reports intermediate level
- errors
-
- 3 Warns about been
- functions prototyped
- that have not
-
- 4 Reports violations
- detailed
- warnings and
- ANSI
-
- /WX Treat warnings as errors.
-
- %@NL@%
- %@2@%%@CR:C6A00030004 @%%@AB@%3.2 Linker Options%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following linker options are new to QuickC 2.5:%@CR:C6A00030005 @% %@NL@%
- %@NL@%
- %@AB@%Option%@AE@% %@AB@%Instruction%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /INC«REMENTAL» Prepare the program for subsequent
- incremental linking with ILINK.
-
- /NOL«OGO» Suppress the sign-on banner when QLINK
- starts. This option is incompatible with
- the /E and /T
- options.
-
- /NON«ULLSDOSSEG» Arrange segments in a specified order.
- /NON is equivalent to /DO except that
- /NON does not insert 16 null bytes at
- the beginning of the _TEXT segment.
-
- /PACKC«ODE» Use the /PACKC option in place of the
- /PAC option.
-
- /PACKD«ATA» Group neighboring data segments.
-
- /PADC«ODE»:%@AI@%bytes%@AE@% Add filler %@AI@%bytes%@AE@% to the end of each code
- module.
-
- /PADD«ATA»:%@AI@%bytes%@AE@% Add filler %@AI@%bytes%@AE@% to the end of each data
- module.
-
- /T«INY» Use the /T (tiny) memory model in place
- of the /BI (binary) option.
-
- %@NL@%
- %@2@%%@CR:C6A00030006 @%%@AB@%3.3 LIB Options%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following LIB option is new to QuickC 2.5:%@CR:C6A00030007 @% %@NL@%
- %@NL@%
- %@AB@%Option%@AE@% %@AB@%Instruction%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /NOL«OGO» Suppress the sign-on banner.
-
- %@NL@%
- %@2@%%@CR:C6A00030008 @%%@AB@%3.4 NMAKE Options%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following NMAKE options are new to QuickC 2.5:%@CR:C6A00030009 @% %@NL@%
- %@NL@%
- %@AB@%Option%@AE@% %@AB@%Instruction%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /NOLOGO Suppress the NMAKE sign-on banner.
-
- /HELP Display detailed help about NMAKE
- options.
-
- / ? Display abbreviated help about NMAKE
- options.
-
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A00040001 @%%@1@%%@AB@%Chapter 4 Library Changes%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- The QuickC Compiler version 2.5 incorporates over 100 new library routines
- to maintain compatibility with Microsoft C version 6.0. This chapter lists
- and briefly summarizes the new library routines by category. For a complete
- description of each routine, refer to online help. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00040002 @%%@AB@%4.1 Buffer-Manipulation Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- Routines preceded by the %@AB@%_f%@AE@% prefix are model-independent versions. The %@AB@%_f%@AE@%
- prefix indicates that these routines operate with far pointers.%@CR:C6A00040003 @%%@CR:C6A00040004 @% %@NL@%
- %@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- NOTE
-
- %@AI@%The buffer-manipulation routines assume that the direction flag is cleared.
- %@AI@%If you are using other functions with the buffer-manipulation functions, you
- %@AI@%must ensure that the other functions leave the direction flag alone or
- %@AI@%restore it to its original condition.%@AE@%%@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_fmemccpy%@AE@% Copies the characters from one buffer to
- another until a given character or a
- given number of characters has been
- copied
-
- %@AB@%_fmemchr%@AE@% Returns a pointer to the first
- occurrence, within a specified number of
- characters, of a given character in the
- buffer
-
- %@AB@%_fmemcmp%@AE@% Compares a specified number of
- characters from two buffers
-
- %@AB@%_fmemcpy%@AE@% Copies a specified number of characters
- from one buffer to another
-
- %@AB@%_fmemicmp%@AE@% Compares a specified number of
- characters from two buffers without
- regard to case sensitivity
-
- %@AB@%_fmemmove%@AE@% Copies a specified number of characters
- from one buffer to another
-
- %@AB@%_fmemset%@AE@% Initializes a specified number of bytes
- in the buffer with a given character
-
- %@AB@%_outmem%@AE@% Prints text of a specified length from a
- memory buffer
-
- %@NL@%
- %@2@%%@CR:C6A00040005 @%%@AB@%4.2 Data-Conversion Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@% %@CR:C6A00040006 @%%@CR:C6A00040007 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_strtold%@AE@% Converts a string to a %@AB@%long double%@AE@% value
-
- %@NL@%
- %@2@%%@CR:C6A00040008 @%%@AB@%4.3 Directory-Control Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@% %@CR:C6A00040009 @%%@CR:C6A00040010 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_chdrive%@AE@% Changes the current drive
-
- %@AB@%_getdcwd%@AE@% Gets the current working directory for
- the specified drive
-
- %@AB@%_getdrive%@AE@% Gets the current disk drive
-
- %@NL@%
- %@2@%%@CR:C6A00040011 @%%@AB@%4.4 File-Handling Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%%@CR:C6A00040012 @% %@CR:C6A00040013 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_fullpath%@AE@% Makes an absolute path name from a
- relative path name
-
- %@NL@%
- %@2@%%@CR:C6A00040014 @%%@AB@%4.5 Graphics Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%%@CR:C6A00040015 @% %@CR:C6A00040016 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_getarcinfo%@AE@% Determines the endpoints, expressed in
- viewport coordinates, of the most
- recently drawn arc or pie
-
- %@AB@%_getgtextvector%@AE@% Gets the current orientation for
- font-text output
-
- %@AB@%_gettextwindow%@AE@% Gets the current text-window boundaries
-
- %@AB@%_getwritemode%@AE@% Gets the current logical write mode for
- line drawing
-
- %@AB@%_grstatus%@AE@% Returns the status of the most recent
- graphics function call
-
- %@AB@%_polygon%@AE@%,%@AB@%%@AE@% Draws or scan-fills a polygon
- %@AB@%_polygon_w%@AE@%,%@AB@%%@AE@%
- %@AB@%_polygon_wxy%@AE@%
-
- %@AB@%_scrolltextwindow%@AE@% Scrolls the current text window up or
- down
-
- %@AB@%_setgtextvector%@AE@% Sets the current orientation for
- font-text output
-
- %@AB@%_setwritemode%@AE@% Sets the logical write mode for line
- drawing
-
- %@NL@%
- %@2@%%@CR:C6A00040017 @%%@AB@%4.6 Stream Input and Output Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@% %@CR:C6A00040018 @% %@CR:C6A00040019 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_fsopen%@AE@% Opens a stream with file sharing
-
- %@NL@%
- %@2@%%@CR:C6A00040020 @%%@AB@%4.7 Internationalization Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@% %@CR:C6A00040021 @% %@CR:C6A00040022 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%localecov%@AE@% Sets members of a structure to
- appropriate values for formatting
- numeric quantities
-
- %@AB@%setlocale%@AE@% Selects the appropriate locale for the
- program
-
- %@AB@%strcoll%@AE@% Compares strings using locale-specific
- information
-
- %@AB@%strftime%@AE@% Formats a data and time string
-
- %@AB@%strxfrm%@AE@% Transforms a string based on
- locale-specific
- information
-
- %@NL@%
- %@2@%%@CR:C6A00040023 @%%@AB@%4.8 Math Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- Routines ending with %@AB@%l%@AE@% support an 80-bit data type for the corresponding
- routines. These routines return a %@AB@%long double%@AE@% value. %@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%%@CR:C6A00040024 @% %@CR:C6A00040025 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%acosl%@AE@% Calculates the arccosine
-
- %@AB@%asinl%@AE@% Calculates the arcsine
-
- %@AB@%atanl%@AE@% Calculates the arctangent from tangent
-
- %@AB@%atan2l%@AE@% Calculates the arctangent from %@AI@%x%@AE@%, %@AI@%y%@AE@%
-
- %@AB@%cabsl%@AE@% Finds the absolute value of a complex
- number
-
- %@AB@%ceill%@AE@% Finds the integer ceiling
-
- %@AB@%cosl%@AE@% Calculates the cosine
-
- %@AB@%coshl%@AE@% Calculates the hyperbolic cosine
-
- %@AB@%expl%@AE@% Calculates the exponential function
-
- %@AB@%fabsl%@AE@% Finds the absolute value
-
- %@AB@%floorl%@AE@% Finds the largest integer less than or
- equal to the
- argument
-
- %@AB@%fmodl%@AE@% Finds the floating-point remainder
-
- %@AB@%frexpl%@AE@% Calculates an exponential value
-
- %@AB@%hypotl%@AE@% Calculates the hypotenuse of a right
- triangle
-
- %@AB@%ldexpl%@AE@% Converts the mantissa and exponent to a
- floating-point value
-
- %@AB@%logl%@AE@% Calculates the natural logarithm
-
- %@AB@%log10l%@AE@% Calculates the base-10 logarithm
-
- %@AB@%modfl%@AE@% Finds the integral and fractional parts
- of the argument
-
- %@AB@%powl%@AE@% Calculates a value raised to a power
-
- %@AB@%sinl%@AE@% Calculates the sine
-
- %@AB@%sinhl%@AE@% Calculates the hyperbolic sine
-
- %@AB@%sqrtl%@AE@% Finds the square root
-
- %@AB@%tanl%@AE@% Calculates the tangent
-
- %@AB@%tanhl%@AE@% Calculates the hyperbolic tangent
-
- %@NL@%
- %@2@%%@CR:C6A00040026 @%%@AB@%4.9 Memory-Allocation Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- Routines beginning with %@AB@%_b%@AE@% apply to based heaps. Routines with the %@AB@%_n%@AE@% prefix
- apply to near heaps. Routines beginning with %@AB@%_f%@AE@% apply to far heaps.%@CR:C6A00040027 @%%@CR:C6A00040028 @% %@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_bfreeseg%@AE@% Frees a based heap
-
- %@AB@%_bheapseg%@AE@% Allocates a based heap
-
- %@AB@%_bcalloc%@AE@%, %@AB@%_fcalloc%@AE@%, %@AB@%_ncalloc%@AE@% Allocates storage for an array
-
- %@AB@%_bexpand%@AE@%, %@AB@%_fexpand%@AE@%, %@AB@%_nexpand%@AE@% Expands or shrinks a block of memory
-
- %@AB@%_bfree%@AE@% Frees an allocated block
-
- %@AB@%_heapadd%@AE@%, %@AB@%_bheapadd%@AE@%, %@AB@%_fheapadd%@AE@%, %@AB@%%@AE@% Adds memory to a heap
- %@AB@%_nheapadd%@AE@%
-
- %@AB@%_bheapchk%@AE@%, %@AB@%_fheapchk%@AE@%, %@AB@%_nheapchk%@AE@% Checks a heap for consistency
-
- %@AB@%_heapmin%@AE@%,%@AB@%%@AE@% Releases unused memory in a heap
- %@AB@%_bheapmin%@AE@%,%@AB@%%@AE@%
- %@AB@%_fheapmin%@AE@%,%@AB@%%@AE@%
- %@AB@%_nheapmin%@AE@%
-
- %@AB@%_bheapset%@AE@% Fills free heap entries with a specified
- value
-
- %@AB@%_bheapwalk%@AE@% Returns information about each entry in
- a heap
-
- %@AB@%_bmalloc%@AE@% Allocates a block of memory
-
- %@AB@%_bmsize%@AE@% Returns the size of an allocated block
-
- %@AB@%_brealloc%@AE@%, %@AB@%_frealloc%@AE@%, %@AB@%_nrealloc%@AE@% Reallocates a block to a new size
-
- %@NL@%
- %@2@%%@CR:C6A00040029 @%%@AB@%4.10 Process- and Environment-Control Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@% %@CR:C6A00040030 @%%@CR:C6A00040031 @% %@CR:C6A00040032 @% %@CR:C6A00040033 @%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_cexit%@AE@% Calls functions registered by %@AB@%atexit%@AE@% and
- %@AB@%onexit%@AE@% (if any), then performs complete
- exit-termination procedures (such as
- flushing buffers) and returns control to
- the calling program
-
- %@AB@%_c_exit%@AE@% Performs quick exit-termination
- procedures and returns control to the
- calling program
-
- %@NL@%
- %@2@%%@CR:C6A00040034 @%%@AB@%4.11 String-Manipulation Routines%@AE@%%@EH@%%@NL@%
- %@NL@%
- Routines preceded by the %@AB@%_f%@AE@% prefix are model-independent versions. The %@AB@%_f%@AE@%
- prefix indicates that these routines operate with far pointers.%@CR:C6A00040035 @%%@CR:C6A00040036 @% %@NL@%
- %@NL@%
- ────────────────────────────────────────────────────────────────────────────%@NL@%
- NOTE
-
- %@AI@%The string-manipulation routines assume that the direction flag is cleared.
- %@AI@%If you are using other functions with the string-manipulation routines, you
- %@AI@%must ensure that the other routines leave the direction flag alone or
- %@AI@%restore it to its original condition.%@AE@%%@NL@%
-
-
- ────────────────────────────────────────────────────────────────────────────%@NL@%%@NL@%
- %@NL@%
- %@AB@%Routine%@AE@% %@AB@%Effect%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%_fstrcat%@AE@% Appends one string to another
-
- %@AB@%_fstrchr%@AE@% Finds first occurrence of a given
- character in a string
-
- %@AB@%_fstrcmp%@AE@% Compares two strings
-
- %@AB@%_fstrcpy%@AE@% Copies one string to another
-
- %@AB@%_fstrcspn%@AE@% Finds first occurrence in a string of a
- character from a given character set
-
- %@AB@%_fstrdup%@AE@%, %@AB@%_nstrdup%@AE@% Duplicates a string
-
- %@AB@%_fstricmp%@AE@% Compares two strings without regard to
- case
-
- %@AB@%_fstrlen%@AE@% Finds the length of a string
-
- %@AB@%_fstrlwr%@AE@% Converts a string to lowercase
-
- %@AB@%_fstrncat%@AE@% Appends the characters of a string
-
- %@AB@%_fstrncmp%@AE@% Compares the characters of two strings
-
- %@AB@%_fstrncpy%@AE@% Copies the characters of one string to
- another
-
- %@AB@%_fstrnicmp%@AE@% Compares the characters of two strings
- without regard to case
-
- %@AB@%_fstrnset%@AE@% Sets the characters of string to a given
- character
-
- %@AB@%_fstrpbrk%@AE@% Finds first occurrence of a character
- from one string in another
-
- %@AB@%_fstrrchr%@AE@% Finds last occurrence of given character
- in string
-
- %@AB@%_fstrrev%@AE@% Reverses a string
-
- %@AB@%_fstrset%@AE@% Sets all the characters of a string to a
- given character
-
- %@AB@%_strspn%@AE@%, %@AB@%_fstrspn%@AE@% Finds first substring from given a
- character set in string
-
- %@AB@%_fstrstr%@AE@% Finds first occurrence of a given string
- in another
-
- %@AB@%_fstrtok%@AE@% Finds next token in a string
-
- %@AB@%_fstrupr%@AE@% Converts a string to uppercase
-
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@NL@%
- %@CR:C6A00050001 @%%@1@%%@AB@%Chapter 5 Error-Message Reference%@AE@%%@EH@%%@NL@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@NL@%
- This chapter lists error messages that are new with the QuickC Compiler
- version 2.5. Error messages common to versions 2.0 and 2.5 are documented in
- the %@AI@% Microsoft QuickC Tool Kit%@AE@%. %@NL@%
- %@NL@%
- %@NL@%
- %@2@%%@CR:C6A00050002 @%%@AB@%5.1 Compiler Errors%@AE@%%@EH@%%@NL@%
- %@NL@%
- The error messages produced by the C compiler fall into three categories:%@CR:C6A00050003 @% %@NL@%
- %@NL@%
- %@NL@%
- 1. Fatal-error messages%@NL@%
- %@NL@%
- 2. Compilation-error messages%@NL@%
- %@NL@%
- 3. Warning messages%@NL@%
- %@NL@%
- %@NL@%
- New error messages for each category are listed below in numerical order,
- with a brief explanation of each error. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00050004 @%%@AB@%5.1.1 Fatal-Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- Fatal-error messages indicate a severe problem, one that prevents the
- compiler from processing your program any further. These messages have the
- following format: %@NL@%
- %@NL@%
- %@AI@%%@AE@%filename%@AS@%(%@AE@%%@AI@%line%@AS@%) : fatal error C1%@AE@%xxx%@AS@%:%@AE@% messagetext%@AE@% %@NL@%
- %@NL@%
- After the compiler displays a fatal-error message, it terminates without
- producing an object file or checking for further errors.%@CR:C6A00050005 @%%@CR:C6A00050006 @%%@CR:C6A00050007 @% %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Fatal-Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%C1005%@AE@% %@AB@%string too big for buffer%@AE@%
-
- A string in a compiler intermediate file
- overflowed a buffer.
-
- %@AB@%C1006%@AE@% %@AB@%write error on compiler intermediate %@AE@%
- %@AB@%file%@AE@%
-
- The compiler was unable to create the
- intermediate files used in the
- compilation process.
-
- %@AB@%C1011%@AE@% %@AB@%compiler limit : '%@AE@%%@AI@%identifier%@AE@%%@AB@%' : macro %@AE@%
- %@AB@%definition too big%@AE@%
-
- The macro definition was longer than
- allowed.
-
- Split the definition into shorter
- definitions.
-
- %@AB@%C1023%@AE@% %@AB@%cannot open source file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The given file either did not exist,
- could not be opened, or was not found.
-
- Make sure the environment settings are
- valid and that the correct path name for
- the file is specified.
-
- If this error appears without an error
- message, the compiler has run out of
- file handles. If in DOS, increase the
- number of file handles by changing the
- FILES setting CONFIG.SYS to allow a
- larger number of open files. FILES=20 is
- the recommended setting.
-
- %@AB@%C1024%@AE@% %@AB@%cannot open include file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The specified file in an %@AB@%#include%@AE@%
- preprocessor directive could not be
- found.
-
- Make sure settings for the INCLUDE and
- TMP environment variables are valid and
- that the correct path name for the file
- is specified.
-
- If this error appears without an error
- message, the compiler has run out of
- file handles. If in DOS, increase the
- number of file handles by changing the
- FILES setting in CONFIG.SYS to allow a
- larger number of open files. FILES%@AS@%=%@AE@%20 is
- the recommended setting.
-
- %@AB@%C1025%@AE@% %@AB@%compiler terminated by user%@AE@%
-
- The compiler was stopped by the user.
-
- %@AB@%C1026%@AE@% %@AB@%parser stack overflow, please simplify %@AE@%
- %@AB@%your program%@AE@%
-
- The program cannot be processed because
- the space required to parse the program
- causes a stack overflow in the compiler.
-
- Simplify the program by decreasing the
- complexity of expressions. Decrease the
- level of nesting in for and switch
- statements by putting some of the more
- deeply nested statements in separate
- functions. Break up very long
- expressions involving ',' operators or
- function calls.
-
- %@AB@%C1027%@AE@% %@AB@%DGROUP data allocation exceeds 64K%@AE@%
-
- More than 64K of variables were
- allocated to the default data segment.
-
- For compact-, large-, or huge-model
- programs, compile with the QCL command
- and use the /Gt option to move items
- into separate segments. In small- or
- medium-model programs, consider
- explicitly allocating some variables
- outside of DGROUP by using %@AB@%_based%@AE@% or %@AB@%%@AE@%
- %@AB@%_far%@AE@%.
-
- %@AB@%C1033%@AE@% %@AB@%cannot open assembly language output %@AE@%
- %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- There are three possible causes for this
- error:
-
- ■ The given name is not valid.
-
- ■ The file cannot be opened for lack of
- space.
-
- ■ A read-only file with the given name
- already exists.
-
- %@AB@%C1036%@AE@% %@AB@%cannot open source listing file '%@AE@%%@AI@%%@AE@%
- %@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- There are three possible causes for this
- error:
-
- ■ The given name is not valid.
-
- ■ The file cannot be opened for lack of
- space.
-
- ■ A read-only file with the given name
- already exists.
-
- %@AB@%C1040%@AE@% %@AB@%unexpected end-of-file in source file '%@AE@%%@AI@%%@AE@%
- %@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The compiler detected an unexpected
- end-of-file condition while creating a
- source listing or mingled source/object
- listing.
-
- %@AB@%C1042%@AE@% %@AB@%cannot open compiler intermediate file -%@AE@%
- %@AB@%no such file or directory%@AE@%
-
- The compiler could not create
- intermediate files for use in the
- compilation process because the TMP
- environment variable was set to an
- invalid directory or path.
-
- %@AB@%C1043%@AE@% %@AB@%cannot open compiler intermediate file%@AE@%
-
- The compiler could not create
- intermediate files for use in the
- compilation process. The exact reason
- could not be determined.
-
- One of the following may be a solution:
-
- ■ Make sure that the environment
- variable TMP points to a drive and
- directory in which a file can be created.
-
- ■ Delete unneeded files in the TMP
- directory.
-
- %@AB@%C1044%@AE@% %@AB@%out of disk space for compiler %@AE@%
- %@AB@%intermediate file%@AE@%
-
- The compiler could not create
- intermediate files for use in the
- compilation process because no more
- space was available.
-
- Make more space available on the disk
- pointed to by the TMP environment
- variable and then recompile.
-
- %@AB@%C1050%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : code segment too large%@AE@%
-
- A code segment grew to within 36 bytes
- of 64K during compilation.
-
- A 36-byte pad is used because of a bug
- in some 80286 chips that can cause
- programs to exhibit strange behavior
- when, among other conditions, the size
- of a code segment is within 36 bytes of
- 64K.
-
- %@AB@%C1057%@AE@% %@AB@%unexpected end-of-file in macro %@AE@%
- %@AB@%expansion (missing ')'?)%@AE@%
-
- The compiler has encountered the end of
- the source file while gathering the
- arguments of a macro invocation. Usually
- this is the result of a missing closing
- parenthesis, ), on the macro invocation.
-
- %@AB@%C1064%@AE@% %@AB@%compiler limit : token overflowed %@AE@%
- %@AB@%internal buffer%@AE@%
-
- The compiler read an identifier that is
- longer than the internal buffer used for
- identifier names.
-
- Shorten the name and recompile.
-
- %@AB@%C1071%@AE@% %@AB@%unexpected end-of-file found in comment%@AE@%
-
- The compiler found the end of a file
- while scanning a comment.
-
- Probably a comment was not terminated.
- Begin at the end of the file and search
- backward for the beginning of a comment.
- A comment begins with "/*" and ends with
- "*/" as in:
-
- /* This is a comment */
-
- A comment may not be split across files.
-
- %@AB@%C1072%@AE@% %@AB@%'%@AE@%%@AI@%filename%@AE@%%@AB@%' : cannot read file%@AE@%
-
- The compiler encountered an error when
- trying to read a file.
-
- Check the file-access attributes and be
- sure the disk does not have a bad sector.
-
- %@AB@%C1090%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' data allocation exceeds 64K%@AE@%
-
- The size of the named segment exceeds
- 64K.
-
- This error occurs with %@AB@%_based%@AE@% allocation.
-
- %@AB@%C1127%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%': segment redefinition%@AE@%
-
- A segment was overwritten by another
- with the same name.
-
- For example, compiling in large model
- with
-
- %@AS@%#pragma alloc_text("TEXT", func1)%@AE@%
-
- creates two segments: the default
- segment "module_TEXT" and the specified
- segment "_TEXT". However, in small model,
- the default segment is "_TEXT", and the
- specified segment "_TEXT" will overwrite
- the default segment.
-
- %@NL@%
- %@3@%%@CR:C6A00050008 @%%@AB@%5.1.2 Compilation-Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- The messages listed below indicate that your program has errors. They appear
- in the following format:%@CR:C6A00050009 @%%@CR:C6A00050010 @% %@NL@%
- %@NL@%
- %@AI@%%@AE@%filename%@AS@%(%@AE@%%@AI@%line%@AS@%) : error C2%@AE@%xxx%@AS@%:%@AE@% messagetext%@AE@% %@NL@%
- %@NL@%
- When the compiler encounters any of the errors listed in this section, it
- continues parsing the program (if possible) and outputs additional error
- messages. However, no object file is produced. %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Compilation-Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%C2027%@AE@% %@AB@%use of undefined enum/struct/union '%@AE@%%@AI@%%@AE@%
- %@AI@%identifier%@AE@%%@AB@%'%@AE@%
-
- The given identifier referred to a
- structure or union type that was not
- defined.
-
- %@AB@%C2041%@AE@% %@AB@%illegal digit '%@AE@%%@AI@%character%@AE@%%@AB@%' for base '%@AE@%%@AI@%%@AE@%
- %@AI@%number%@AE@%%@AB@%'%@AE@%
-
- The given character was not a legal
- digit for the base used.
-
- %@AB@%C2080%@AE@% %@AB@%illegal far _fastcall function%@AE@%
-
- A %@AB@%far _fastcall%@AE@% function may not be
- compiled with the /Gw option, or with
- the /GW option, if stack checking is
- enabled.
-
- %@AB@%C2121%@AE@% %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : bad left/right operand%@AE@%
-
- The left or right operand of the given
- operator was illegal for that operator.
-
- %@AB@%C2124%@AE@% %@AB@%divide or mod by zero%@AE@%
-
- A constant expression was evaluated and
- found to have a zero denominator.
-
- %@AB@%C2128%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : huge array cannot be %@AE@%
- %@AB@%aligned to segment boundary%@AE@%
-
- The given huge array was large enough to
- cross two segment boundaries, but could
- not be aligned to both boundaries to
- prevent an individual array element from
- crossing a boundary.
-
- If the size of a huge array causes it to
- cross two boundaries, the size of each
- array element must be a power of two, so
- that a whole number of elements will fit
- between two segment boundaries.
-
- %@AB@%C2129%@AE@% %@AB@%static function '%@AE@%%@AI@%function%@AE@%%@AB@%' not found%@AE@%
-
- A forward reference was made to a static
- function that was never defined.
-
- %@AB@%C2136%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : prototype must have %@AE@%
- %@AB@%parameter types%@AE@%
-
- A function prototype declarator had
- formal-parameter names, but no types
- were provided for the parameters.
-
- A formal parameter in a function
- prototype must either have a type or be
- represented by an ellipsis (...) to
- indicate a variable number of arguments
- and no type checking.
-
- One cause of this error is a misspelling
- of a type name in a prototype that does
- not provide the names of formal
- parameters.
-
- %@AB@%C2154%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : does not refer to a segment %@AE@%
- %@AB@%name%@AE@%
-
- A %@AB@%_based%@AE@%-allocated variable must be
- allocated in a segment unless it is
- extern and uninitialized.
-
- %@AB@%C2157%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : must be declared before use%@AE@%
- %@AB@%in pragma list%@AE@%
-
- The function name in the list of
- functions for an %@AB@%alloc_text%@AE@% pragma has
- not been declared prior to being
- referenced in the list.
-
- %@AB@%C2158%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : is a function%@AE@%
-
- The given identifier was specified in
- the list of variables in a %@AB@%same_seg%@AE@%
- pragma but was previously declared as a
- function.
-
- %@AB@%C2163%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : not available as an %@AE@%
- %@AB@%intrinsic function%@AE@%
-
- A function specified in the list of
- functions for an intrinsic or function
- pragma is not one of the functions
- available in intrinsic form.
-
- %@AB@%C2164%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : intrinsic function not %@AE@%
- %@AB@%declared%@AE@%
-
- The given function was not declared
- before being used in an intrinsic pragma.
- This error appears only when compiling
- with the /Oi option.
-
- %@AB@%C2167%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : too many actual parameters %@AE@%
- %@AB@%for intrinsic function%@AE@%
-
- A reference to the intrinsic function
- name contained too many actual
- parameters.
-
- %@AB@%C2168%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : too few actual parameters %@AE@%
- %@AB@%for intrinsic function%@AE@%
-
- A reference to the intrinsic function
- name contained too few actual parameters.
-
- %@AB@%C2169%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : intrinsic function, cannot %@AE@%
- %@AB@%be defined%@AE@%
-
- An attempt was made to provide a
- function definition for a function
- already declared as an intrinsic.
-
- %@AB@%C2170%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : not declared as a %@AE@%
- %@AB@%function, cannot be intrinsic%@AE@%
-
- The intrinsic pragma was used for an
- item other than a function, or for a
- function that does not have an intrinsic
- form.
-
- %@AB@%C2178%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : storage class for %@AE@%
- %@AB@%same_seg variables must be extern%@AE@%
-
- The given variable was specified in a %@AB@%%@AE@%
- %@AB@%same_seg%@AE@% pragma, but it was not declared
- with extern storage class.
-
- %@AB@%C2179%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : was used in same_seg%@AE@%%@AB@%, but%@AE@%
- %@AB@%storage class is no longer extern%@AE@%
-
- The given variable was specified in a %@AB@%%@AE@%
- %@AB@%same_seg%@AE@% pragma, but it was redeclared
- with a storage class other than extern.
-
- %@AB@%C2185%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : illegal _based allocation%@AE@%
-
- A %@AB@%_based%@AE@%-allocated variable that
- explicitly has extern storage class and
- is uninitialized may not have a base of
- any of the following:
-
- ■ (_segment) & var
-
- ■ _segname("_STACK")
-
- ■ (_segment)_self
-
- ■ void
-
- If the variable does not explicitly have
- extern storage class or it is
- uninitialized, then its base must use
- _segname("g") where g is any segment
- name or reserved segment name except
- "_STACK".
-
- %@AB@%C2189%@AE@% %@AB@%#error : '%@AE@%%@AI@%string%@AE@%%@AB@%'%@AE@%
-
- An %@AB@%#error%@AE@% directive was encountered. The
- %@AI@%string%@AE@% is the descriptive text supplied
- in the directive.
-
- %@AB@%C2193%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : already in a segment%@AE@%
-
- A variable in the %@AB@%same_seg%@AE@% pragma has
- already been allocated in a segment,
- using %@AB@%_based%@AE@%.
-
- %@AB@%C2194%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : is a text segment%@AE@%
-
- The given text segment was used where a %@AB@%%@AE@%
- %@AB@%data%@AE@%, %@AB@%const%@AE@%, or %@AB@%bss%@AE@% segment was expected.
-
- %@AB@%C2195%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : is a data segment%@AE@%
-
- The given data segment was used where a
- text segment was expected.
-
- %@AB@%C2196%@AE@% %@AB@%/ML cannot be used with floating point%@AE@%
-
- The /ML option requires alternate math.
- QuickC does not support alternate math.
- The /ML option is allowed only when no
- floating-point code is used.
-
- %@AB@%C2200%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function has already been %@AE@%
- %@AB@%defined%@AE@%
-
- A function name passed as an argument in
- an %@AB@%alloc_text%@AE@% pragma has already been
- defined.
-
- %@AB@%C2201%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : storage class must be %@AE@%
- %@AB@%extern%@AE@%
-
- A function declaration appears within a
- block, but the function is not declared
- extern. This causes an error if the /Za
- option is in effect.
-
- For example, the following example code
- causes this error, when compiled with
- /Za:
-
- %@AS@%main()%@AE@%
- %@AS@%{%@AE@%
- %@AS@% static int func1();%@AE@%
- %@AS@%}%@AE@%
-
- %@AB@%C2207%@AE@% %@AB@%'%@AE@%%@AI@%member%@AE@%%@AB@%' in struct/union '%@AE@%%@AI@%tag%@AE@%%@AB@%' has a %@AE@%
- %@AB@%zero-sized array%@AE@%
-
- The given member in the given structure
- or union contains an array without a
- subscript or with a zero subscript. Such
- an array is legal only as the last
- member of a structure or union.
-
- %@AB@%C2208%@AE@% %@AB@%no members defined using this type%@AE@%
-
- An %@AB@%enum%@AE@%, %@AB@%struct%@AE@%, or %@AB@%union%@AE@% was defined
- without any members. This is an error
- only when compiling with /Za; otherwise,
- it is a warning.
-
- %@AB@%C2209%@AE@% %@AB@%type cast in _based construct must be %@AE@%
- %@AB@%(_segment)%@AE@%
-
- The only type allowed within a cast in a
- %@AB@%_based%@AE@% declarator is (%@AB@%_segment%@AE@%).
-
- %@AB@%C2210%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : must be near/far data %@AE@%
- %@AB@%pointer%@AE@%
-
- The base in a %@AB@%_based%@AE@% declarator may not
- be an array, a function, or a %@AB@%_based%@AE@%
- pointer.
-
- %@AB@%C2211%@AE@% %@AB@%(_segment) applied to function %@AE@%
- %@AB@%identifier '%@AE@%%@AI@%function%@AE@%%@AB@%'%@AE@%
-
- The item cast in a %@AB@%_based%@AE@% declarator
- must not be a function.
-
- %@AB@%C2212%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : _based not available for %@AE@%
- %@AB@%functions/pointers to functions%@AE@%
-
- Functions cannot be %@AB@%_based%@AE@%-allocated.
- Use the %@AB@%alloc_text%@AE@% pragma.
-
- %@AB@%C2213%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : illegal argument to %@AE@%
- %@AB@%_based%@AE@%
-
- A symbol used as a base must have type %@AB@%%@AE@%
- %@AB@%_segment%@AE@% or be a near or far pointer.
-
- %@AB@%C2214%@AE@% %@AB@%pointers based on void require the use %@AE@%
- %@AB@%of :>%@AE@%
-
- A %@AB@%_based%@AE@% pointer based on void cannot be
- dereferenced. Use the :> operator to
- create an address that can be
- dereferenced.
-
- %@AB@%C2215%@AE@% %@AB@%:> operator only for objects based on %@AE@%
- %@AB@%void%@AE@%
-
- The right operand of the :> operator
- must be a pointer based on void, as in
-
- %@AS@%char _based(void) *cbvpi%@AE@%
-
- %@AB@%C2216%@AE@% %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' may not be used with '%@AE@%%@AI@%%@AE@%
- %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
-
- The given function attributes are
- incompatible.
-
- Some combinations of attributes that
- cause this error are
-
- ■ %@AB@%_saveregs%@AE@% and %@AB@%_interrupt%@AE@%
-
- ■ %@AB@%_fastcall%@AE@% and %@AB@%_saveregs%@AE@%
-
- ■ %@AB@%_fastcall%@AE@% and %@AB@%_interrupt%@AE@%
-
- ■ %@AB@%_fastcall%@AE@% and %@AB@%_export%@AE@%
-
- %@AB@%C2217%@AE@% %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' must be used with '%@AE@%%@AI@%%@AE@%
- %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
-
- The first function attribute requires
- the second attribute to be used.
-
- Some causes for this error include
-
- ■ An interrupt function explicitly
- declared as near. Interrupt functions
- must
- be far.
-
- ■ An interrupt function or a function
- with a variable number of arguments,
- when that function is declared with the %@AB@%%@AE@%
- %@AB@%_fortran%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fastcall%@AE@%
- attribute. Functions declared with the
- _interrupt attribute or with a variable
- number of arguments must use the C
- calling conventions. Remove the %@AB@%%@AE@%
- %@AB@%_fortran%@AE@%, %@AB@%_pascal%@AE@%, or %@AB@%_fastcall%@AE@%
- attribute from the function declaration.
-
- %@AB@%C2218%@AE@% %@AB@%type in _based construct must be void%@AE@%
-
- The only type allowed within a %@AB@%_based%@AE@%
- construct is %@AB@%void%@AE@%.
-
- %@AB@%C2219%@AE@% %@AB@%syntax error : type qualifier must be %@AE@%
- %@AB@%after '*'%@AE@%
-
- Either %@AB@%const%@AE@% or %@AB@%volatile%@AE@% appeared where
- a type or qualifier is not allowed, as
- in
-
- %@AS@%int (const *p);%@AE@%
-
- %@AB@%C2220%@AE@% %@AB@%warning treated as error - no object %@AE@%
- %@AB@%file generated%@AE@%
-
- When the compiler option /WX is used,
- the first warning generated by the
- compiler causes this error message to be
- displayed.
-
- Either correct the condition that caused
- the warning, or compile at a lower
- warning level or without /WX.
-
- %@AB@%C2221%@AE@% %@AB@%'.' : left operand points to %@AE@%
- %@AB@%struct/union, use '->'%@AE@%
-
- The left operand of the '.' operator
- must be a struct/union type. It cannot
- be a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
-
- This error usually means that a '->'
- operator must be used.
-
- %@AB@%C2222%@AE@% %@AB@%'->' : left operand has struct/union %@AE@%
- %@AB@%type, use '.'%@AE@%
-
- The left operand of the '->' operator
- must be a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
- It cannot be a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
-
- This error usually means that a '.'
- operator must be used.
-
- %@AB@%C2223%@AE@% %@AB@%left of '%@AE@%%@AI@%-> member%@AE@%%@AB@%' must point to %@AE@%
- %@AB@%struct/union%@AE@%
-
- The left operand of the '->' operator is
- not a pointer to a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
-
- This error can occur when the left
- operand is an undefined variable.
- Undefined variables have type %@AB@%int%@AE@%.
-
- %@AB@%C2224%@AE@% %@AB@%left of '%@AE@%%@AI@%.member%@AE@%%@AB@%' must have struct/union%@AE@%
- %@AB@%type%@AE@%
-
- The left operand of the '.' operator is
- not a %@AB@%struct%@AE@%/%@AB@%union%@AE@% type.
-
- This error can occur when the left
- operand is an undefined variable.
- Undefined variables have type %@AB@%int%@AE@%.
-
- %@AB@%C2225%@AE@% %@AB@%'%@AE@%%@AI@%tagname%@AE@%%@AB@%' : first member of struct is %@AE@%
- %@AB@%unnamed%@AE@%
-
- The %@AB@%struct%@AE@% with the given tag started
- with an unnamed member (an alignment
- member). %@AB@%Struct%@AE@% definitions must start
- with a named member.
-
- %@AB@%C2418%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : not in a register%@AE@%
-
- An in-line assembler instruction
- referenced a variable with register
- storage class that has not actually been
- allocated in a register.
-
- To correct this, remove the register
- keyword from the variable definition,
- and make sure that this instruction is
- legal with a memory operand.
-
- %@AB@%C2429%@AE@% %@AB@%'%@AE@%%@AI@%label%@AE@%%@AB@%' : illegal far label reference%@AE@%
-
- %@AB@%FAR PTR%@AE@% may not be used on jumps or
- calls to labels. Far references to
- functions are allowed as long as the
- function has been declared.
-
- %@NL@%
- %@3@%%@CR:C6A00050011 @%%@AB@%5.1.3 Warning Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- The messages listed in this section indicate potential problems but do not
- hinder compiling and linking.%@CR:C6A00050012 @%%@CR:C6A00050013 @%%@CR:C6A00050014 @% %@NL@%
- %@NL@%
- %@AB@%Number %@AE@% %@AB@%Warning Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%C4001%@AE@% %@AB@%nonstandard extension used - '%@AE@%%@AI@%extension%@AE@%%@AB@%'%@AE@%
-
- The given nonstandard language extension
- was used when the /Ze option was
- specified.
-
- If the /Za option has been specified,
- this condition generates a syntax error.
-
- %@AB@%C4007%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : must be '%@AE@%%@AI@%attribute%@AE@%%@AB@%'%@AE@%
-
- The attribute of the given function was
- not explicitly stated. The compiler
- forced the attribute.
-
- For example, the function main must have
- the %@AB@%_cdecl%@AE@% attribute.
-
- %@AB@%C4008%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : _fastcall attribute on %@AE@%
- %@AB@%data ignored%@AE@%
-
- The %@AB@%_fastcall%@AE@% attribute on the given
- data identifier was ignored.
-
- %@AB@%C4023%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : _based pointer passed to %@AE@%
- %@AB@%unprototyped function: parameter '%@AE@%%@AI@%number%@AE@%
- %@AB@%'%@AE@%
-
- When in a near data model, only the
- offset portion of a %@AB@%_based%@AE@% pointer is
- passed to an unprototyped function. If
- the function expects a far pointer, the
- resulting code will be wrong. In any
- data model, if the function is defined
- to take a %@AB@%_based%@AE@% pointer with a
- different base, the resulting code may
- be unpredictable.
-
- If a prototype is used before the call,
- the call will be generated correctly.
-
- %@AB@%C4050%@AE@% %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : different code attributes%@AE@%
-
- The function-pointer expressions used
- with %@AI@%operator%@AE@% had different code
- attributes. The attribute involved is
- either %@AB@%_export%@AE@% or%@AB@%_loadds%@AE@%.
-
- This is a warning and not an error,
- because %@AB@%_export%@AE@% and %@AB@%_loadds%@AE@% affect only
- entry sequences and not calling
- conventions.
-
- %@AB@%C4054%@AE@% %@AB@%insufficient memory may affect %@AE@%
- %@AB@%optimization%@AE@%
-
- Not enough memory was available to do
- all requested optimizations. This
- message appears if available memory is
- within 64K of the absolute minimum that
- will accommodate the executable file.
-
- %@AB@%C4056%@AE@% %@AB@%floating-point overflow%@AE@%
-
- The compiler generated a floating-point
- exception while doing constant
- arithmetic on floating-point items at
- compile time.
-
- For example:
-
- %@AS@%float fp_val = 1.0e100;%@AE@%
-
- In this example, the floating-point
- constant %@AS@% 1.0e100 %@AE@% exceeds the maximum
- allowable value for a double-precision
- data item.
-
- %@AB@%C4059%@AE@% %@AB@%segment lost in conversion%@AE@%
-
- The conversion of a far pointer (a full
- segmented address) or %@AB@%_based%@AE@% pointer to
- a near pointer (a segment offset) or %@AB@%%@AE@%
- %@AB@%_based%@AE@% pointer resulted in the loss of
- the segment address.
-
- %@AB@%C4063%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function too large for %@AE@%
- %@AB@%post-optimizer%@AE@%
-
- Not enough space was available to
- optimize the given function.
-
- One of the following may be a solution:
-
- ■ Recompile with fewer optimizations.
-
- ■ Divide the function into two or more
- smaller functions.
-
- %@AB@%C4065%@AE@% %@AB@%recoverable heap overflow in %@AE@%
- %@AB@%post-optimizer - some optimizations may %@AE@%
- %@AB@%be missed%@AE@%
-
- Some optimizations were skipped because
- not enough space was available for
- optimization.
-
- One of the following may be a solution:
-
- ■ Recompile with fewer optimizations.
-
- ■ Divide the function into two or more
- smaller functions.
-
- %@AB@%C4066%@AE@% %@AB@%local symbol-table overflow - some local%@AE@%
- %@AB@%symbols may be missing in listings%@AE@%
-
- The listing generator ran out of heap
- space for local variables, so the source
- listing may not contain symbol-table
- information for all local variables.
-
- %@AB@%C4067%@AE@% %@AB@%unexpected characters following '%@AE@%%@AI@%%@AE@%
- %@AI@%directive%@AE@%%@AB@%' directive - newline expected%@AE@%
-
- Extra characters followed a preprocessor
- directive and were ignored. This warning
- appears only when compiling with the /Za
- option.
-
- For example, the following code causes
- this warning:
-
- %@AS@%#endif NO_EXT_KEYS%@AE@%
-
- To remove the warning, compile with /Ze
- or use comment delimiters:
-
- %@AS@%#endif /* NO_EXT_KEYS */%@AE@%
-
- %@AB@%C4072%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : no function prototype on %@AE@%
- %@AB@%_fastcall function%@AE@%
-
- A %@AB@%_fastcall%@AE@% function was called without
- first being prototyped.
-
- Functions that are %@AB@%_fastcall%@AE@% should be
- prototyped to guarantee that the
- registers assigned at each point of call
- are the same as the registers assumed
- when the function is defined. A function
- defined in the new ANSI style is a
- prototype.
-
- A prototype must be added when this
- warning appears, unless the function
- takes no arguments or takes only
- arguments that cannot be passed in the
- general- purpose registers.
-
- %@AB@%C4073%@AE@% %@AB@%scoping too deep, deepest scoping merged%@AE@%
- %@AB@%when debugging%@AE@%
-
- Declarations appeared at a static
- nesting level greater than 13. As a
- result, all de-clarations beyond this
- level will seem to appear at the same
- level.
-
- %@AB@%C4078%@AE@% %@AB@%case constant '%@AE@%%@AI@%value%@AE@%%@AB@%' too big for the %@AE@%
- %@AB@%type of switch expression%@AE@%
-
- A value appearing in a case statement
- was larger than the size of the type in
- the %@AB@%switch%@AE@% expression. The compiler
- converted the case value to the type of
- the %@AB@%switch%@AE@% expression.
-
- A problem can occur when two case
- constants have different values before
- being cast but the same value afterward.
-
- %@AB@%C4080%@AE@% %@AB@%expected identifier for segment name, %@AE@%
- %@AB@%found '%@AE@%%@AI@%token%@AE@%%@AB@%'%@AE@%
-
- The first argument in the argument list
- for the %@AB@%alloc_text%@AE@% pragma is missing a
- segment name. This happens if the first
- token in the argument list is not an
- identifier.
-
- The pragma was ignored.
-
- %@AB@%C4081%@AE@% %@AB@%expected a comma, found '%@AE@%%@AI@%token%@AE@%%@AB@%'%@AE@%
-
- A comma (,) was missing between two
- arguments of a pragma.
-
- The pragma was ignored.
-
- %@AB@%C4096%@AE@% %@AB@%'%@AE@%%@AI@%attribute1%@AE@%%@AB@%' must be used with '%@AE@%%@AI@%%@AE@%
- %@AI@%attribute2%@AE@%%@AB@%'%@AE@%
-
- The use of %@AI@%attribute2%@AE@% requires the use
- of %@AI@%attribute1%@AE@%.
-
- For example, using a variable number of
- arguments (...) requires that %@AB@%_cdecl%@AE@% be
- used. Also, _interrupt functions must be
- %@AB@%_far%@AE@% and %@AB@%_cdecl%@AE@%.
-
- The compiler assumed %@AI@%attribute1%@AE@% for the
- function.
-
- %@AB@%C4104%@AE@% %@AB@%'%@AE@%%@AI@%identifier%@AE@%%@AB@%' : near data in same_seg %@AE@%
- %@AB@%pragma, ignored%@AE@%
-
- The given near variable was specified in
- a %@AB@%same_seg%@AE@% pragma.
-
- The %@AI@%identifier%@AE@% was ignored.
-
- %@AB@%C4106%@AE@% %@AB@%pragma requires integer between 1 and %@AE@%
- %@AB@%127%@AE@%
-
- An integer constant in the range 1-127
- must be specified with the %@AB@%page%@AE@% and %@AB@%skip%@AE@%
- pragmas.
-
- The compiler assumed 1 was specified.
-
- %@AB@%C4107%@AE@% %@AB@%pragma requires integer between 15 and %@AE@%
- %@AB@%255%@AE@%
-
- An integer constant in the range 15-255
- must be specified with the %@AB@%pagesize%@AE@%
- pragma.
-
- The compiler assumed 63 was specified.
-
- %@AB@%C4108%@AE@% %@AB@%pragma requires integer between 79 and %@AE@%
- %@AB@%132%@AE@%
-
- An integer constant in the range 79-132
- must be specified with the %@AB@%linesize%@AE@%
- pragma.
-
- The compiler assumed 79 was specified.
-
- %@AB@%C4119%@AE@% %@AB@%different bases '%@AE@%%@AI@%name1%@AE@%%@AB@%' and '%@AE@%%@AI@%name2%@AE@%%@AB@%' %@AE@%
- %@AB@%specified%@AE@%
-
- The %@AB@%_based%@AE@% pointers in the expression
- have different symbolic bases. There may
- be truncation or loss in the code
- generated.
-
- %@AB@%C4120%@AE@% %@AB@%_based/unbased mismatch%@AE@%
-
- The expression contains a conversion
- between a %@AB@%_based%@AE@% pointer and another
- pointer that is unbased. Some
- information may have been truncated.
-
- This warning commonly occurs when a %@AB@%%@AE@%
- %@AB@%_based%@AE@% pointer is passed to a function
- that accepts a near or far pointer.
-
- %@AB@%C4123%@AE@% %@AB@%different base expressions specified%@AE@%
-
- The expression contains a conversion
- between %@AB@%_based%@AE@% pointers, but the base
- expressions of the %@AB@%_based%@AE@% pointers are
- different. Some of the %@AB@%_based%@AE@%
- conversions may be unexpected.
-
- %@AB@%C4124%@AE@% %@AB@%_fastcall with stack checking is %@AE@%
- %@AB@%inefficient%@AE@%
-
- The %@AB@%_fastcall%@AE@% keyword is used for
- generating fast code, but stack checking
- causes slower code to be generated.
-
- Use the /Gs option or the %@AB@%check_stack%@AE@%
- pragma to turn off stack checking when
- using %@AB@%_fastcall%@AE@%.
-
- This warning is informational and is
- issued only for the first function
- declared under these conditions.
-
- %@AB@%C4125%@AE@% %@AB@%decimal digit terminates octal escape %@AE@%
- %@AB@%sequence%@AE@%
-
- An octal escape sequence in a character
- or string constant was terminated with a
- decimal digit.
-
- The compiler evaluated the octal number
- without the decimal digit, and assumed
- the decimal digit was a character.
-
- The following example causes this
- warning:
-
- %@AS@%char array1[] = "\\709";%@AE@%
-
- If the digit 9 was intended as a
- character and was not a typing error,
- correct the example as follows:
-
- %@AS@%char array[] = "\\0709"; /* String %@AE@%
- %@AS@%containing "89" */%@AE@%
-
- %@AB@%C4126%@AE@% %@AB@%'%@AE@%%@AI@%flag%@AE@%%@AB@%' : unknown memory model flag%@AE@%
-
- The flag used with the /A option was not
- recognized and was ignored.
-
- %@AB@%C4127%@AE@% %@AB@%conditional expression is constant%@AE@%
-
- The controlling expression of an if
- statement or while loop evaluates to a
- constant.
-
- As a result, the code in the body of the
- if statement or while loop is either
- always executed or never executed.
-
- This warning is informational.
-
- %@AB@%C4128%@AE@% %@AB@%storage-class specifier after type%@AE@%
-
- A storage-class specifier (auto, extern,
- register, static) appears after a type
- in a declaration. The compiler assumed
- the storage class specifier occurred
- before the type.
-
- New-style code places the storage-class
- specifier first.
-
- %@AB@%C4129%@AE@% %@AB@%'%@AE@%%@AI@%character%@AE@%%@AB@%' : unrecognized character %@AE@%
- %@AB@%escape sequence%@AE@%
-
- The character following a backslash in a
- character or string constant was not
- recognized as a valid escape sequence.
-
- As a result, the backslash is ignored
- and not printed, and the character
- following the backslash is printed.
-
- To print a single backslash ( \ ),
- specify a double backslash ( \\ ).
-
- %@AB@%C4130%@AE@% %@AB@%'%@AE@%%@AI@%operator%@AE@%%@AB@%' : logical operation on %@AE@%
- %@AB@%address of string constant%@AE@%
-
- The operator was used with the address
- of a string literal. Unexpected code was
- generated.
-
- For example, the following code causes
- this warning:
-
- %@AS@%char *pc;%@AE@%
- %@AS@%pc = "Hello";%@AE@%
- %@AS@%if (pc == "Hello") ...%@AE@%
-
- The if statement compares the value
- stored in the pointer pc to the address
- of the string %@AS@% "Hello"%@AE@%, which is
- separately allocated each time it occurs
- in the code. It does not compare the
- string pointed to by %@AS@%pc%@AE@% with the string %@AS@%%@AE@%
- %@AS@%"Hello"%@AE@%.
-
- To compare strings, use the strcmp
- function.
-
- %@AB@%C4131%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : uses old-style declarator%@AE@%
-
- The function declaration or definition
- is not a prototype.
-
- New-style function declarations are in
- prototype form.
-
- ■ old style
-
- %@AS@%int addrec( name, id )%@AE@%
- %@AS@%char *name;%@AE@%
- %@AS@%int id;%@AE@%
- %@AS@%{ }%@AE@%
-
- ■ new style
-
- %@AS@%int addrec( char *name, int id )%@AE@%
- %@AS@%{ }%@AE@%
-
- %@AB@%C4132%@AE@% %@AB@%'%@AE@%%@AI@%object%@AE@%%@AB@%' : const object should be %@AE@%
- %@AB@%initialized%@AE@%
-
- The value of a %@AB@%const%@AE@% object cannot be
- changed, so the only way to give the %@AB@%%@AE@%
- %@AB@%const%@AE@% object a value is to initialize it.
-
- It will not be possible to assign a
- value to %@AI@%object%@AE@%.
-
- %@AB@%C4135%@AE@% %@AB@%conversion between different integral %@AE@%
- %@AB@%types%@AE@%
-
- Information was lost between two
- integral types.
-
- For example, the following code causes
- this warning:
-
- %@AS@%int intvar;%@AE@%
- %@AS@%long longvar;%@AE@%
- %@AS@%intvar = longvar;%@AE@%
-
- If the information is merely interpreted
- differently, this warning is not given,
- as in the following example:
-
- %@AS@%unsigned uintvar = intvar;%@AE@%
-
- %@AB@%C4136%@AE@% %@AB@%conversion between different floating %@AE@%
- %@AB@%types%@AE@%
-
- Information was lost or truncated
- between two floating types.
-
- For example, the following code causes
- this warning:
-
- %@AS@%double doublevar;%@AE@%
- %@AS@%float floatvar;%@AE@%
- %@AS@%floatvar = doublevar;%@AE@%
-
- Note that unsuffixed floating-point
- constants have type double, so the
- following code causes this warning:
-
- %@AS@%floatvar = 1.0;%@AE@%
-
- If the floating-point constant should be
- treated as float type, use the %@AS@%F%@AE@% (or %@AS@%f%@AE@%)
- suffix on the constant to prevent the
- following warning:
-
- %@AS@%floatvar = 1.0F;%@AE@%
-
- %@AB@%C4137%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : no return value from %@AE@%
- %@AB@%floating-point function%@AE@%
-
- The given function had no return
- statement.
-
- A long double function returns its value
- on the floating-point stack or the
- emulated stack. If the function does not
- return a value, a run-time
- floating-point stack underflow may occur.
-
- %@AB@%C4138%@AE@% %@AB@%'*/' found outside of comment%@AE@%
-
- The compiler found a closing comment
- delimiter (*/) without a preceding
- opening delimiter. It assumed a space
- between the asterisk (*) and the forward
- slash ( / ).
-
- The following example causes this
- warning:
-
- %@AS@%int */*comment*/ptr;%@AE@%
-
- In this example, the compiler assumed a
- space before the first comment delimiter
- ( /* ), and issued the warning but
- compiled the line normally. To remove
- the warning, insert the assumed space.
-
- Usually, the cause of this warning is an
- attempt to nest comments.
-
- To comment out sections of code that may
- contain comments, enclose the code in an
- %@AB@%#if%@AE@%/%@AB@%#endif%@AE@% block and set the controlling
- expression to zero, as in:
-
- %@AS@%#if 0%@AE@%
- %@AS@%int my_variable; /* Declaration %@AE@%
- %@AS@%currently not needed */%@AE@%
- %@AS@%#endif%@AE@%
-
- %@AB@%C4139%@AE@% %@AB@%'%@AE@%%@AI@%hexnumber%@AE@%%@AB@%' : hex escape sequence is out%@AE@%
- %@AB@%of range%@AE@%
-
- A hex escape sequence appearing in a
- character or string constant was too
- large to be converted to a character.
-
- If in a string constant, the compiler
- cast the low byte of the hexadecimal
- number to a %@AB@%char%@AE@%. If in a %@AB@%char%@AE@% constant,
- the compiler made the cast and then sign
- extended the result. If in a %@AB@%char%@AE@%
- constant and compiled with /J, the
- compiler cast the value to an unsigned %@AB@%%@AE@%
- %@AB@%char%@AE@%.
-
- For example, ' \\ x1ff ' is out of range
- for a character. Note that the following
- code causes this warning:
-
- %@AS@%printf("\\x7Bell\\n");%@AE@%
-
- The number %@AS@% 7be %@AE@% is a legal hex number,
- but is too large for a character. To
- correct this example, use three hex
- digits:
-
- %@AS@%printf("\\x007Bell\\n");%@AE@%
-
- %@AB@%C4140%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' redefined : preceding %@AE@%
- %@AB@%references may be invalid%@AE@%
-
- The compiler issues this warning if a
- function definition changes between
- incremental compilations.
-
- References previous to the redefinition
- use the previous definition. Subsequent
- references use the new definition.
-
- For example:
-
- %@AS@%main()%@AE@%
- %@AS@%{%@AE@%
- %@AS@%func1 ();%@AE@%
- %@AS@%}%@AE@%
- %@AS@%int func1 ()%@AE@%
- %@AS@%{ }%@AE@%
-
- If this program is compiled with the /Gi
- option, and later the %@AS@% func1 %@AE@% definition
- is changed to %@AS@% long func1%@AE@%, the compiler
- issues this message to warn that calls
- to %@AS@% func1 %@AE@% may be of the wrong type.
-
- Be sure that function calls reference
- the correct type; if not, recompile
- without /Gi. To avoid the problem
- altogether, use function prototypes.
-
- %@AB@%C4185%@AE@% %@AB@%near call to '%@AE@%%@AI@%function%@AE@%%@AB@%' in different %@AE@%
- %@AB@%segment%@AE@%
-
- The given function was specified in an %@AB@%%@AE@%
- %@AB@%alloc_text%@AE@% pragma without being declared
- with %@AB@%_far%@AE@%, and then was called from text
- segment.
-
- The compiler generated a near call.
-
- Although this is a warning message
- rather than an error message, the
- resulting code will not work correctly.
-
- %@AB@%C4186%@AE@% %@AB@%string too long - truncated to 40 %@AE@%
- %@AB@%characters%@AE@%
-
- The string argument for a title or
- subtitle pragma exceeded the maximum
- allow-able length and was truncated.
-
- %@AB@%C4200%@AE@% %@AB@%local variable '%@AE@%%@AI@%identifier%@AE@%%@AB@%' used without%@AE@%
- %@AB@%having been initialized%@AE@%
-
- A reference was made to a local variable
- that had not been assigned a value. As a
- result, the value of the variable is
- unpredictable.
-
- This warning is given only when
- compiling with global register
- allocation on (/Oe).
-
- %@AB@%C4201%@AE@% %@AB@%local variable '%@AE@%%@AI@%identifier%@AE@%%@AB@%' may be used %@AE@%
- %@AB@%without having been initialized%@AE@%
-
- A reference was made to a local variable
- that might not have been assigned a
- value. As a result, the value of the
- variable may be unpredictable.
-
- This warning is given only when
- compiling with the global register
- allocation on (/Oe).
-
- %@AB@%C4202%@AE@% %@AB@%unreachable code%@AE@%
-
- The flow of control can never reach the
- indicated line.
-
- This warning is given only when
- compiling with one of the global
- optimizations (/Oe, /Og, or /Ol).
-
- %@AB@%C4203%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : function too large for %@AE@%
- %@AB@%global optimizations%@AE@%
-
- The named function was too large to fit
- in memory and be compiled with the
- selected optimization. The compiler did
- not perform any global optimiza- tions
- (/Oe, /Og, or /Ol). Other /O
- optimizations, such as /Oa and /Oi, are
- still performed.
-
- One of the following may remove this
- warning:
-
- ■ Recompile with fewer optimizations.
-
- ■ Divide the function into two or more
- smaller functions.
-
- %@AB@%C4204%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : in-line assembler precludes%@AE@%
- %@AB@%global optimizations%@AE@%
-
- The use of in-line assembler in the
- named function prevented the specified
- global optimizations (/Oe, /Og, or /Ol)
- from being performed.
-
- %@AB@%C4205%@AE@% %@AB@%statement has no effect%@AE@%
-
- The indicated statement will have no
- effect on the program execution.
-
- The following are examples of statements
- with no effect:
-
- %@AS@%1;%@AE@%
- %@AS@%a + 1%@AE@%
- %@AS@%; b == c;%@AE@%
-
- %@AB@%C4206%@AE@% %@AB@%assignment within conditional expression%@AE@%
-
- The test value in a conditional
- expression was the result of an
- assignment.
-
- This warning is informational.
-
- An assignment has a value (the value at
- the left side of the assignment) that
- can be used legally in another
- expression, including a test expression.
- However, the intention may have been to
- test a relation instead of an assignment.
-
- For example, the following line, which
- causes this warning, assigns %@AS@% b %@AE@% to %@AS@% a %@AE@%
- and compares the value of %@AS@% a %@AE@% with 0:
-
- %@AS@%if (a = b) ...%@AE@%
-
- However, the following line tests
- whether %@AS@% a %@AE@% and %@AS@% b %@AE@% are equal:
-
- %@AS@%if (a == b) ...%@AE@%
-
- %@AB@%C4209%@AE@% %@AB@%comma operator within array index %@AE@%
- %@AB@%expression%@AE@%
-
- The value used as an index into an array
- was the last one of multiple expressions
- separated by the comma operator.
-
- It is legal for an array index to be the
- value of the last expression in a series
- of expressions separated by the comma
- operator. However, the intent may have
- been to use the expressions to specify
- multiple indexes into a multidimensional
- array.
-
- For example, the following line, which
- causes this warning, is legal in C, and
- specifies the index %@AS@% c %@AE@% into array %@AS@% a: %@AE@%
-
- %@AS@%a[b,c]%@AE@%
-
- However, the following line uses both %@AS@% b%@AE@%
- %@AS@%%@AE@% and %@AS@% c %@AE@% as indexes into a two-
- dimensional array:
-
- %@AS@%a[b][c]%@AE@%
-
- %@AB@%C4300%@AE@% %@AB@%insufficient memory to process debugging%@AE@%
- %@AB@%information%@AE@%
-
- The program was compiled with the /Zi
- option, but not enough memory was
- available to create the required
- debugging information.
-
- One of the following may be a solution:
-
- ■ Split the current file into two or
- more files and compile them separately.
-
- ■ Remove other programs or drivers
- running in the system which could be
- consuming significant amounts of memory.
-
- %@AB@%C4301%@AE@% %@AB@%loss of debugging information caused by %@AE@%
- %@AB@%optimization%@AE@%
-
- Some optimizations, such as code motion,
- cause references to nested variables to
- be moved. The information about the
- level at which the variables are
- declared may be lost. As a result, all
- declarations will seem to be at nesting
- level 1.
-
- %@AB@%C4323%@AE@% %@AB@%potential divide by 0%@AE@%
-
- The second operand in a divide operation
- evaluated to zero at compile time,
- giving undefined results.
-
- The 0 operand may have been generated by
- the compiler, as in the following
- example:
-
- %@AS@%func1() { int i,j,k; i /= j && k; }%@AE@%
-
- %@AB@%C4324%@AE@% %@AB@%potential mod by 0%@AE@%
-
- The second operand in a remainder
- operation evaluated to zero at compile
- time, giving undefined results.
-
- %@AB@%C4414%@AE@% %@AB@%'%@AE@%%@AI@%function%@AE@%%@AB@%' : short jump to function %@AE@%
- %@AB@%converted to near%@AE@%
-
- Short jumps generate a one-byte
- instruction. The instruction includes a
- short offset that represents the
- distance between the jump and the
- function definition. The compiler must
- generate a special record for the jump,
- which requires the jump to be either %@AB@%%@AE@%
- %@AB@%NEAR%@AE@% or %@AB@%FAR%@AE@%, but not %@AB@%SHORT%@AE@%. The compiler
- made the conversion.
-
- For example, the following code causes
- this warning:
-
- %@AS@%main()%@AE@%
- %@AS@%{%@AE@%
- %@AS@% _asm jmp SHORT main%@AE@%
- %@AS@%}%@AE@%
-
- %@NL@%
- %@2@%%@CR:C6A00050015 @%%@AB@%5.2 Command-Line Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- Messages that indicate errors on the command line used to invoke the
- compiler have one of the following formats:%@CR:C6A00050016 @%%@CR:C6A00050017 @%%@CR:C6A00050018 @% %@NL@%
- %@NL@%
- %@AS@% command line error D2xxx: messagetext Error
- %@AS@% command line warning D4xxx: messagetext Warning%@AE@%%@NL@%
- %@NL@%
- The compiler issues a warning message and, if possible, continues
- processing. In some cases, command-line errors are fatal and the compiler
- terminates processing. %@NL@%
- %@NL@%
- When the QCL compiler encounters any of the errors listed in this section,
- it terminates, producing no object file. %@NL@%
- %@NL@%
- %@AB@%Number %@AE@% %@AB@%Command-Line Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%D2013%@AE@% %@AB@%incomplete model specification%@AE@%
-
- A customized memory model was
- incompletely specified with the /A%@AI@%string%@AE@%
- option.
-
- Two types of options begin with /A:
-
- ■ The /A%@AI@%string%@AE@% customized memory-model
- option requires three letters in the
- string. The letters specify the
- code-pointer size, data-pointer size,
- and data-segment setup attributes of the
- memory model.
-
- ■ The /A%@AI@%x%@AE@% option for specifying a
- standard memory model requires one
- uppercase letter. A lowercase letter is
- interpreted to be part of a customized
- memory-model specification. For example:
-
- %@AS@%qcl /As%@AE@%
-
- %@STUB@% A single lowercase letter can be used only if it is a segment setup
- option and is used in combination with a standard memory model.%@NL@%
- %@NL@%
- %@AB@%D2030%@AE@% %@AB@%INTERNAL COMPILER ERROR in '%@AE@%%@AI@%component%@AE@%%@AB@%' %@AE@%
- %@AB@%Contact Microsoft Product Support %@AE@%
- %@AB@%Services%@AE@%
-
- The driver detects an error in the
- specified component, which could be P1,
- P2, P3, MASM, LINK, or BIND.
-
- Note the circumstances of the error and
- notify Microsoft Corporation by
- following the instructions in the
- Microsoft Product Assistance Request
- form at the back of one of your manuals.
-
- %@AB@%D2031%@AE@% %@AB@%too many flags/files on command line%@AE@%
-
- There are more than 128 arguments
- combined from the command line and the
- CL environment variable.
-
- Reduce the number of arguments. You can
- do this by compiling fewer files at one
- time.
-
- %@NL@%
- %@2@%%@CR:C6A00050019 @%%@AB@%5.3 Run-Time Error Message%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following message may be generated at run time. %@NL@%
- %@NL@%
- A run-time error message takes the following general form: %@NL@%
- %@NL@%
- %@AI@%run-time error%@AE@% R6%@AI@%nnn%@AE@%- %@AI@%messagetext%@AE@% %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Run-Time Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%R6010%@AE@% %@AB@%abnormal program termination%@AE@%
-
- This error is displayed by the abort( )
- routine. The program terminates with
- exit code 3, unless an abort( ) signal
- handler has been defined by using the
- signal( ) function.
-
- %@NL@%
- %@2@%%@CR:C6A00050020 @%%@AB@%5.4 QLINK Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- This section lists error messages generated by the QuickC linker (QLINK) and
- the special incremental linker (ILINK) that is invoked when you compile
- QuickC programs with the /Gi or /Li option. Note that in most cases, QuickC
- will invoke QLINK if ILINK fails.%@CR:C6A00050021 @%%@CR:C6A00050022 @% %@NL@%
- %@NL@%
- Fatal errors, which cause the linker to stop execution, have the following
- format: %@NL@%
- %@NL@%
- %@AS@% location : error L1 xxx : messagetext%@AE@%%@NL@%
- %@NL@%
- Nonfatal errors, which indicate problems in the executable file, do not
- cause QLINK to stop execution; QLINK produces the executable file. Nonfatal
- error messages have the following format: %@NL@%
- %@NL@%
- %@AS@% location : error L2 xxx : messagetext %@AE@%%@NL@%
- %@NL@%
- Warnings indicate possible problems in the executable file. QLINK produces
- the executable file. Warnings have the following format: %@NL@%
- %@NL@%
- %@AS@% location : warning L4 xxx : messagetext %@AE@%%@NL@%
- %@NL@%
- In all three kinds of messages, %@AI@%location%@AE@% is the input file associated with
- the error, or %@AS@% QLINK %@AE@% if there is no input file. If the input file is an
- .OBJ or .LIB file and a module name is associated with the error, the module
- name is enclosed in paren-theses, as shown in the following examples: %@NL@%
- %@NL@%
- %@AS@% SLIBC.LIB(_file)
- %@AS@% MAIN.OBJ(main.c)
- %@AS@% TEXT.OBJ%@AE@%%@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00050023 @%%@AB@%5.4.1 Fatal-Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following error messages may appear when you link object files: %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Run-Time Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%L1030%@AE@% %@AB@%missing internal name%@AE@%
-
- An IMPORTS statement specified an
- ordinal in the module-definition file
- without including the internal name of
- the routine.
-
- The name must be given if the import is
- by ordinal.
-
- %@AB@%L1031%@AE@% %@AB@%module description redefined%@AE@%
-
- A DESCRIPTION statement in the
- module-definition file was specified
- more than once.
-
- %@AB@%L1032%@AE@% %@AB@%module name redefined%@AE@%
-
- The module name was specified more than
- once (in a NAME or LIBRARY statement).
-
- %@AB@%L1040%@AE@% %@AB@%too many exported entries%@AE@%
-
- The program exceeded the limit of 65,535
- exported names.
-
- %@AB@%L1041%@AE@% %@AB@%resident-name table overflow%@AE@%
-
- The size of the resident-name table
- exceeds 65,535 bytes.
-
- An entry in the resident-name table is
- made for each exported routine
- designated RESIDENTNAME, and consists of
- the name plus three bytes of information.
- The first entry is the module name.
-
- Reduce the number of exported routines
- or change some to nonresident status.
-
- %@AB@%L1042%@AE@% %@AB@%nonresident-name table overflow%@AE@%
-
- The size of the nonresident-name table
- exceeds 65,535 bytes.
-
- An entry in the nonresident-name table
- is made for each exported routine not
- designated RESIDENTNAME, and consists of
- the name plus three bytes of information.
- The first entry is the DESCRIPTION
- statement.
-
- Reduce the number of exported routines
- or change some to resident status.
-
- %@AB@%L1044%@AE@% %@AB@%imported-name table overflow%@AE@%
-
- The size of the imported-names table
- exceeds 65,535 bytes.
-
- An entry in the imported-names table is
- made for each new name given in the
- IMPORTS section, including the module
- names, and consists of the name plus one
- byte.
-
- Reduce the number of imports.
-
- %@AB@%L1064%@AE@% %@AB@%out of memory%@AE@%
-
- The linker was not able to allocate
- enough memory from the operating system
- to link the program.
-
- Reduce the size of the program in terms
- of code, data, and symbols.
-
- %@AB@%L1078%@AE@% %@AB@%file-segment alignment too small%@AE@%
-
- The segment-alignment size given with
- the /ALIGNMENT:%@AI@%number%@AE@% option was too
- small.
-
- Try increasing the number.
-
- %@AB@%L1092%@AE@% %@AB@%cannot open module-definition file%@AE@%
-
- The linker could not open the
- module-definition file specified on the
- command line or in the response file.
-
- %@AB@%L1115%@AE@% %@AB@%'%@AE@%%@AI@%option%@AE@%%@AB@%' : option incompatible with %@AE@%
- %@AB@%overlays%@AE@%
-
- The given option is not compatible with
- overlays.
-
- Remove the option or else do not use
- overlaid modules.
-
- %@NL@%
- %@3@%%@CR:C6A00050024 @%%@AB@%5.4.2 Nonfatal-Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following nonfatal-error messages may appear when you link object files:
- %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%L2000%@AE@% %@AB@%imported starting address%@AE@%
-
- The program starting address as
- specified in the END statement in a MASM
- file is an imported routine.
-
- %@AB@%L2022%@AE@% %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' (alias '%@AE@%%@AI@%internalname%@AE@%%@AB@%') : %@AE@%
- %@AB@%export undefined%@AE@%
-
- The internal name of the given exported
- routine is undefined.
-
- %@AB@%L2023%@AE@% %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' (alias '%@AE@%%@AI@%internalname%@AE@%%@AB@%') : %@AE@%
- %@AB@%export imported%@AE@%
-
- The internal name of the given exported
- routine conflicts with the internal name
- of a previously imported routine. The
- set of imported and exported names
- cannot overlap.
-
- %@AB@%L2026%@AE@% %@AB@%entry ordinal '%@AE@%%@AI@%number%@AE@%%@AB@%', name '%@AE@%%@AI@%name%@AE@%%@AB@%' : %@AE@%
- %@AB@%multiple definitions for same ordinal%@AE@%
-
- The given exported name with the given
- ordinal number conflicted with a
- different exported name previously
- assigned to the same ordinal. Only one
- name can be associated with a particular
- ordinal.
-
- %@AB@%L2027%@AE@% %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : ordinal too large for export%@AE@%
-
- The given exported name was assigned an
- ordinal that exceeded the limit of
- 65,535.
-
- %@AB@%L2028%@AE@% %@AB@%automatic data segment plus heap exceed %@AE@%
- %@AB@%64K%@AE@%
-
- The total size of data declared in
- DGROUP, plus the value given in HEAPSIZE
- in the module-definition file, plus the
- stack size given by the /STACK option or
- STACKSIZE module-definition file
- statement, exceeds 64K.
-
- Reduce near-data allocation, HEAPSIZE,
- or stack.
-
- %@AB@%L2049%@AE@% %@AB@%no segments defined%@AE@%
-
- No code or initialized data was defined
- in the program. The resulting executable
- file is not likely to be valid.
-
- %@AB@%L2050%@AE@% %@AB@%16/32 bit attribute conflict - segment: %@AE@%
- %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' in group: '%@AE@%%@AI@%group%@AE@%%@AB@%'%@AE@%
-
- 16-bit segments cannot be grouped with
- 32-bit segments.
-
- %@AB@%L2051%@AE@% %@AB@%start address not equal to 0x100 for %@AE@%
- %@AB@%/TINY%@AE@%
-
- The program starting address, as
- specified in the .COM file, must have a
- starting value equal to 100 hex (0x100
- or 0x0100). Any other value is illegal.
-
- Put the following line of assembly
- source code in front of the code
- segment:
-
- %@AS@%ORG 100h%@AE@%
-
- %@AB@%L2052%@AE@% %@AB@%'%@AE@%%@AI@%symbol%@AE@%%@AB@%' : unresolved external - %@AE@%
- %@AB@%possible calling convention mismatch%@AE@%
-
- A symbol was declared to be external in
- one or more modules, but the linker
- could not find it publicly defined in
- any module or library.
-
- The name of the unresolved external
- symbol is given, then a list of object
- modules which contain references to this
- symbol is given. The error message and
- the list are written to the map file, if
- one exists.
-
- This error occurs when a prototype for
- an externally defined function is
- omitted from a program that is compiled
- with the Fastcall option (/Ox). The
- calling convention for fastcall does not
- match the assumptions that are made when
- a prototype is not included for an
- external function.
-
- Either include a prototype for the
- function, or compile without the /Ox
- option.
-
- %@NL@%
- %@3@%%@CR:C6A00050025 @%%@AB@%5.4.3 Warning Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- The following warning messages may appear when you link object files: %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Warning Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%L4004%@AE@% %@AB@%possible fixup overflow at '%@AE@%%@AI@%offset%@AE@%%@AB@%' in %@AE@%
- %@AB@%segment '%@AE@%%@AI@%segment%@AE@%%@AB@%'%@AE@%
-
- A near call/jump was made to another
- segment which was not a member of the
- same group as the segment from which the
- call/jump was made.
-
- This call/jump can cause an incorrect
- address calculation when the distance
- between the paragraph address (frame
- number) of the segment group and the
- target segment is greater than 64K, even
- when the distance between the segment
- where the call/jump was actually made
- and the target segment is less than 64K.
-
- %@AB@%L4017%@AE@% %@AB@%'%@AE@%%@AI@%option%@AE@%%@AB@%' : unrecognized option name; %@AE@%
- %@AB@%option ignored%@AE@%
-
- An unrecognized character followed the
- option indicator (/).
-
- An example of this warning is
-
- %@AS@%QLINK /ABCDEF main;%@AE@%
-
- %@AB@%L4019%@AE@% %@AB@%/TINY disables /INCREMENTAL%@AE@%
-
- A .COM file always requires a full link
- and cannot be incrementally linked.
-
- The /TINY and /INCREMENTAL options are
- incompatible. When they are used
- together, the linker ignores
- /INCREMENTAL.
-
- %@AB@%L4023%@AE@% %@AB@%'%@AE@%%@AI@%routine%@AE@%%@AB@%' ('%@AE@%%@AI@%internalname%@AE@%%@AB@%') : export %@AE@%
- %@AB@%internal name conflict%@AE@%
-
- The internal name of the given exported
- routine conflicted with the internal
- name of a previous import definition or
- export definition.
-
- %@AB@%L4024%@AE@% %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : multiple definitions for export%@AE@%
- %@AB@%name%@AE@%
-
- The given name was exported more than
- once, an action that is not allowed.
-
- %@AB@%L4025%@AE@% %@AB@%'%@AE@%%@AI@%modulename%@AE@%%@AB@%'.'%@AE@%%@AI@%importname%@AE@%%@AB@%'('%@AE@%%@AI@%internalname%@AE@%%@AB@%')%@AE@%
- %@AB@%: import internal name conflict%@AE@%
-
- The internal name of the given imported
- routine (import is either a name or a
- number) conflicted with the internal
- name of a previous export or import.
-
- %@AB@%L4026%@AE@% %@AB@%'%@AE@%%@AI@%modulename%@AE@%%@AB@%'.'%@AE@%%@AI@%importname%@AE@%%@AB@%'('%@AE@%%@AI@%internalname%@AE@%%@AB@%')%@AE@%
- %@AB@%: self-imported%@AE@%
-
- The given imported routine was imported
- from the module being linked. This is
- not supported on some systems.
-
- %@AB@%L4027%@AE@% %@AB@%'%@AE@%%@AI@%name%@AE@%%@AB@%' : multiple definitions for import%@AE@%
- %@AB@%internal name%@AE@%
-
- The given internal name was imported
- more than once. Previous import
- definitions are ignored.
-
- %@AB@%L4028%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : segment already defined%@AE@%
-
- The given segment was defined more than
- once in the SEGMENTS statement of the
- module-definition file.
-
- %@AB@%L4030%@AE@% %@AB@%'%@AE@%%@AI@%segment%@AE@%%@AB@%' : segment attributes changed %@AE@%
- %@AB@%to conform with automatic data segment%@AE@%
-
- The given logical segment in the group
- DGROUP was given sharing attributes
- (SHARED/NONSHARED) that differed from
- the automatic data attributes as
- declared by the DATA instance
- specification (SINGLE/MULTIPLE). The
- attri-butes are converted to conform to
- those of DGROUP.
-
- The name DGROUP is predefined as the
- automatic data segment. DGROUP cannot
- contain code segments because the linker
- always considers DGROUP to be a data
- segment.
-
- %@AB@%L4040%@AE@% %@AB@%stack size ignored for /TINY%@AE@%
-
- The linker ignores stack size if /TINY
- is given and if the stack segment has
- been defined in front of the code
- segment.
-
- %@AB@%L4042%@AE@% %@AB@%cannot open old version%@AE@%
-
- The file specified in the OLD statement
- in the module-definition file could not
- be opened.
-
- %@AB@%L4045%@AE@% %@AB@%name of output file is '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The linker had to change the name of the
- output file to the given file name.
-
- If the output file is specified without
- an extension, the linker assumes the
- default extension .EXE. Creating a Quick
- library, .DLL file, or .COM file forces
- the linker to use an extension other
- than .EXE:
-
- %@AB@%Output File Specification%@AE@% %@AB@%Extension%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- /TINY option .COM
-
- /QUICKLIB option .QLB
-
- LIBRARY statement in .DEF file .DLL
-
- %@AB@%L4047%@AE@% %@AB@%Multiple code segments in module of %@AE@%
- %@AB@%overlaid program incompatible with %@AE@%
- %@AB@%/CODEVIEW%@AE@%
-
- When debugging with CodeView, if there
- are multiple code segments defined in
- one module (.OBJ file) by use of the
- compiler %@AB@%#pragma alloc_text()%@AE@% and the
- program is built as an overlaid program,
- you can access the symbolic information
- for only the first code segment in
- overlay. Symbolic information for the
- rest of the code segments in overlay is
- not accessible.
-
- %@NL@%
- %@2@%%@CR:C6A00050026 @%%@AB@%5.5 NMAKE Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- Error messages from the NMAKE utility have one of the following formats:%@CR:C6A00050027 @%%@CR:C6A00050028 @% %@NL@%
- %@NL@%
- %@AS@% {filename | NMAKE} : fatal error U1 xxx: messagetext
- %@AS@% {filename | NMAKE} : warning U4 xxx: messagetext%@AE@%%@NL@%
- %@NL@%
- The message begins with the input-file name (%@AI@%filename%@AE@%) and line number, if
- one exists, or with the name of the utility. %@NL@%
- %@NL@%
- %@NL@%
- %@3@%%@CR:C6A00050029 @%%@AB@%5.5.1 Fatal-Error Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- NMAKE generates the following error messages: %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Error message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%U1006%@AE@% %@AB@%syntax: missing closing double quotation%@AE@%
- %@AB@%mark%@AE@%
-
- An opening double quotation mark (")
- appeared without a closing double
- quotation mark.
-
- %@AB@%U1007%@AE@% %@AB@%double quotation mark not allowed in %@AE@%
- %@AB@%name%@AE@%
-
- The specified target name or file name
- contained a double quotation mark (").
-
- Double quotation marks can surround a
- file name but not be contained within it.
-
- %@AB@%U1045%@AE@% %@AB@%'internal error message'%@AE@%
-
- Note the circumstances of the error and
- notify Microsoft Corporation by
- following the instructions in the
- Microsoft Product Assistance Request
- form at the back of one of your manuals.
-
- %@AB@%U1051%@AE@% %@AB@%out of memory%@AE@%
-
- The program ran out of space in the far
- heap.
-
- Split the description file into smaller
- and simpler pieces.
-
- %@AB@%U1052%@AE@% %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%' not found%@AE@%
-
- The file was not found.
-
- The file name may not be properly
- specified in the makefile.
-
- %@AB@%U1053%@AE@% %@AB@%file '%@AE@%%@AI@%filename%@AE@%%@AB@%' unreadable%@AE@%
-
- The file cannot be read.
-
- The following are possible causes of
- this error:
-
- ■ The file does not have appropriate
- attributes for reading.
-
- ■ A bad area exists on disk.
-
- ■ A bad file-allocation table exists.
-
- ■ The file is locked.
-
- %@AB@%U1054%@AE@% %@AB@%cannot create in-line file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- NMAKE failed in its attempt to create
- the file given by name.%@AI@% %@AE@%
-
- The following are possible causes of
- this error:
-
- ■ The file already exists with a
- read-only attribute.
-
- ■ There is insufficient disk space to
- create the file.
-
- %@AB@%U1055%@AE@% %@AB@%out of environment space%@AE@%
-
- The environment space limit was reached.
-
- Restart the program with a larger
- environment space or with fewer
- environment variables.
-
- %@AB@%U1056%@AE@% %@AB@%cannot find command processor%@AE@%
-
- The command processor was not found.
-
- NMAKE uses COMMAND.COM or CMD.EXE as a
- command processor to execute commands.
- It looks for the command processor first
- by the full path name given by the
- COMSPEC environment variable. If COMSPEC
- does not exist, NMAKE searches the
- directories specified by the PATH
- environment variable.
-
- %@AB@%U1057%@AE@% %@AB@%cannot delete temporary file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- NMAKE failed to delete the temporary
- in-line file.
-
- %@AB@%U1058%@AE@% %@AB@%terminated by user%@AE@%
-
- Execution of NMAKE was aborted by CTRL+C
- or CTRL+BREAK.
-
- %@AB@%U1060%@AE@% %@AB@%unable to close file : '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- NMAKE encountered an error while closing
- a file.
-
- One of the following may have occurred:
-
- ■ The file is a read-only file.
-
- ■ There is a locking or sharing
- violation.
-
- ■ The disk is full.
-
- %@AB@%U1061%@AE@% %@AB@%/F option requires a file name%@AE@%
-
- The /F command-line option requires the
- name of the description file to be
- specified.
-
- To use standard input, specify '-' as
- the description file name.
-
- %@AB@%U1062%@AE@% %@AB@%missing file name with /X option%@AE@%
-
- The /X command-line option requires the
- name of the file to which diagnostic
- error output should be redirected.
-
- To use standard input, specify '-' as
- the output file name.
-
- %@AB@%U1063%@AE@% %@AB@%missing macro name before '='%@AE@%
-
- NMAKE detected an equal sign (=) without
- a preceding name.
-
- This error can occur in a recursive call
- when the macro corresponding to the
- macro name expands to nothing.
-
- %@AB@%U1064%@AE@% %@AB@%MAKEFILE not found and no target %@AE@%
- %@AB@%specified%@AE@%
-
- No description file was found, and no
- target was specified.
-
- A description file can be specified
- either with the /F option or through the
- default file MAKEFILE. Note that NMAKE
- can create a target using an inference
- rule even if no description file is
- specified.
-
- %@AB@%U1065%@AE@% %@AB@%invalid option '%@AE@%%@AI@%option%@AE@%%@AB@%'%@AE@%
-
- The option specified is not a valid
- option for NMAKE.
-
- %@AB@%U1066%@AE@% %@AB@%option '/N' not supported; use NMAKE%@AE@%
-
- NMAKE's shell program NMK.COM does not
- support the /N option.
-
- Use NMAKE /N.
-
- %@AB@%U1083%@AE@% %@AB@%target macro '$(macroname)' expands to %@AE@%
- %@AB@%nothing%@AE@%
-
- A target was specified as a macro name
- that has not been defined or has null
- value.
-
- NMAKE cannot process a null target.
-
- %@AB@%U1084%@AE@% %@AB@%in-line file not allowed in inference %@AE@%
- %@AB@%rules%@AE@%
-
- In-line file syntax is not allowed in
- inference rules and can be used only in
- a target-dependency block.
-
- %@AB@%U1094%@AE@% %@AB@%syntax error : only (no)keep allowed %@AE@%
- %@AB@%here%@AE@%
-
- Something other than KEEP or NOKEEP
- appeared at the end of the syntax for
- creating an in-line file.
-
- The syntax for generating an in-line
- file allows an action to be specified
- after the second pair of angle brackets.
- Valid actions are KEEP and NOKEEP. Other
- actions are errors.
-
- The KEEP option specifies that NMAKE
- should leave the in-line file on disk.
- The NOKEEP option causes NMAKE to delete
- the file before exiting. The default is
- NOKEEP.
-
- %@AB@%U1095%@AE@% %@AB@%expanded command line '%@AE@%%@AI@%commandline%@AE@%%@AB@%' too %@AE@%
- %@AB@%long%@AE@%
-
- After macro expansion, the command line
- shown exceeded the length limit for
- command lines for the operating system.
-
- DOS permits up to 128 characters on a
- command line.
-
- If the command is a QLINK command line,
- use a response file.
-
- %@AB@%U1096%@AE@% %@AB@%cannot open file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The given file could not be opened,
- either because the disk was full or
- because the file has been set to be
- read-only.
-
- %@AB@%U1097%@AE@% %@AB@%extmake syntax usage error, no dependent%@AE@%
-
- No dependent was given.
-
- In extmake syntax, the target under
- consideration must have either an
- implicit dependent or an explicit
- dependent.
-
- %@AB@%U1098%@AE@% %@AB@%extmake syntax in '%@AE@%%@AI@%string%@AE@%%@AB@%' incorrect%@AE@%
-
- The part of the string shown contains an
- extmake syntax error.
-
- %@NL@%
- %@3@%%@CR:C6A00050030 @%%@AB@%5.5.2 Compilation-Error Message%@AE@%%@EH@%%@NL@%
- %@NL@%
- NMAKE generates the following compilation-error messages: %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Compilation-Error Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%U2001%@AE@% %@AB@%no more file handles (too many files %@AE@%
- %@AB@%open)%@AE@%
-
- NMAKE could not find a free file handle.
-
- One of the following may be a solution:
-
- ■ Reduce recursion in the build
- procedures.
-
- ■ Increase the number of file handles by
- changing the FILES setting in
- CONFIG.SYS to allow a larger number of
- open files. FILES =20 is the recommended
- setting.
-
- %@NL@%
- %@3@%%@CR:C6A00050031 @%%@AB@%5.5.3 Warning Messages%@AE@%%@EH@%%@NL@%
- %@NL@%
- NMAKE generates the following warning messages: %@NL@%
- %@NL@%
- %@AB@%Number%@AE@% %@AB@%Warning Message%@AE@%
- %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%
- %@AB@%U4001%@AE@% %@AB@%command file can be invoked only from %@AE@%
- %@AB@%command line%@AE@%
-
- A command file cannot be invoked from
- within another command file. Such an
- invocation is ignored.
-
- The command file should contain the
- entire remaining command line.
-
- %@AB@%U4002%@AE@% %@AB@%resetting value of special macro '%@AE@%%@AI@%%@AE@%
- %@AI@%macroname%@AE@%%@AB@%'%@AE@%
-
- The value of a macro such as $(MAKE) was
- changed within a description file.
-
- The name by which this program was
- invoked is not a tagged section in the
- TOOLS.INI file.
-
- %@AB@%U4003%@AE@% %@AB@%no match found for wild card '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- There are no file names that match the
- specified target or dependent file with
- the wild-card characters asterisk (*)
- and question mark (?).
-
- %@AB@%U4004%@AE@% %@AB@%too many rules for target '%@AE@%%@AI@%targetname%@AE@%%@AB@%'%@AE@%
-
- Multiple blocks of build commands were
- specified for a target using single
- colons (:) as separators.
-
- %@AB@%U4005%@AE@% %@AB@%ignoring rule '%@AE@%%@AI@%rule%@AE@%%@AB@%' (extension not in %@AE@%
- %@AB@%.SUFFIXES)%@AE@%
-
- The rule was ignored because the
- suffix(es) in the rule are not listed in
- the .SUFFIXES list.
-
- %@AB@%U4006%@AE@% %@AB@%special macro undefined : '%@AE@%%@AI@%macroname%@AE@%%@AB@%'%@AE@%
-
- The special macro name is undefined and
- expands to nothing.
-
- %@AB@%U4007%@AE@% %@AB@%file name '%@AE@%%@AI@%filename%@AE@%%@AB@%' too long; %@AE@%
- %@AB@%truncating to 8.3%@AE@%
-
- The base name of the file has more than
- eight characters, or the extension has
- more than three characters. NMAKE
- truncates the name to an eight-character
- base and a three-character extension.
-
- %@AB@%U4008%@AE@% %@AB@%removed target '%@AE@%%@AI@%target%@AE@%%@AB@%'%@AE@%
-
- Execution of NMAKE was interrupted while
- NMAKE was trying to build the given
- target, and therefore the target was
- incomplete. Because the target was not
- specified in the .PRECIOUS list, NMAKE
- has deleted it.
-
- %@AB@%U4009%@AE@% %@AB@%duplicate in-line file '%@AE@%%@AI@%filename%@AE@%%@AB@%'%@AE@%
-
- The given file name is the same as the
- name of an earlier in-line file.
-
- Reuse of this name caused the earlier
- file to be overwritten. This will
- probably cause unexpected results.
-
- %@NL@%
- %@NL@%
-