home *** CD-ROM | disk | FTP | other *** search
-
- ΓòÉΓòÉΓòÉ 1. Elements of C ΓòÉΓòÉΓòÉ
-
- This section describes the following basic elements of the C programming
- language.
-
- o Character Set
- o Trigraphs
- o Escape Sequences
- o Comments
- o Identifiers
- o C Language Keywords
- o Constants
-
-
- ΓòÉΓòÉΓòÉ 1.1. Character Set ΓòÉΓòÉΓòÉ
-
- The following lists the basic character set which must be available at both
- compile and run time:
-
- o The uppercase and lowercase letters of the English alphabet
- o The decimal digits 0 through 9
- o The following graphic characters:
-
- ! " # % & ' ( ) * + , - . / :
- ; < = > ? [ \ ] _ { } ~
-
- o The caret (^) character in ASCII (bitwise exclusive OR symbol) or the
- equivalent not (╨║) character in EBCDIC
- o The split vertical bar (|) character in ASCII which may be represented by the
- vertical bar (|) character on EBCDIC systems
- o The space character
- o The control characters representing horizontal tab, vertical tab, form feed,
- and end of string.
-
- In C, uppercase and lowercase letters are treated as distinct characters.
-
- For the environments that do not support the entire C character set, you can
- use trigraphs as alternative symbols to represent some C characters.
-
- Related Information
-
- o Trigraphs
-
-
- ΓòÉΓòÉΓòÉ 1.2. Trigraphs ΓòÉΓòÉΓòÉ
-
- Some characters from the C character set are not available on all environments.
- You can enter these characters into a C source program using a sequence of
- three characters called a trigraph. The trigraph sequences are:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé "??=" Γöé "#" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??(" Γöé "[" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??)" Γöé "]" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??<" Γöé "{" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??>" Γöé "}" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??/" Γöé "\" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??'" Γöé "^" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??!" Γöé "Γöé" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "??-" Γöé "~" Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Character Set
-
-
- ΓòÉΓòÉΓòÉ 1.3. Escape Sequences ΓòÉΓòÉΓòÉ
-
- You can represent any member of the character set used at run-time by an escape
- sequence. For example, you can use escape sequences to place such characters
- as tab, carriage return, and backspace into an output stream. An escape
- sequence contains a backslash (\) symbol followed by one of the escape sequence
- characters or \ or followed by an octal or hexadecimal number. A hexadecimal
- escape sequence contains an x followed by one or more hexadecimal digits (0-9,
- A-F, a-f). An octal escape sequence contains one or more octal digits (0-7).
-
- The C language escape sequences and the characters they represent are:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ESCAPE Γöé CHARACTER REPRES- Γöé
- Γöé SEQUENCE Γöé ENTED Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\a" Γöé Alert (bell) Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\b" Γöé Backspace Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\f" Γöé Form feed (new page) Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\n" Γöé New-line Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\r" Γöé Carriage return Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\t" Γöé Horizontal tab Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\v" Γöé Vertical tab Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\'" Γöé Single quotation Γöé
- Γöé Γöé mark Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\"" Γöé Double quotation Γöé
- Γöé Γöé mark Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\?" Γöé Question mark Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "\\" Γöé Backslash Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé NOTE: "\" - The line continua- Γöé
- Γöé tion sequence (\ followed by a Γöé
- Γöé new-line character) which is used Γöé
- Γöé in C language character strings Γöé
- Γöé to indicate that the current line Γöé
- Γöé continues on the next line, is Γöé
- Γöé not an escape sequence. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The value of an escape sequence represents the member of the character set used
- at run-time. For example, on a system that uses the ASCII character codes, the
- letter V is represented by the escape sequence \x56.
-
- You can place an escape sequence in a character constant or in a string
- constant. If an escape sequence is not recognized, the compiler uses the
- character following the backslash and a message is issued. Note that this
- behavior is implementation-defined.
-
- In string and character sequences, when you want the backslash to represent
- itself (rather than the beginning of an escape sequence), you must use a \\
- backslash escape sequence.
-
- Related Information
-
- o Character Constants
- o Strings
-
-
- ΓòÉΓòÉΓòÉ 1.4. Comments ΓòÉΓòÉΓòÉ
-
- Comments begin with the /* characters, end with the */ characters, and may span
- more than one line. You can place comments anywhere the C language allows
- white space. White space includes space, tab, form feed, and new-line
- characters.
-
- If the /Ss compiler option is in effect when you compile your program, double
- slashes (//) will also specify the beginning of a comment. The comment ends at
- the next new line character.
-
- You cannot nest comments. Each comment ends at the first occurrence of */.
-
- Multibyte characters can also be included within a comment.
-
- Related Information
-
- o Source Code Options
-
-
- ΓòÉΓòÉΓòÉ 1.5. Identifiers ΓòÉΓòÉΓòÉ
-
- Identifiers provide names for functions, data objects, labels, tags,
- parameters, macros and typedefs. There is no limit for the number of characters
- in an identifier. However, only the first several characters of identifiers
- may be significant. The following table shows the character lengths of
- identifiers that are recognized by the C/C++ for OS/2 compiler. For SAA C
- compilers, the minimal length of identifiers is 100 characters. config platform
- off Some compilers may allow longer identifiers.
-
- Identifier Minimum Number of Significant Characters
-
- Static data objects 255 characters
-
- Static function names 255 characters
-
- External data objects 255 characters
-
- External function names 255 characters
-
- For identifiers, uppercase and lowercase letters are viewed as different
- symbols. Thus, PROFIT and profit represent different data objects.
-
- Note: By default, the &link386. linker is not case sensitive. To preserve case
- sensitivity, use the /NOI linker option. If you use icc to invoke the linker,
- this option is specified for you. For complete portability, you should never
- use different case representations to refer to the same object.
-
- Avoid creating identifiers that begin with an underscore (_) for function names
- and variable names. Identifiers beginning with an underscore are reserved. All
- identifiers used in header files for C library functions are also reserved.
-
- Although the names of system calls and library functions are not reserved words
- if you do not include the appropriate header files, avoid using these names as
- identifiers. Duplication of a predefined name can lead to confusion for the
- maintainers of your code and to the possibility of errors occurring at link
- time or run time. If you include a library in a program, be aware of the
- function names in that library to avoid name collisions.
-
- You should always include the appropriate header files when using standard
- library functions.
-
-
- ΓòÉΓòÉΓòÉ 1.6. C Language Keywords ΓòÉΓòÉΓòÉ
-
- The C language reserves some words, known as keywords, for special usage. You
- cannot use these words as identifiers. Although you can use them for macro
- names, it is not recommended that you do so. Only the exact spellings of the
- words as specified below are reserved. For example, auto is reserved but AUTO
- is not. The following table lists the C language reserved words:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé The C Language Keywords Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé _Packed Γöé double Γöé int Γöé struct Γöé
- Γöé auto Γöé else Γöé long Γöé switch Γöé
- Γöé break Γöé enum Γöé register Γöé typedef Γöé
- Γöé case Γöé extern Γöé return Γöé union Γöé
- Γöé char Γöé float Γöé short Γöé unsigned Γöé
- Γöé const Γöé for Γöé signed Γöé void Γöé
- Γöé continue Γöé goto Γöé sizeof Γöé volatile Γöé
- Γöé default Γöé if Γöé static Γöé while Γöé
- Γöé do Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé NOTE: "_Packed" is an extension to the ANSI standard. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The C/C++ for OS/2 compiler also reserves the following C keywords, all of
- which are extensions to the SAA standard:
-
- Γö¼:font facename=default
- size=0x0.:font facename=Courier size=15x12.Γö╝:font facename=default
- size=0x0. for OS/2 C Keywords
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Additional C/C Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé _Cdecl Γöé _Far32 Γöé _Inline Γöé _Pascal Γöé
- Γöé _Export Γöé _Fastcall Γöé _Optlink Γöé _Seg16 Γöé
- Γöé _Far16 Γöé Γöé Γöé _System Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 1.7. Constants ΓòÉΓòÉΓòÉ
-
- The C language contains the following types of constants:
-
- o Integer Constants
- o Floating-Point Constants
- o Character Constants
- o Strings
- o Enumeration Constants
-
- A constant is data with a value that does not change during the execution of a
- program. The value of any constant must be in the range of representable values
- for its type.
-
- For more information on data types, see Types.
-
-
- ΓòÉΓòÉΓòÉ 1.7.1. Integer Constants ΓòÉΓòÉΓòÉ
-
- Integer constants can be either decimal, octal or hexadecimal. The following
- diagram lists these forms:
-
- ΓöÇΓöÇΓö¼ΓöÇΓöÇdecimal_constantΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇoctal_constantΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γö£ΓöÇΓöÇlΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇhexadecimal_constantΓöÇΓöÇΓöÿ Γö£ΓöÇΓöÇLΓöÇΓöÇΓöÿ Γö£ΓöÇΓöÇuΓöÇΓöÇΓöñ
- Γöé Γöé Γöé
- Γöé ΓööΓöÇΓöÇUΓöÇΓöÇΓöñ
- Γöé Γöé
- Γö£ΓöÇΓöÇuΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇUΓöÇΓöÇΓöÿ Γö£ΓöÇΓöÇlΓöÇΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇLΓöÇΓöÇΓöÿ
-
- Data Type
- The data type of an integer constant is determined by the constant's value. The
- following table gives a description of the integer constant and a list of
- possible data types for that constant. The smallest data type in the list that
- can contain the constant value will be associated with the constant.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Data Types for Integer Constants Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé CONSTANT Γöé DATA TYPE Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé unsuffixed decimal Γöé "int, long int, unsigned long int" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé unsuffixed octal Γöé "int, unsigned int, long int, Γöé
- Γöé Γöé unsigned long int" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé unsuffixed hexadecimal Γöé "int, unsigned int, long int, Γöé
- Γöé Γöé unsigned long int" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé suffixed by "u" or "U" Γöé "unsigned int, unsigned long int" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé suffixed by "l" or "L" Γöé "long int, unsigned long int" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé suffixed by both "u" Γöé "unsigned long int" Γöé
- Γöé or "U", Γöé Γöé
- Γöé and "l" or "L" Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- A plus (+) or minus (-) symbol can precede the constant. However, the symbol
- is treated as a unary operator rather than as part of the constant value.
-
- Related Information
-
- o Decimal Constants
- o Octal Constants
- o Hexadecimal Constants
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 1.7.2. Decimal Constants ΓòÉΓòÉΓòÉ
-
- A decimal constant contains any of the digits 0 through 9. The first digit
- cannot be 0 (zero). Integer constants beginning with the digit 0 are
- interpreted as an octal constant, rather than as a decimal constant.
-
- Examples of Decimal Constant Values
-
- Related Information
-
- o Integer Constants
- o Octal Constants
- o Hexadecimal Constants
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 1.7.3. Hexadecimal Constants ΓòÉΓòÉΓòÉ
-
- A hexadecimal constant begins with the 0 (zero) digit followed by either an x
- or X. After the 0x, you can place any combination of the digits 0 (zero)
- through 9 and the letters a through f or A through F. When used to represent a
- hexadecimal constant, the lowercase letters are equivalent to their
- corresponding uppercase letters.
-
- Examples of Hexadecimal Constant Values
-
- Related Information
-
- o Integer Constants
- o Decimal Constants
- o Octal Constants
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 1.7.4. Octal Constants ΓòÉΓòÉΓòÉ
-
- An octal constant begins with the digit 0 (zero) and contains any of the digits
- 0 (zero) through 7.
-
- Examples of Octal Constant Values
-
- Related Information
-
- o Integer Constants
- o Decimal Constants
- o Hexadecimal Constants
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 1.7.5. Floating-Point Constants ΓòÉΓòÉΓòÉ
-
- A floating-point constant consists of an integral part, a decimal point, a
- fractional part, an exponent part, and an optional suffix. Both the integral
- and fractional parts are made up of decimal digits. You can omit either the
- integral part or the fractional part, but not both. You can omit either the
- decimal point or the exponent part (but not both).
-
- The exponent part consists of e or E, followed optionally by a sign and a
- decimal number.
-
- The floating-point constant 8.45e+3 evaluates as follows:
-
- 8.45 * (10 ** 3) = 8450.0
-
- The representation of a floating-point number on a system is unspecified. If a
- floating-point constant is too large or too small, the result is undefined.
-
- Data Type
- The suffix f or F indicates a type of float and the suffix l or L indicates a
- type of long double. If a suffix is not specified, the floating-point constant
- has a type double.
-
- A plus (+) or minus (-) symbol can precede a floating-point constant. However,
- the symbol is not part of the constant. It is interpreted as a unary operator.
-
- Examples of Floating-Point Constant Values
-
- Related Information
-
- o Floating-Point Variables
-
-
- ΓòÉΓòÉΓòÉ 1.7.6. Character Constants ΓòÉΓòÉΓòÉ
-
- A character constant contains a sequence of characters or escape sequences
- enclosed in single quotation mark symbols.
-
- At least one character or escape sequence must appear in the character
- constant. The character constant can contain any character from the C character
- set, excluding the single quotation mark, backslash and new-line symbols. The
- prefix L indicates a wide character constant. A character constant must appear
- on a single source line.
-
- The value of a character constant containing a single character is the numeric
- representation of the character in the character set used at run-time. The
- value of a wide character constant containing a single multibyte character is
- the code for that character, as defined by the mbtowc function. If the
- character constant contains more than one character, the last four bytes will
- represent the character constant.
-
- Data Type
- A character constant has type int. A wide character constant is represented by
- a double-byte character of type wchar_t, as defined in the <stddef.h> include
- file. Multibyte characters represent character sets that go beyond the single
- byte character set. Each multibyte character can contain up to 4 bytes.
-
- Restrictions
- To represent the single quotation symbol, backslash, and new-line characters,
- you must use the respective escape sequence. For more information on escape
- sequences, see Escape Sequences.
-
- Examples of Character Constant Values
-
- Related Information
-
- o Strings
- o Escape Sequences
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 1.7.7. Strings ΓòÉΓòÉΓòÉ
-
- A string constant or literal contains a sequence of characters or escape
- sequences enclosed in double quotation mark symbols.
-
- A null (\0) character is appended to each string. For a wide character string
- (a string prefixed by the letter L) the value 0 of type wchar_t is appended. By
- convention, programs recognize the end of a string by finding the null
- character.
-
- If you want to continue a string on the next line, use the line continuation
- sequence (\ symbol immediately followed by a new-line character).
-
- Another way to continue a string is to have two or more consecutive strings.
- Adjacent string literals are concatenated to produce a single string. (The
- null character of the first string will no longer exist after the
- concatenation.) You cannot concatenate a wide string constant with a character
- string constant.
-
- Multiple spaces contained within a string constant are retained.
-
- Data Type
- A character string constant has type array of char and static storage duration.
- A wide character constant has type array of wchar_t and static storage
- duration.
-
- Restrictions
- You can use the escape sequence \n to represent a new-line character as part of
- the string.
-
- You can use the escape sequence \\ to represent a backslash character as part
- of the string.
-
- You can represent the single quotation mark symbol by itself ', but you use the
- escape sequence \" to represent the double quotation mark symbol.
-
- You should be careful when modifying string literals because the resulting
- behavior depends on whether your strings are stored in writable static. See
- #pragma for more information on #pragma strings which can be used to specify
- whether your string literals are readonly or writable. String literals are
- writable by default.
-
- Examples of String Constant Values
-
- Related Information
-
- o Character Constants
- o Escape Sequences
- o Characters
- o Arrays
- o #pragma
- o #pragma strings
-
-
- ΓòÉΓòÉΓòÉ 1.7.8. Enumeration Constants ΓòÉΓòÉΓòÉ
-
- :isyn root=enum.enum enumeration
-
- When you define an enumeration data type, you specify a set of identifiers that
- the data type represents. Each identifier in this set is an enumeration
- constant.
-
- Each enumeration constant has an integer value. You can assign a value by
- placing an equal sign (=) and a constant expression after the enumeration
- constant.
-
- If you do not assign values, the leftmost constant receives the value zero (0).
- Reading from left to right, each constant value increases by one.
-
- Data Type
- An enumeration constant has type int.
-
- Examples of Enumeration Constant Values
-
- Related Information
-
- o Enumerations
- o Integers
-
-
- ΓòÉΓòÉΓòÉ 2. Declarations and Definitions ΓòÉΓòÉΓòÉ
-
- A declaration establishes the names and characteristics of data objects and
- functions used in a program. A definition is a declaration that allocates
- storage for data objects or specifies the body for a function.
-
- The following table shows examples of declarations and definitions.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Examples of Declarations and Definitions Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé DECLARATIONS Γöé DECLARATIONS AND DEFINITIONS Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "extern double pi;" Γöé "double pi = 3.14159265;" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "float square(float x);" Γöé "float square(float x) { Γöé
- Γöé Γöé return x*x; }" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "struct payroll;" Γöé struct payroll { Γöé
- Γöé Γöé char *nameΓöé
- Γöé Γöé float salaΓöéy;
- Γöé Γöé } employee; Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The declaration for a data object can include the following components:
-
- o Storage class, described in Storage Class Specifiers
- o Type, described in Types
- o Qualifier and Declarator, described in Declarators
- o Initializer, described in Initializers.
-
- Function declarations are described in Functions.
-
- Declarations determine the following properties of data objects and their
- identifiers:
-
- o Scope, which describes the visibility of an identifier in a block or source
- file.
- o Storage duration, which describes when the system allocates and frees storage
- for a data object.
- o Linkage, which describes the association between two identical identifiers.
- o Type, which describes the kind of data the object is to represent.
-
- Syntax of a Data Declaration
-
- Related Informaion
-
- o Block Scope Data Declarations
- o File Scope Data Declarations
-
-
- ΓòÉΓòÉΓòÉ 2.1. Block Scope Data Declarations ΓòÉΓòÉΓòÉ
-
- A block scope data declaration can only be placed at the beginning of a block
- and:
-
- o Describes a variable
- o Makes that variable accessible to the current block.
-
- All block scope declarations which do not have the extern storage class
- specifier are definitions and allocate storage for that object.
-
- You can define a data object with block scope with any of the storage class
- specifiers described in Storage Class Specifiers. If you do not specify a
- storage class specifier in a block scope data declaration, the default storage
- class specifier auto is used. If you specify a storage class specifier, you
- can omit the type specifier. If you omit the type specifier, all variables
- declared in that declaration will have the type int.
-
- Initialization
- You cannot initialize a variable that is declared in a block scope data
- declaration and has the extern storage class specifier.
-
- The types of variables you can initialize and the values that uninitialized
- variables receive vary for each storage class specifier.
-
- Storage
- Declarations with the auto or register storage class specifier result in
- automatic storage duration. Declarations with the extern or static storage
- class specifier result in static storage duration.
-
- Related Information
-
- o auto Storage Class Specifier
- o static Storage Class Specifier
- o Declarations and Definitions
- o Declarators
- o Initializers
- o Types
-
-
- ΓòÉΓòÉΓòÉ 2.2. File Scope Data Declarations ΓòÉΓòÉΓòÉ
-
- A file scope data declaration appears outside any block and:
-
- o Describes a variable
- o Makes that variable accessible to all functions that are in the same file and
- whose definitions appear after the declaration.
-
- A file scope data definition is a data declaration at file scope which also
- causes the system to allocate storage for that variable. All objects whose
- identifiers are declared at file scope have static storage duration.
-
- You can use a file scope data declaration to declare variables that you want
- several functions to access.
-
- The only storage class specifiers you can place in a file scope data
- declaration are static and extern. If you specify static, all variables defined
- in that file scope data declaration have internal linkage. If you do not
- specify static, all variables defined in that file scope data declaration have
- external linkage. If you specify the storage class static or extern, you can
- omit the type specifier. If you omit the type specifier, all variables defined
- in that declaration receive the type int.
-
- Initialization
- You can initialize any object with file scope. If you do not initialize a file
- scope variable, its initial value is zero of the appropriate type. If you
- initialize a file scope variable, the initializer must be described by a
- constant expression or must reduce to the address of a previously declared
- variable at file scope, possibly modified by a constant expression.
- Initialization of all variables at file scope takes place before the main
- function begins execution.
-
- Storage
- All objects with file scope data declarations have static storage duration. The
- system allocates memory for all file scope variables when the program begins
- execution and frees it when the program is finished executing.
-
- Related Information
-
- o extern Storage Class Specifier
- o static Storage Class Specifier
- o Declarations and Definitions
- o Declarators
- o Initializers
- o Types.
-
-
- ΓòÉΓòÉΓòÉ 2.3. Storage Class Specifiers ΓòÉΓòÉΓòÉ
-
- The storage class specifier used within the declaration determines the
- following:
-
- o Whether the object has internal, external or no linkage.
-
- o Whether the object has static (storage for the object is maintained
- throughout program execution) or automatic (storage for the object is
- maintained only during the execution of the block in which the identifier of
- the object is defined) storage duration.
-
- o Whether the object is to be stored in memory or in a register, if available.
-
- o Whether the object receives the default initial value 0 or an indeterminate
- default initial value.
-
- For a function, the storage class specifier determines the function's linkage.
-
- The C/C++ for OS/2 compiler implements an additional storage class specifier
- for functions, _Inline. The _Inline specifier determines whether the function
- code will be inlined or called. Note that _Inline is ignored if the /Oi-
- compiler option is specified.
-
- The following sections describe the storage class specifiers:
-
- o auto Storage Class Specifier
- o register Storage Class Specifier
- o extern Storage Class Specifier
- o static Storage Class Specifier
- o _Inline Keyword
-
-
- ΓòÉΓòÉΓòÉ 2.3.1. auto Storage Class Specifier ΓòÉΓòÉΓòÉ
-
- The auto storage class specifier enables you to define a variable with
- automatic storage; its use and storage is restricted to the current block.
- The storage class keyword auto is optional in a data declaration and forbidden
- in a parameter declaration. A variable having the auto storage class specifier
- must be declared within a block. It cannot be used for file scope declarations.
-
- Initialization
- You can initialize any auto variable except parameters. If you do not
- initialize an automatic object, its value is undefined. If you provide an
- initial value, the expression representing the initial value can be any valid C
- expression. For aggregates or unions, the initial value must be a valid
- constant expression. The object is then set to that initial value each time the
- program block that contains the object's definition is entered.
-
- Note: If you use the goto statement to jump into the middle of a block,
- automatic variables within that block are not initialized.
-
- Storage
- Objects with the auto storage class specifier have automatic storage duration.
- Each time a block is entered, storage for auto objects defined in that block is
- made available. When the block is exited, the objects are no longer available
- for use.
-
- If an auto object is defined within a function that is recursively invoked,
- memory is allocated for the object at each invocation of the block.
-
- Usage Notes
- Declaring variables with the auto storage class specifier can decrease the
- amount of memory required for program execution, because auto variables require
- storage only while they actually are needed. Generally, it is not a good idea
- to use automatic storage for large objects because of the time needed by the
- operating system to allocate or deallocate large amounts of storage.
-
- Examples of auto Storage Class
-
- Related Information
-
- o Storage Class Specifiers
- o register Storage Class Specifier
- o Block Scope Data Declarations
- o Address &
-
-
- ΓòÉΓòÉΓòÉ 2.3.2. extern Storage Class Specifier ΓòÉΓòÉΓòÉ
-
- The extern storage class specifier enables you to declare objects and functions
- that several source files can use. All object declarations that occur outside
- a function and that do not contain a storage class specifier declare
- identifiers with external linkage. All function definitions that do not specify
- a storage class define functions with external linkage.
-
- You can distinguish an extern declaration from an extern definition by the
- presence of the keyword extern and the absence of an initial value. If the
- keyword extern is absent or there is an initial value, it is both a definition
- and a declaration. Otherwise, it is just a declaration. An extern definition
- can appear only outside a function definition. Exactly one declaration of the
- variable without the keyword extern can be used, and that declaration is the
- definition of the storage for the variable.
-
- If there is a declaration for an identifier found at file scope, any
- declaration of the same identifier with the extern storage class specifier
- found within a block refers to that same object. If there is no declaration for
- the identifier at file scope, the identifier will have external linkage.
-
- Declaration
- An extern declaration can appear outside a function or at the beginning of a
- block. If the declaration describes a function or appears outside a function
- and describes an object with external linkage, the keyword extern is optional.
-
- Initialization
- You can initialize any object with the extern storage class specifier at file
- scope. You can initialize an extern object with an initializer which must
- either:
-
- o Appear as part of the definition and the initial value must be described by a
- constant expression.
- o Reduce to the address of a previously declared object with static storage
- duration. This object may be modified by a constant expression.
-
- If you do not initialize an extern variable, its initial value is zero of the
- appropriate type. Initialization of an extern object is completed by the start
- of program execution.
-
- Storage
- extern objects have static storage duration. Memory is allocated for extern
- objects before the main function begins execution. When the program finishes
- executing, the storage is freed.
-
- Examples of extern Storage Class
-
- Related Information
-
- o Storage Class Specifiers
- o File Scope Data Declarations
- o Function Definition
- o Function Declarator
- o Constant Expression
-
-
- ΓòÉΓòÉΓòÉ 2.3.3. register Storage Class Specifier ΓòÉΓòÉΓòÉ
-
- The register storage class specifier enables you to indicate within a file
- scope data definition or a parameter declaration that the object being
- described will be heavily used (such as a loop control variable).
-
- Note: Because the C/C++ for OS/2 compiler optimizes register use, it does not
- respect the register keyword. The storage class keyword register is required in
- a data definition and a parameter declaration that describes an object having
- the register storage class. An object having the register storage class
- specifier must be defined within a block or declared as a parameter to a
- function.
-
- Initialization
- You can initialize any register object except parameters. If you do not
- initialize an automatic object, its value is undefined. If you provide an
- initial value, the expression representing the initial value can be any valid C
- expression. For aggregates or unions, the initial value must be a valid
- constant expression. The variable is then set to that initial value each time
- the program block that contains the object's definition is entered.
-
- Storage
- Objects with the register storage class specifier have automatic storage
- duration. Each time a block is entered, storage for register objects defined in
- that block are made available. When the block is exited, the objects are no
- longer available for use.
-
- If a register object is defined within a function that is recursively invoked,
- the system allocates memory for the variable at each invocation of the block.
-
- The register storage class specifier indicates that the object is heavily used
- and indicates to the compiler that the value of the object should reside in a
- machine register. Not all register variables are actually placed in registers.
-
- If the compiler does not allocate a machine register for a register object, the
- object is treated as having the storage class specifier auto. Because of the
- limited size and number of registers available on most systems, few variables
- can be stored in registers at the same time. Even if a register variable is
- treated as a variable with storage class auto, the address of the variable
- cannot be taken.
-
- Restrictions
- You cannot apply the & (address) operator to register variables. You cannot use
- the register storage class specifier on file scope data declarations.
-
- Usage Notes
- Using register definitions for variables that are heavily used may make your
- object files smaller and run faster. In object code, a reference to a register
- can require less code and time than a reference to memory.
-
- Related Information
-
- o Storage Class Specifiers
- o auto Storage Class Specifier
- o Block Scope Data Declarations
- o Address &
-
-
- ΓòÉΓòÉΓòÉ 2.3.4. static Storage Class Specifier ΓòÉΓòÉΓòÉ
-
- The static storage class specifier enables you to define objects with static
- storage duration and internal linkage, or to define functions with internal
- linkage.
-
- An object having the static storage class specifier can be defined within a
- block or at file scope. If the definition occurs within a block, the object has
- no linkage. If the definition occurs at file scope, the object has internal
- linkage.
-
- Initialization
- You can initialize any static object. If you do not provide an initial value,
- the object receives the value of zeros of the appropriate type. If you
- initialize a static object, the initializer must be described by a constant
- expression or must reduce to the address of a previously declared extern or
- static object, possibly modified by a constant expression.
-
- Storage
- Objects with the static storage class specifier have static storage duration.
- The storage for a static variable is made available when the program begins
- execution. When the program finishes executing, the memory is freed.
-
- Restrictions
- You cannot declare a static function at block scope.
-
- Usage Notes
- You can use static variables when you need an object that retains its value
- from one execution of a block to the next execution of that block. Using the
- static storage class specifier keeps the system from reinitializing the object
- each time the block in which the object is defined is executed.
-
- Examples of static Storage Class.
-
- Related Information
-
- o Storage Class Specifiers
- o Block Scope Data Declarations
- o File Scope Data Declarations
- o Function Definition
- o Function Declarator
-
-
- ΓòÉΓòÉΓòÉ 2.3.5. _Inline Keyword ΓòÉΓòÉΓòÉ
-
- Use the _Inline keyword to specify which user functions you want the C/C++ for
- OS/2 compiler to inline. For example:
-
- _Inline int catherine(int a);
- causes catherine to be inlined, meaning that code is generated for the
- function, rather than a function call. The _Inline keyword also implicitly
- declares the function as static.
-
- By default, function inlining is turned off, and functions qualified with
- _Inline are treated simply as static functions. To turn on function inlining,
- specify the inf./Oi+ option. If you turn optimization on (/O+), /Oi+ becomes
- the default.
-
- Recursive functions (functions that call themselves) are inlined for the first
- occurrence only. The call to the function from within itself will not be
- inlined.
-
- You can also use the /Oivalue option to automatically inline all functions
- smaller than value abstract code units as well as those qualified with _Inline.
- For best performance results, choose the functions you want to inline using
- _Inline rather than using automatic inlining.
-
- Note: If you plan to debug your code (specifying /Ti+), you should turn
- inlining off. You should also be aware that profiling hooks are not generated
- for inlined functions.
-
- For more information on function inlining, see the IBM C/C++ for OS/2
- Programming Guide.
-
-
- ΓòÉΓòÉΓòÉ 2.4. Declarators ΓòÉΓòÉΓòÉ
-
- A declarator designates a data object or function. Declarators appear in all
- data definitions and declarations and in some type definitions.
-
- Syntax of a Declarator
-
- A qualifier is one of: const, volatile or _Packed. The C/C++ for OS/2 compiler
- also implements the &Seg16. _Export, and _Inline qualifiers. You cannot declare
- or define a volatile function.
-
- A declarator for a volatile data object can contain a subdeclarator.
-
- Syntax of a Subdeclarator
-
- A subscript declarator describes the number of dimensions in an array and the
- number of elements in each dimension.
-
- Syntax of a Subscript Declarator
-
- A simple declarator consists of an identifier, which names a data object.
-
- You can define or declare an aggregate by using a declarator that contains an
- identifier, which names the data object, and some combination of symbols and
- identifiers, which helps to describe the type of data that the object
- represents. An aggregate is a structure, union or array.
-
- Examples of Declarators
-
- Related Information
-
- o volatile and const Qualifiers
- o _Packed Qualifier
- o _Seg16 Type Qualifier
- o _Export Keyword
- o Declarations and Definitions
- o Arrays
- o Enumerations
- o Pointers
- o Structures
- o Unions
-
-
- ΓòÉΓòÉΓòÉ 2.4.1. volatile and const Qualifiers ΓòÉΓòÉΓòÉ
-
- The volatile qualifier maintains the intent of the original expression with
- respect to stores and fetches of volatile objects. The volatile qualifier is
- useful for data objects having values that may be changed in ways unknown to
- your program (such as the system clock). Objects referenced by multiple threads
- or by signal handlers should also be qualified as volatile. Portions of an
- expression which reference volatile objects are not to be optimized.
-
- The const qualifier explicitly declares a data object as a data item that
- cannot be changed. Its value is set at initialization. You cannot use const
- data objects in expressions requiring a modifiable lvalue. For example, a
- const data object cannot appear on the left-hand side of an assignment
- statement.
-
- For a volatile or const pointer, you must place the keyword between the * and
- the identifier. For example:
-
- int * volatile x; /* x is a volatile pointer to an int */
- int * const y = &z; /* y is a const pointer to the int variable z */
-
- For a pointer to a volatile or const data object, you must place the keyword
- before the type specifier. For example:
-
- volatile int *x; /* x is a pointer to a volatile int */
- const int *y; /* y is a pointer to a const int */
-
- You can assign a value to the int * const y but not to const int * y.
-
- For other types of volatile and const variables, the position of the keyword
- within the definition (or declaration) is less important. For example:
-
- volatile struct omega {
- int limit;
- char code;
- } group;
-
- provides the same storage as:
-
- struct omega {
- int limit;
- char code;
- } volatile group;
-
- In both examples, only the structure variable group receives the volatile
- qualifier. Similarly, if you specified the const keyword instead of volatile,
- only the structure variable group receives the const qualifier. The const and
- volatile qualifiers when applied to a structure or union also apply to the
- members of the structure or union.
-
- Although enumeration, structure, and union variables can receive the volatile
- or const qualifier, enumeration, structure, and union tags do not carry the
- volatile or const qualifier. For example, the blue structure does not carry the
- volatile qualifier:
-
- volatile struct whale {
- int weight;
- char name[8];
- } killer;
- struct whale blue;
-
- The keyword volatile or const cannot separate the keywords enum, struct, and
- union from their tags.
-
- You cannot declare or define a volatile or const function but you can define or
- declare a function that returns a pointer to a volatile or const object.
-
- You can place more than one qualifier on a declaration but you cannot specify
- the same qualifier more than once on a declaration.
-
- These type qualifiers are only meaningful on expressions that are lvalues.
-
- Related Information
-
- o Declarators
- o Types
- o Structures
- o Unions
- o Enumerations
- o Pointers
- o Lvalue
-
-
- ΓòÉΓòÉΓòÉ 2.4.2. _Packed Qualifier ΓòÉΓòÉΓòÉ
-
- The _Packed qualifier removes padding between members of structures and unions,
- whenever possible. However, the storage saved using packed structures and
- unions may come at the expense of run-time performance. Most machines access
- data more efficiently if it is aligned on appropriate boundaries. With packed
- structures and unions, members are generally not aligned on natural boundaries,
- and the result is that member-accessing operations (using the . and ->
- operators) are slower.
-
- _Packed can only be used with structs or unions. If you use _Packed with other
- types, an error message is generated but the qualifier has no effect on the
- declarator it qualifies. Packed and nonpacked structures and unions have
- different storage layouts. However, a packed structure or union can be
- assigned to a nonpacked structure or union of the same type, and nonpacked
- structure or union can be assigned to a packed structure or union. In
- contrast, comparisons between packed and nonpacked structures or unions of the
- same type are illegal.
-
- If you specify the _Packed qualifier on a structure or union which contains a
- structure or union as a member, the qualifier is not passed on to the contained
- structure or union.
-
- The C/C++ for OS/2 compiler also lets you pack structures using the #pragma
- pack directive or the /Sp option. See #pragma for more information on #pragma
- pack. The /Sp option is described in Source Code Options.
-
- Related Information
-
- o Arrays
- o Enumerations
- o Pointers
- o Structures
- o Unions
-
-
- ΓòÉΓòÉΓòÉ 2.4.3. _Seg16 Type Qualifier ΓòÉΓòÉΓòÉ
-
- Because pointers are interpreted differently in 16-bit programs than in 32-bit
- programs, they cannot be shared between the two types of program. Use the
- _Seg16 type qualifier when calling 16-bit code to ensure correct mapping of
- pointers between the different types of code. For example:
-
- char * _Seg16 p16;
-
- declares p16 to be a segmented pointer that can be addressed by a 16-bit
- program. The pointer can also be used in a 32-bit program, because the compiler
- converts it to 32-bit form. The _Seg16 qualifier can only be used with
- pointers. Note that _Seg16 comes after the asterisk in the declaration, as
- required by ANSI syntax rules. All pointers shared between 32-bit and 16-bit
- code must be qualified with _Seg16. This includes pointers passed indirectly
- to 16-bit code, such as pointers in structures and pointers that are referenced
- by pointers passed directly to 16-bit code.
-
- While it is possible to write a program where all the pointers are qualified
- with _Seg16, it is not recommended. Every time a segmented pointer is used in a
- 32-bit program, it must be converted to a 32-bit pointer and then back to
- segmented pointer to be stored. This process will cause a noticeable
- performance degradation in your program. Pointers that are not used by 16-bit
- code and those that are passed by value to 16-bit code (that is, as a parameter
- to a function) do not need to be qualified with _Seg16.
-
- For more information on using _Seg16 and calling 16-bit programs from 32-bit
- code, see the IBM C/C++ for OS/2 Programming Guide.
-
- Related Information
-
- o Pointers
- o -- Link Reference pseg16 not found --#pragma seg16
-
-
- ΓòÉΓòÉΓòÉ 2.4.4. _Export Keyword ΓòÉΓòÉΓòÉ
-
- Use the _Export keyword with a function name to declare that the function is to
- be exported, that is, made available to other modules. For example:
-
- int _Export anthony(float);
- causes the function anthony to be exported.
-
- You can use _Export at any language level. If you also use linkage keywords,
- you can place _Export either before or after a linkage keyword. For example,
- both of the following declarations are valid:
-
- int _Export _Optlink brian(int);
- int _Optlink _Export brian(int);
-
- The _Export keyword is an alternative to the inf.pragma. export directive.
- Note that #pragma export allows you to specify both a name and an ordinal
- number by which the function can be called. If you use _Export, other modules
- must call the function using its original name.
-
- If you use _Export to export your function, you may still need to provide an
- EXPORTS entry for that function in your module definition (.DEF) file. If your
- function has certain default characteristics, namely:
-
- o Has shared data
- o Has no I/O privileges
- o Is not resident
- it does not require an EXPORTS entry. If your function has characteristics
- other than the defaults, the only way you can specify them is with an EXPORTS
- entry in your .DEF file.
-
- Note: To create an import library for the DLL, you must either create it from
- the DLL itself or provide a .DEF file with an EXPORTS entry for every function,
- regardless of whether _Export is used.
-
-
- ΓòÉΓòÉΓòÉ 2.5. Initializers ΓòÉΓòÉΓòÉ
-
- An initializer is an optional part of a data declaration that specifies an
- initial value of a data object.
-
- Syntax of an Initializer
-
- The initializer consists of the = symbol followed by an initial expression or a
- braced list of initial expressions separated by commas. The number of
- initializers should not be more than the number of elements to be initialized.
- The initial expression evaluates to the first value of the data object.
-
- To assign a value to a scalar object, use the simple initializer:
- = expression.
-
- For unions and structures, the set of initial expressions must be enclosed in {
- } (braces) unless the initializer is a string literal. If the initializer of a
- character string is a string literal, the { } are optional. Individual
- expressions must be separated by commas, and groups of expressions can be
- enclosed in braces and separated by commas. The number of initializers must be
- less than or equal to the number of objects being initialized. In the
- following example, only the first eight elements of the array grid are
- explicitly initialized. The remaining four elements that are not explicitly
- initialized are initialized as if you explicitly initialized them to zero.
-
- static short grid[3] [4] = {0, 0, 0, 1, 0, 0, 1, 1};
-
- The initial values of grid are:
-
- Element Value
- grid[0][0] 0
- grid[0][1] 0
- grid[0][2] 0
- grid[0][3] 1
- grid[1][0] 0
- grid[1][1] 0
- grid[1][2] 1
- grid[1][3] 1
- grid[2][0] 0
- grid[2][1] 0
- grid[2][2] 0
- grid[2][3] 0
-
- Initialization considerations for each data type are described in the section
- for that data type.
-
- Related Information
-
- o Block Scope Data Declarations
- o File Scope Data Declarations
- o Arrays
- o Characters
- o Enumerations
- o Floating-Point Variables
- o Integers
- o Pointers
- o Structures
- o Unions
-
-
- ΓòÉΓòÉΓòÉ 2.6. Types ΓòÉΓòÉΓòÉ
-
- This section describes the C data types. The types are:
-
- o Characters
- o Floating-Point Variables
- o Integers
- o Enumerations
- o Structures
- o Unions
-
- From these types, you can derive the following:
-
- o Arrays
- o Pointers
- o Functions
-
-
- ΓòÉΓòÉΓòÉ 2.6.1. Characters ΓòÉΓòÉΓòÉ
-
- The C language contains three character data types: char, signed char and
- unsigned char. These data types provide enough storage to hold any member of
- the character set used at run time.
-
- char is represented as an unsigned char. You can change this default using
- #pragma chars or the /J compiler option. If you do not care whether a char data
- object is signed or unsigned, you can declare the object as having the data
- type char; otherwise, explicitly declare signed char or unsigned char. When a
- char (signed or unsigned) is widened to an int, its value is preserved.
-
- To declare a data object having a character data type, place a char specifier
- in the type specifier position of the declaration.
-
- The declarator for a simple character declaration is an identifier. You can
- initialize a simple character with a character constant or with an expression
- that evaluates to an integer.
-
- You can use the char specifier in variable definitions to define such variables
- as: arrays of characters, pointers to characters, and arrays of pointers to
- characters.
-
- Examples of Character Data Types
-
- Related Information
-
- o Arrays
- o Pointers
- o Character Constants
- o Assignment Expression
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.2. Floating-Point Variables ΓòÉΓòÉΓòÉ
-
- C defines three types of floating-point variables: float, double, and long
- double.
-
- The storage size of a float variable is less than or equal to the storage size
- of a double variable and the storage size of a double variable is less than or
- equal to the storage size of a long double variable. Thus, the following
- expression always evaluates to 1 (true):
-
- sizeof(float) <= sizeof(double) && sizeof(double) <= sizeof(long double)
-
- To declare a data object having a floating-point type, use the float specifier.
-
- The declarator for a simple floating-point declaration is an identifier. You
- can initialize a simple floating-point variable with a float constant or with a
- variable or expression that evaluates to an integer or floating-point number.
- (The storage class of a variable determines how you can initialize the
- variable.)
-
- Examples of Floating-Point Data Types
-
- Related Information
-
- o Floating-Point Constants
- o Assignment Expression
- o Integers
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.3. Integers ΓòÉΓòÉΓòÉ
-
- The C language supports the following six types of integer variables:
-
- o short int or short or signed short or signed short int
-
- o signed int or int (in some cases, no type specifier is needed; see Block
- Scope Data Declarations and File Scope Data Declarations)
-
- o long int or long or signed long or signed long int
-
- o unsigned short int or unsigned short
-
- o unsigned or unsigned int
-
- o unsigned long int or unsigned long.
-
- The storage size of a short type is less than or equal to the storage size of
- an int variable and the storage size of an int variable is less than or equal
- to the storage size of a long variable. Thus, the following expression always
- evaluates to 1 (true):
-
- sizeof(short) <= sizeof(int) && sizeof(int) <= sizeof(long)
-
- Two sizes for integer data types are provided. Objects having type short are 2
- bytes of storage long. Objects having type long are 4 bytes of storage long.
- An int represents the most efficient data storage size on the system (the
- word-size of the machine) and receives 4 bytes of storage.
-
- The unsigned prefix indicates that the value of the object is a nonnegative
- integer. Each unsigned type provides the same size storage as its signed
- equivalent. For example, int reserves the same storage as unsigned int.
- Because a signed type reserves a sign bit, an unsigned type can hold a larger
- positive integer than the equivalent signed type.
-
- To declare a data object having an integer data type, place an int specifier in
- the type specifier position of the declaration.
-
- The declarator for a simple integer definition or declaration is an identifier.
- You can initialize a simple integer definition with an integer constant or with
- an expression that evaluates to a value that can be assigned to an integer.
- (The storage class of a variable determines how you can initialize the
- variable.)
-
- Examples of Integer Data Types
-
- Related Information
-
- o Integer Constants
- o Decimal Constants
- o Octal Constants
- o Hexadecimal Constants
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.4. void Type ΓòÉΓòÉΓòÉ
-
- void is a data type that always represents an empty set of values. The keyword
- for this type is void. When a function does not return a value, you should use
- void as the type specifier in the function definition and declaration. The
- only object that can be declared with the type specifier void is a pointer.
-
- Examples of void Types
-
- Related Information
-
- o Cast
-
-
- ΓòÉΓòÉΓòÉ 2.6.5. Arrays ΓòÉΓòÉΓòÉ
-
- An array is an ordered group of data objects. Each object is called an
- element. All elements within an array have the same data type.
-
- You can use any type specifier in an array definition or declaration. Thus,
- array elements can be of any data type, except function. (You can, however,
- declare an array of pointers to functions.)
-
- Declarator
- The declarator contains an identifier followed by a subscript declarator. The
- identifier can be preceded by an * (asterisk), making the variable an array of
- pointers.
-
- The subscript declarator describes the number of dimensions in the array and
- the number of elements in each dimension, as shown in Declarators.
-
- Each bracketed expression, or subscript, describes a different dimension. Note
- that the [ and ] characters can be represented by the trigraphs ??( and ??)
- respectively. The constant expression must have an integral value. The value
- of the constant expression determines the number of elements in that dimension.
-
- Examples of arrays
-
- You can leave the first (and only the first) set of subscript brackets empty
- in:
-
- o Array definitions that contain initializations
- o extern declarations
- o Parameter declarations.
-
- In array definitions that leave the first set of subscript brackets empty, the
- compiler uses the initializer to determine the number of elements in the first
- dimension. In a one-dimensional array, the number of initialized elements
- becomes the total number of elements. In a multidimensional array, the
- compiler compares the initializer to the subscript declarator to determine the
- number of elements in the first dimension.
-
- Initializer
- The initializer contains the = symbol followed by a brace-enclosed
- comma-separated list of constant expressions. You do not need to initialize all
- elements in an array. Elements that are not initialized (in extern and static
- definitions only) receive the value 0 (zero).
-
- Examples of Initialized Arrays
-
- You can initialize a one-dimensional character array by specifying:
-
- o A brace-enclosed comma-separated list of constants each of which can be
- contained in a character
- o A string constant. (Braces surrounding the constant are optional.)
-
- If you specify a string constant, the null character (\0) is placed at the end
- of the string if there is room or if the array dimensions are not specified.
-
- Note that the following definition would result in the null character being
- lost:
-
- static char name[3]="Jan";
-
- Example of an Initialized Character Array
-
- You can initialize a multidimensional array by:
-
- o Listing the values of all elements you want to initialize, in the order that
- the compiler assigns the values. The compiler assigns values by increasing
- the subscript of the last dimension fastest. This form of a multidimensional
- array initialization looks like a one-dimensional array initialization. The
- following definition completely initializes the array month_days:
-
- static month_days[2][12] =
- {
- 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
- 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
- };
-
- o Using braces to group the values of the elements you want initialized. You
- can place braces around each element, or around any nesting level of
- elements. The following definition contains two elements in the first
- dimension. (You can consider these elements as rows.) The initialization
- contains braces around each of these two elements:
-
- static int month_days[2][12] =
- {
- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
- };
-
- You can use nested braces to initialize dimensions and elements in a dimension
- selectively.
-
- Example of a Selectively Initialized Array
-
- Note: When using braces, you should place braces around each dimension (fully
- braced), or only use one set of braces to enclose the entire set of
- initializers (unbraced). Placing braces around some elements and not others
- may lead to confusion and should be avoided. An unsubscripted array name (for
- example, region instead of region[4]) represents a pointer whose value is the
- address of the first element of the array. For more information, see Primary
- Expression.
-
- Examples of Arrays
-
- Related Information
-
- o Pointers
- o Array Subscript [ ]
- o Strings
- o Declarators
- o Initializers
- o Conversions
-
-
- ΓòÉΓòÉΓòÉ 2.6.6. Enumerations ΓòÉΓòÉΓòÉ
-
- An enumeration data type represents a set of values that you declare. You can
- define an enumeration data type and all variables that have that enumeration
- type in one statement, or you can separate the declaration of the enumeration
- data type from all variable definitions. The identifier associated with the
- data type (not an object) is a tag.
-
- An enumeration type declaration contains the enum keyword followed by an
- identifier (the enumeration tag) and a brace-enclosed list of enumerators. Each
- enumerator is separated by a comma.
-
- Syntax of an Enumeration Declaration and an Enumerator
-
- The keyword enum, followed by the identifier, names the data type (like the tag
- on a struct data type). The list of enumerators provides the data type with a
- set of values. Each enumerator represents an integer value. To conserve
- space, enumerations may be stored in spaces smaller than that of an int. By
- default, the type of the enum variable is the size of the smallest integral
- type that can contain all enumerator values. You can change the default using
- the /Su option.
-
- The identifier in an enumerator is called an enumeration constant. You can use
- an enumeration constant anywhere an integer constant is allowed. The value of
- an enumeration constant is determined by the following rules:
-
- 1. If an = (equal sign) and a constant expression follow the identifier, the
- identifier represents the value of the constant expression.
-
- 2. If the enumerator is the leftmost value in the list, the identifier
- represents the value 0 (zero).
-
- 3. Otherwise, the identifier represents the integer value that is one greater
- than the value represented by the preceding enumerator.
-
- Each enumeration constant must be unique within the block or the file where the
- enumeration data type is defined.
-
- Examples of Defining an Enumeration Type
-
- Defining a Variable That Has an Enumeration Type
- An enumeration variable definition contains a storage class specifier
- (optional), a type specifier, a declarator, and an initializer (optional). The
- type specifier contains the keyword enum followed by the name of the
- enumeration data type. You must declare the enumeration data type before you
- can define a variable having that type.
-
- Example of Defining an Enumeration Variable
-
- The initializer for an enumeration variable contains the = symbol followed by
- an expression. The expression must evaluate to an int value.
-
- Defining an Enumeration Type and Enumeration Objects in the Same Declaration
- You can place a type definition and a variable definition in one statement by
- placing a declarator and an optional initializer after the type definition. If
- you want to specify a storage class specifier for the variable, you must place
- the storage class specifier at the beginning of the declaration. For example:
-
- register enum score { poor=1, average, good } rating = good;
-
- This example is equivalent to the following two declarations:
-
- enum score { poor=1, average, good };
- register enum score rating = good;
-
- Both examples define the enumeration data type score and the variable rating.
- rating has the storage class specifier register, the data type enum score, and
- the initial value 3 (or good).
-
- If you combine a data type definition with the definitions of all variables
- having that data type, you can leave the data type unnamed. For example:
-
- enum { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday,
- Saturday } weekday;
-
- This example defines the variable weekday, which can be assigned any of the
- specified enumeration constants.
-
- Examples of Enumeration Data Types
-
- Related Information
-
- o Enumeration Constants
- o Constant Expression
- o Identifiers
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.7. Pointers ΓòÉΓòÉΓòÉ
-
- A pointer type variable holds the address of a data object or a function. A
- pointer can refer to an object of any one data type but cannot point to an
- object having the register storage class specifier or to a bit-field. Some
- common uses for pointers are:
-
- o To pass the address of a variable to a function. By referencing a variable
- through its address, a function can change the contents of that variable.
- o To access dynamic data structures such as linked lists, trees, and queues.
- o To access elements of an array or members of a structure.
- o To access an array of characters as a string.
-
- Declarator
- The following example declares pcoat as a pointer to an object having type
- long:
-
- extern long *pcoat;
-
- If the keyword volatile appears before the *, the declarator describes a
- pointer to a volatile object. If the keyword volatile comes between the * and
- the identifier, the declarator describes a volatile pointer. The keyword const
- operates in the same manner as the volatile keyword.
-
- Examples of Pointer Declarations
-
- Initializer
- When you use pointers in an assignment operation, you must ensure that the
- types of the pointers in the operation are compatible.
-
- Examples of Compatible and Incompatible Declarations
-
- The initializer is an = (equal sign) followed by the expression which
- represents the address that the pointer is to contain. The following example
- defines the variables time and speed as having type double and amount as having
- type pointer to a double. The pointer amount is initialized to point to total:
-
- double total, speed, *amount = &total;
-
- The compiler converts an unsubscripted array name to a pointer to the first
- element in the array. You can assign the address of the first element of an
- array to a pointer by specifying the name of the array. The following two sets
- of definitions are equivalent. Both define the pointer student and initialize
- student to the address of the first element in class:
-
- int class[80];
- int *student = class;
-
- is equivalent to:
-
- int class[80];
- int *student = &class[0];
-
- You can assign the address of the first character in a string constant to a
- pointer by specifying the string constant in the initializer.
-
- Examples of Pointers Initialized to Strings
-
- A pointer can also be initialized to the integer constant 0 (zero). Such a
- pointer is a NULL pointer which does not point to any object.
-
- Restrictions
- You cannot use pointers to reference bit-fields or objects having the register
- storage class specifier.
-
- A pointer to a packed structure or union is incompatible with a pointer to a
- corresponding nonpacked structure or union because packed and nonpacked objects
- have different memory layouts. As a result, comparisons and assignments between
- pointers to packed and nonpacked objects are not valid.
-
- You can, however, perform these assignments and comparisons with type casts.
- Consider the following example:
-
- int main(void)
- {
- _Packed struct ss *ps1;
- struct ss *ps2;
- .
- .
- .
- ps1 = (_Packed struct ss *)ps2;
- .
- .
- .
- }
-
- In the preceding example, the cast operation allows you to compare the two
- pointers, but you must be aware that ps1 still points to a nonpacked object.
- For the C/C++ for OS/2 compiler, all pointers that are shared between 32-bit
- and 16-bit code must be declared with the _Seg16 type qualifier. This includes
- pointers that are indirectly passed to 16-bit code, such as pointers in
- structures and pointers that are referenced by pointers directly passed to
- 16-bit code.
-
- Using Pointers
- Two operators are commonly used in working with pointers, the & (address)
- operator and the * (indirection) operator. You can use the & operator to
- reference the address of an object.
-
- The * (indirection) operator enables you to access the value of the object to
- which a pointer refers.
-
- Pointer Arithmetic
- You can perform a limited number of arithmetic operations on pointers. These
- operations are:
-
- o Increment and decrement
- o Addition and subtraction
- o Comparison
- o Assignment
-
- Examples of Pointer Data Types
-
- Related Information
-
- o Address &
- o Indirection *
- o _Seg16 Type Qualifier
- o Declarators
- o volatile and const Qualifiers
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.8. Structures ΓòÉΓòÉΓòÉ
-
- A structure contains an ordered group of data objects. Unlike the elements of
- an array, the data objects within a structure can have varied data types. Each
- data object in a structure is a member or field.
-
- You can use structures to group logically related objects. For example, if you
- want to allocate storage for the components of one address, you can define a
- number of variables for the street name and number, the city, and so on.
-
- If you want to allocate storage for more than one address, however, you can
- group the components of each address by defining a structure data type and
- defining several variables having the structure data type:
-
- 1 struct address {
- 2 int street_no;
- 3 char *street_name;
- 4 char *city;
- 5 char *prov;
- 6 char *postal_code;
- 7 };
- 8 struct address perm_address;
- 9 struct address temp_address;
- 10 struct address *p_perm_address = &perm_address;
-
- Lines 1 through 7 declare the structure tag address. Line 8 defines the
- variable perm_address, and line 9 defines the variable temp_address, both of
- which are instances of the structure address. Both perm_address and
- temp_address contain the members described in lines 2 through 6. Line 10
- defines a pointer p_perm_address which points to a structure of address.
- p_perm_address is initialized to point to perm_address.
-
- You can reference a member of a structure by specifying the structure variable
- name with the . (dot operator) or a pointer with the -> (arrow operator), and
- the member name. For example, both of the following:
-
- perm_address.prov = "Ontario";
- p_perm_address -> prov = "Ontario";
-
- assign a pointer to the string "Ontario" to the pointer prov that is in the
- structure perm_address.
-
- All references to structures must be fully qualified. Therefore, in the
- preceding example, you cannot reference the fourth field by prov alone. You
- must reference this field by perm_address.prov.
-
- You cannot declare a structure with members of incomplete types.
-
- Declaring a Structure Data Type
- A structure type declaration does not allocate storage. It describes the
- members that are part of the structure.
-
- A structure type declaration contains the struct keyword followed by an
- optional identifier (the structure tag) and a brace-enclosed list of members.
-
- Syntax of a Structure
-
- The keyword struct followed by the identifier (tag) names the data type. If
- you do not provide a tag, you must place all variable definitions that refer to
- that data type within the statement that defines the data type.
-
- The list of members provides the data type with a description of the values
- that can be stored in the structure.
-
- Syntax of a Structure Member
-
- A member that does not represent a bit-field can be of any data type and can
- have the volatile or const qualifier. If a : (colon) and a constant expression
- follow the declarator, the member represents a bit-field.
-
- Identifiers used as aggregate or member names can be redefined to represent
- different objects in the same scope without conflicting. You cannot use the
- name of a member more than once in a structure type, but you can use the same
- member name in another structure type that is defined within the same scope.
-
- You cannot declare a structure type that contains itself as a member but you
- can declare a structure type that contains a pointer to itself as a member.
-
- Defining a Variable That Has a Structure Data Type
- A structure variable definition contains a storage class keyword, the struct
- keyword, a structure tag, a declarator, and an optional identifier. The
- structure tag indicates the data type of the structure variable.
-
- You can declare structures having any storage class. Most compilers, however,
- treat structures declared with the register storage class specifier as
- automatic structures.
-
- Initializer
- The initializer contains an = (equal sign) followed by a brace-enclosed
- comma-separated list of values. You do not have to initialize all members of a
- structure.
-
- Examples of Initialized Structures
-
- Note: The initial value of uninitialized structure members depends on the
- storage class associated with the member. See Storage Class Specifiers for
- details on the initialization of different storage classes.
-
- Additional information is provided on:
-
- o Declaring a Structure Type and Structure Variables in the Same Statement
- o Declaring and Using Bit-Fields in structures
- o Declaring a Packed Structure.
-
- Examples of Structures
-
- Related Information
-
- o Structure and Union Member Specification . ->
- o _Packed Qualifier
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.8.1. Declaring a Structure Type and Structure Variables in the Same Statement ΓòÉΓòÉΓòÉ
-
- You can place a type definition and a variable declaration in one statement by
- placing a declarator and an initializer (optional) after the type definition.
- If you want to specify a storage class specifier for the variable, you must
- place the storage class specifier at the beginning of the statement. For
- example:
-
- static struct {
- int street_no;
- char *street_name;
- char *city;
- char *prov;
- char *postal_code;
- } perm_address, temp_address;
-
- The preceding example does not name the structure data type. Thus,
- perm_address and temp_address are the only structure variables that will have
- this data type. If an identifier is placed after struct, additional variable
- definitions of this data type can be made later in the program.
-
- The structure type (or tag) cannot have the volatile qualifier, but a member or
- a structure variable can be defined as having the volatile qualifier.
-
- Related Information
-
- o Structures
- o Structure and Union Member Specification . ->
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.8.2. Declaring and Using Bit-Fields ΓòÉΓòÉΓòÉ
-
- A structure can contain bit-fields which allow you to access individual bits.
- You can use bit-fields for data that requires just a few bits of storage. A
- bit-field declaration contains a type specifier followed by an optional
- declarator, a colon, a constant expression, and a semicolon. The constant
- expression specifies how many bits the field reserves. A bit-field that is
- declared as having a length of 0 (zero) causes the next field to be aligned on
- the next integer boundary. For a _Packed structure, a bit-field of length 0
- (zero) causes the next field to be aligned on the next byte boundary.
- Bit-fields with a length of 0 must be unnamed.
-
- For portability, you should not use bit fields greater than 32 bits in size.
-
- You cannot define an array of bit-fields, or take the address of a bit-field.
- You can declare a bit-field as type int, signed int, or unsigned int.
- Bit-fields of the type int are equivalent to those of type unsigned int.
-
- If a series of bit-fields does not add up to the size of an int, padding can
- take place. The amount of padding is determined by the alignment
- characteristics of the members of the structure. In some instances, bit-fields
- can cross word boundaries.
-
- Example of a Structure with Bit-Fields
-
- All references to structure fields must be fully qualified.
-
- When you assign to a bit-field a value that is out of range for that bit-field,
- the bit pattern is preserved and the appropriate bits are assigned. The
- following expression sets the toaster field of the kitchen structure to 0
- because only the least significant bit is assigned to the toaster field:
-
- kitchen.toaster = 2;
-
- Related Information
-
- o Structures
- o Structure and Union Member Specification . ->
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.8.3. Declaring a Packed Structure ΓòÉΓòÉΓòÉ
-
- Data elements of a structure are stored in memory on an address boundary
- specific for that data type. For example, a double value is stored in memory
- on a doubleword (8-byte) boundary. Gaps may be left in memory between elements
- of a structure to align elements on their natural boundaries. You can reduce
- the padding of bytes within a structure by using the _Packed qualifier on the
- structure declaration.
-
- Related Information
-
- o Structures
- o Structure and Union Member Specification . ->
- o _Packed Qualifier
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.9. Unions ΓòÉΓòÉΓòÉ
-
- A union is an object that can hold any one of a set of named members. The
- members of the named set can be of any data type. Members are overlaid in
- storage.
-
- Declaring a Union
- The storage allocated for a union is the storage required for the largest
- member of the union (plus any padding which is required so that the union will
- end at a natural boundary of its strictest member).
-
- A union type declaration contains the union keyword followed by an identifier
- (optional) and a brace-enclosed list of members.
-
- Syntax of a Union
-
- The identifier is a tag given to the union specified by the member list. If
- you specify a tag, any subsequent declaration of the union (in the same scope)
- can be made by declaring the tag and omitting the member list. If you do not
- specify a tag, you must place all variable definitions that refer to that union
- within the statement that defines the data type.
-
- The list of members provides the data type with a description of the objects
- that can be stored in the union.
-
- Syntax of a Union Member
-
- You can reference one of the possible members of a union as you reference a
- member of a structure. For example:
-
- union {
- char birthday[9];
- int sex:1; /* 0 = male; 1 = female */
- float weight;
- } people;
-
- people.birthday[0] = '\n';
-
- assigns '\n' to the first element in the character array birthday, a member of
- the union people. At any given time, a union can represent only one of its
- members. In the preceding example, the union people will contain either sex,
- birthday, or weight but never more than one of these. For example, the
- following is not allowed:
-
- 1 people.birthday = "25/10/67";
- 2 people.sex = 1;
- 3 printf("%d\n", people.weight);
-
- Both lines 2 and 3 are not allowed since in line 1, people.birthday is assigned
- a value.
-
- Defining a Variable that has Union Data Type
- A union variable definition contains a storage class keyword, the union
- keyword, a union tag, and a declarator. The union tag indicates the data type
- of the union variable.
-
- Type Specifier
- The type specifier contains the keyword union followed by the name of the union
- type. You must declare the union data type before you can define a union
- having that type.
-
- You can define a union data type and a union of that type in the same statement
- by placing the variable declarator after the data type definition.
-
- Declarator
- The declarator is an identifier, possibly with the volatile or const qualifier.
-
- Initializer
- You can only initialize the first member of a union.
-
- Example of Initializing a Union
-
- Defining a Union Type and a Union Variable in the Same Statement
- You can place a type definition and a variable definition in one statement by
- placing a declarator after the type definition. If you want to specify a
- storage class specifier for the variable, you must place the storage class
- specifier at the beginning of the statement.
-
- Defining a Packed Union
- You can use _Packed to qualify a union. However, the memory layout of the
- union members is not affected. Each member starts at offset zero. The _Packed
- qualifier does affect the total alignment restriction of the whole union.
-
-
- ΓòÉΓòÉΓòÉ 2.6.9.1. Anonymous Unions ΓòÉΓòÉΓòÉ
-
- The C/C++ for OS/2 compiler allows unions to be declared without declarators if
- they are members of another structure or union. Unions without declarators are
- called anonymous unions.
-
- Members of an anonymous union can be accessed as if they were declared directly
- in the containing structure or union. For example, given the following
- structure:
-
- struct s {
- int a;
- union {
- int b;
- float c;
- }; /* no declarator */
- } kurt;
- you can make the following statements:
-
- kurt.a = 5;
- kurt.b = 36;
-
- You can also declare an anonymous union:
-
- 1. By creating a typedef and using the typedef name without a declarator:
-
- typedef union {
- int a;
- int b;
- } UNION_T;
-
- struct s1 {
- UNION_T;
- int c;
- } dave;
-
- 2. By using an existing union tag without a declarator:
-
- union u1 {
- int a;
- int b;
- };
-
- struct s1 {
- union u1;
- int c;
- } dave;
-
- In both of the preceding examples, the members can be accessed as dave.a,
- dave.b, and dave.c.
-
- An anonymous union must be a member of, or nested within another anonymous
- union that is a member of, a named structure or union. If a union is declared
- at file scope without a declarator, its members are not available to the
- surrounding scope. For example, the following union only declares the union
- tag tom:
-
- union tom {
- int b;
- float c;
- };
- The variables b and c from this union cannot be used at file scope, and the
- following statements will generate errors:
-
- b = 5;
- c = 2.5;
-
- Portability Information Anonymous unions are treated differently in the C++
- language. Given these declarations:
-
- union don {
- int a;
- int b;
- };
-
- struct pete {
- union don;
- };
- in C/C++ for OS/2 C, union don; declares an anonymous
- union as a member of pete. In C/C++ for OS/2 C++, the
- statement is treated as a forward or incomplete
- declaration of a nested union, not as an anonymous
- union.
-
- Examples of Unions
-
- Related Information
-
- o Structure and Union Member Specification . ->
- o _Packed Qualifier
- o Declarators
- o Initializers
-
-
- ΓòÉΓòÉΓòÉ 2.6.10. typedef ΓòÉΓòÉΓòÉ
-
- C language typedef declarations allow you to define your own identifiers that
- can be used in place of C type specifiers such as int, float, and double. The
- data types you define using typedef are not new data types. The identifiers
- you define are synonyms for the primary data types used by the C language or
- data types derived by combining the primary data types.
-
- Syntax of a typedef Declaration
-
- A typedef declaration does not reserve storage.
-
- When an object is defined using a typedef identifier, the properties of the
- defined object are exactly the same as if the object were defined by explicitly
- listing the data type associated with the identifier.
-
- Examples of typedef
-
- Related Information
-
- o Characters
- o Floating-Point Variables
- o Integers
- o void Type
- o Arrays
- o Enumerations
- o Pointers
- o Structures
- o Unions
-
-
- ΓòÉΓòÉΓòÉ 2.7. Functions ΓòÉΓòÉΓòÉ
-
- This section describes the structure and usage of functions.
-
- o main
- o Function Definition
- o Function Declarations
- o Calling Functions and Passing Arguments
-
-
- ΓòÉΓòÉΓòÉ 2.7.1. main ΓòÉΓòÉΓòÉ
-
- When you begin the execution of a program, the system automatically calls the
- function main. Every program must have one and only one function named main
- with the name main written in lowercase letters.
-
- Syntax of a main Function
-
- The function main can declare either none or two parameters. The C/C++ for OS/2
- compiler also supports an optional third parameter. Although any name can be
- given to these parameters, they are usually referred to as argc and argv. The
- third parameter is referred to as envp. The first parameter, argc (argument
- count), has type int and indicates how many arguments were entered on the
- command line. The second parameter, argv (argument vector), has type array of
- pointers to char array objects. char objects are null-terminated strings.
-
- The third parameter, envp, is a pointer to an array of char pointers to the
- environment strings. A NULL pointer terminates the array. You can use the
- pointer to the array to access the value of the environment settings. The envp
- parameter is optional, but to declare it, you must also declare the first two
- parameters.
-
- Note: The envp parameter is not available when you are using the subsystem
- libraries.
-
- The value of argc indicates the number of pointers in the array argv. If a
- program name is available, the first element in argv points to a character
- array that contains the program name or the invocation name of the program that
- is being executed. If the name cannot be determined, the first element in argv
- points to a null character. This name is counted as one of the arguments to
- the function main. For example, if only the program name is entered on the
- command line, argc has a value of 1 and argv[0] points to the program name.
-
- Regardless of the number of arguments entered on the command line, argv[argc]
- always contains NULL.
-
- Example of Arguments to main
-
- Note: Be careful when entering mixed case characters on a command line because
- some environments are not case sensitive. Also, the exact format of the string
- pointed to by argv[0] is system dependent.
-
- Related Information
-
- o envp Parameter to main
- o Function Definition
- o Calling Functions and Passing Arguments
- o Types
- o Identifiers
- o Block
-
-
- ΓòÉΓòÉΓòÉ 2.7.2. envp Parameter to main ΓòÉΓòÉΓòÉ
-
- The C/C++ for OS/2 compiler accepts an optional third parameter to the main
- function:
-
- int main(int argc, char **argv, char **envp)
-
- The third argument is a pointer to an array of char pointers to the environment
- strings. A NULL pointer terminates the array. You can use the pointer to the
- array to access the value of the environment settings.
-
- To use the third argument, you must declare the first and second arguments,
- even if you do not use them.
-
- Note: The envp parameter is not available when you are using the subsystem
- libraries.
-
- Related Information
-
- o main
-
-
- ΓòÉΓòÉΓòÉ 2.7.3. Function Definition ΓòÉΓòÉΓòÉ
-
- A function definition specifies the name, formal parameters, and body of a
- function. You can also specify the function's return type and storage class.
-
- Syntax of a Function Definition
-
- There are two ways to define a function: prototype and non-prototype. It is
- recommended that you use the prototype method because of the parameter type
- checking that can be performed.
-
- A function definition (either prototype or non-prototype) contains the
- following:
-
- o The optional storage class specifier extern or static, which determines the
- scope of the function. If a storage class specifier is not given, the
- function has external linkage.
-
- o An optional linkage keyword, which determines the calling convention used to
- call the function. The keywords are a C/C++ for OS/2 extension to the SAA C
- definition. The default calling convention is optlink.
-
- o An optional type specifier, which determines the type of value that the
- function returns. If a type specifier is not given, the function has type
- int.
-
- o A function declarator, which provides the function with a name, can further
- describe the type of the value that the function returns, and can list any
- parameters (and their types) that the function expects. The parameters which
- the function is expecting are enclosed in parenthesis.
-
- o A block statement, which contains data definitions and code.
-
- In addition, the non-prototype function definition may also have parameter
- declarations, which describe the types of parameters that the function
- receives. In non-prototype functions, parameters that are not declared have
- type int.
-
- A function can be called by itself or by other functions. Unless a function
- definition has the storage class specifier static, the function also can be
- called by functions that appear in other files. If the function has a storage
- class specifier of static, it can only be directly invoked from within the same
- source file. If a function has the storage class specifier static or a return
- type other than int, the function definition or a declaration for the function
- must appear before, and in the same file as, a call to the function. If a
- function definition has external linkage and a return type of int, calls to the
- function can be made before it is visible because an implicit declaration of
- extern int func(); is assumed.
-
- All declarations for a given function must be compatible; that is, the return
- type is the same and the parameters have the same type.
-
- The default type for the return value and parameters of a function is int and
- the default storage class specifier is extern. If the function does not return
- a value or it is not passed any parameters, use the keyword void as the type
- specifier.
-
- You can include ellipses (...) at the end of your parameter list to indicate
- that a variable number of arguments will be passed to the function. Note that
- parameter promotions will be performed and no type checking is done.
-
- You cannot declare a function as a struct or union member.
-
- A function cannot have a return type of function, array or any type having the
- volatile or const qualifier. However, it can return a pointer to an object with
- a volatile or const type.
-
- You cannot define an array of functions. You can, however, define an array of
- pointers to functions.
-
- Example of a Function Definition
-
- Related Information
-
- o Storage Class Specifiers
- o Linkage Keywords
- o Types
- o Function Declarator
- o Block
- o volatile and const Qualifiers
- o Function Declarations
-
-
- ΓòÉΓòÉΓòÉ 2.7.4. Linkage Keywords ΓòÉΓòÉΓòÉ
-
- Linkage keywords are an alternative to the #pragma linkage directive for
- setting linkage conventions for function calls. Each linkage convention has a
- corresponding keyword that you can use with a function name to set the
- convention for that function. The keywords are:
-
- _Optlink C/C++ for OS/2 default linkage.
- _System OS/2 system linkage.
- _Pascal 32-bit pascal linkage
- _Far32 _Pascal 32-bit far pascal linkage
- _Far16 _Cdecl 16-bit cdecl linkage
- _Far16 _Pascal 16-bit pascal linkage
- _Far16 _Fastcall 16-bit fastcall linkage
-
- 1. You must specify the _Far16 keyword to use a 16-bit calling convention. If
- you specify only _Far16, the _Far16 _Cdecl linkage is used.
-
- 2. Do not confuse the 32-bit pascal linkage with the 16-bit far16 pascal
- linkage. If you specify only the _Pascal keyword, the 32-bit convention is
- used.
-
- You can use the linkage keywords at any language level. Using a keyword is
- generally quicker and easier than using a #pragma linkage directive.
-
- To set the calling convention for a function, place the linkage keyword
- immediately before the function name. For example,
-
- int _System jim(int);
- char (* _Far16 _Cdecl donna)(int);
-
- These two statements are equivalent to using the following #pragma linkage
- directives and declarations:
-
- #pragma linkage(jim, system)
- int jim(int);
-
- #pragma linkage(donnatype, far16 cdecl)
- typedef char donnatype(int);
- donnatype donna;
-
- Like the #pragma linkage directive, the linkage keywords take precedence over
- the compiler options that set calling conventions (/Mp and /Ms). If you specify
- conflicting linkage types for a function using both a #pragma linkage directive
- and a keyword, an error message is generated and your program will not compile.
- For more information on the different calling conventions and how they work,
- see the IBM C/C++ for OS/2 Programming Guide.
-
- Related Information
-
- o inf.#pragma linkage
- o Code Generation Options
-
-
- ΓòÉΓòÉΓòÉ 2.7.5. Function Declarator ΓòÉΓòÉΓòÉ
-
- The function declarator names the function and lists the function parameters. A
- function declarator contains an identifier that names the function and a list
- of the function parameters. There are two types of function declarators:
- prototype and non-prototype. It is recommended you always use prototype
- function declarators because of the parameter checking that can be performed.
-
- Syntax of a Prototype Function Declarator
-
- Each parameter should be declared within the function declarator for prototype
- function declarations. Any calls to the function must pass the same number of
- arguments as there are parameters in the declaration.
-
- To indicate that a function does not receive any values, use the keyword void
- in place of the parameter. For example:
-
- int stop(void)
- {
- }
-
- Examples of Prototype Function Declarators
-
- Syntax of a Non-prototype Function Declarator
-
- Each parameter should be declared in a parameter declaration list following the
- declarator. If a parameter is not declared, it has type int.
-
- char and short parameters are widened to int and float to double. No type
- checking between the argument type and the parameter type is done for
- non-prototyped functions. As well, there are no checks to ensure that the
- number of arguments matches the number of parameters.
-
- Each value that a function receives should be declared in a parameter
- declaration list for non-prototype function definitions which follows the
- declarator.
-
- A parameter declaration determines the storage class specifier and the data
- type of the value.
-
- Syntax of a Parameter Declaration
-
- The only storage class specifier allowed is the register storage class
- specifier. Any type specifier for a parameter is allowed. If you do not specify
- the register storage class specifier, the parameter will have the auto storage
- class specifier. If you omit the type specifier and you are not using the
- prototype form to define the function, the parameter will have type int.
-
- int func(i,j)
- {
- /* i and j have type int */
- }
-
- You cannot declare a parameter in the parameter declaration list if it is not
- listed within the declarator.
-
- Related Information
-
- o Storage Class Specifiers
- o Types
- o Function Definition
- o Function Declarations
- o void Type
-
-
- ΓòÉΓòÉΓòÉ 2.7.6. Function Body ΓòÉΓòÉΓòÉ
-
- The body of a function is a block statement. (For more information on block
- statements, see Block.) The following function has an empty body:
-
- void stub1(void)
- {
- }
-
- The following function body contains a definition for the integer variable
- big_num, an if-else control statement and a call to the function printf:
-
- void largest(int num1, int num2)
- {
- int big_num;
-
- if (num1 >= num2)
- big_num = num1;
- else
- big_num = num2;
-
- printf("big_num = %d\n", big_num);
- }
-
- Related Information
-
- o Block
- o Function Definition
- o Function Declarations
-
-
- ΓòÉΓòÉΓòÉ 2.8. Function Declarations ΓòÉΓòÉΓòÉ
-
- A function declaration establishes the name of the function and the parameters
- of the function. A function is declared implicitly by its appearance in an
- expression if it has not been defined or declared previously; the implicit
- declaration is equivalent to a declaration of extern int func_name().
-
- If the called function returns a value that has a type other than int, you must
- declare the function before the function call. Even if a called function
- returns a type int, explicitly declaring the function prior to its call is good
- programming practice.
-
- Some declarations do not have parameter lists; the declarations simply specify
- the types of parameters and the return values, such as in the following
- example:
-
- int func(int,long);
-
- Examples of Function Declaration
-
- Related Information
-
- o Function Declarator
- o Function Definition
- o extern Storage Class Specifier.
-
-
- ΓòÉΓòÉΓòÉ 2.9. Calling Functions and Passing Arguments ΓòÉΓòÉΓòÉ
-
- A function call specifies a function name and a list of arguments. The calling
- function passes the value of each argument to the specified function. The
- argument list is surrounded by parentheses, and each argument is separated by a
- comma. The argument list can be empty.
-
- The arguments to a function are evaluated before the function is called. When
- an argument is passed in a function call, the function receives a copy of the
- argument value. If the value of the argument is an address, the called
- function can use indirection to change the contents pointed to by the address.
- If a function or array is passed as an argument, the argument is converted to a
- pointer which points to the function or array.
-
- Arguments passed to parameters in prototype declarations will be converted to
- the declared parameter type. For non-prototype function declarations, char and
- short parameters are promoted to int and float to double.
-
- You can pass a packed structure argument to a function expecting a nonpacked
- structure of the same type and vice versa. (The same applies to packed and
- nonpacked unions.)
-
- Note: If you do not use a function prototype and you send a packed structure
- when a nonpacked structure is expected, a run-time error may occur.
-
- The order in which arguments are evaluated and passed to the function is
- implementation-defined. For example, the following sequence of statements
- calls the function tester:
-
- int x;
- x = 1;
- tester(x++, x);
-
- The call to tester in the preceding example may produce different results on
- different compilers. Depending on the implementation, x++ may be evaluated
- first or x may be evaluated first. To avoid ambiguity, if you want x++ to be
- evaluated first, you can replace the preceding sequence of statements with the
- following:
-
- int x, y;
- x = 1;
- y = x++;
- tester(y, x);
-
- Examples of Calling Functions and Passing Values
-
- Related Information
-
- o Function Declarator
- o Function Declarations
- o Function Definition
- o Types
-
-
- ΓòÉΓòÉΓòÉ 3. Expressions and Operators ΓòÉΓòÉΓòÉ
-
- This section describes C language expressions. Expressions are grouped
- according to the operators they contain and the contexts in which the
- expressions can be used:
-
- o Primary Expression
- o Unary Expression
- o Binary Expression
- o Conditional Expression ? :
- o Assignment Expression
- o Comma Expression ,
- o Lvalue
- o Constant Expression
-
- Operator Precedence shows the order of evaluation of the expressions and
- operators.
-
- Most expressions can contain several different, but related, types of operands.
- The following type classes describe related types of operands:
-
- Integral Character objects and constants, objects having an enumeration
- type, and objects having the type short, int, long, unsigned short,
- unsigned int, or unsigned long.
-
- Arithmetic Integral objects and objects having the type float, double, and
- long double.
-
- Scalar Arithmetic objects, and pointers to objects of any type.
-
- Aggregate Arrays, structures, and unions.
-
- Many C language operators cause conversions from one data type to another.
- Conversions are discussed in Conversions.
-
-
- ΓòÉΓòÉΓòÉ 3.1. Operator Precedence ΓòÉΓòÉΓòÉ
-
- Two operator characteristics determine how operands group with operators:
- precedence and associativity. Precedence provides a priority system for
- grouping different types of operators with their operands. Associativity
- provides a left-to-right or right-to-left order for grouping operands to
- operators that have the same precedence. For example, in the following
- statements, the value of 5 is assigned to both a and b because of the
- right-to-left associativity of the = operator. The value of c is assigned to b
- first and then the value of b is assigned to a.
-
- b = 9;
- c = 5;
- a = b = c;
-
- Because the order of expression evaluation is not specified, you can explicitly
- force the grouping of operands with operators by using parentheses.
-
- In the expression a + b * c / d, the * and / operations are performed before +
- because of precedence. b is multiplied by c before it is divided by d because
- of associativity.
-
- The following table lists the C language operators in order of precedence and
- shows the direction of associativity for each operator. The primary operators
- have the highest precedence. The comma operator has the lowest precedence.
- Operators that appear in the same group have the same precedence.
-
- Table of Operator Precedence and Associativity
-
- The order of evaluation for function call arguments or for the operands of
- binary operators is not specified. Thus, avoid writing such ambiguous
- expressions as:
-
- z = (x * ++y) / func1(y);
- func2(++i, x[i]);
-
- In the example above, the order of evaluation of ++y and func1(y) is not
- defined. If y had the value of 1 before the first statement, it is not known
- whether or not the value of 1 or 2 is passed to func1(). In the second
- statement, if i had the value of 1, it is not known whether or not the first or
- second array element of x[] is passed as the second argument to func2(). Do not
- write code that depends on a particular order of evaluation of operators with
- the same precedence.
-
- The order of grouping operands with operators in an expression containing more
- than one instance of an operator with both associative and commutative
- properties is not specified. The operators that have the same associative and
- commutative properties are: *, +, &, |, and ^ (or ╨║). The grouping of
- operands can be forced by grouping the expression in parentheses.
-
- Examples of Expressions
-
- Related Information
-
- o Parenthesized Expression ( )
- o Expressions and Operators
-
-
- ΓòÉΓòÉΓòÉ 3.2. Lvalue ΓòÉΓòÉΓòÉ
-
- An lvalue is an expression that represents an object. A modifiable lvalue is an
- expression representing an object that can be changed. A modifiable lvalue is
- the left operand in an assignment expression. However, arrays and const objects
- are not modifiable lvalues.
-
- Usage
- All assignment operators evaluate their right operand and assign that value to
- their left operand. The left operand must evaluate to a reference to an
- object.
-
- The assignment operators are not the only operators that require an operand to
- be an lvalue. The address operator requires an lvalue as an operand while the
- increment and the decrement operators require a modifiable lvalue as an
- operand.
-
- Examples of Lvalues
-
- Related Information
-
- o Assignment Expression
- o Address &
- o Structure and Union Member Specification . ->
-
-
- ΓòÉΓòÉΓòÉ 3.3. Constant Expression ΓòÉΓòÉΓòÉ
-
- A constant expression is an expression with a value that is determined during
- compilation and cannot be changed during execution. It can be evaluated only.
- Constant expressions can be composed of integer constants, character constants,
- floating-point constants, and enumeration constants.
-
- Usage
- The C language requires constant expressions in the following places:
-
- o In the subscript declarator, as the description of an array bound
- o After the keyword case in a switch statement
- o In an enumerator, as the numeric value of an enum constant
- o In a bit-field width specifier
- o In the preprocessor if statement
- o In the initializer of a file scope data definition.
-
- In all the cases above except for an initializer of a file scope data
- definition, the constant expression can contain integer, character, and
- enumeration constants, casts to integral types, and sizeof expressions.
-
- In a file scope data definition, the initializer must evaluate to a constant or
- to the address of a static storage (extern or static) object (plus or minus an
- integer constant) that is defined or declared earlier in the file. Thus, the
- constant expression in the initializer can contain integer, character,
- enumeration, and float constants, casts to any type, sizeof expressions, and
- addresses (possibly modified by constants) of static objects.
-
- Examples of Constant Expressions
-
- Related Information
-
- o Arrays
- o Initializers
- o File Scope Data Declarations
- o switch
- o Enumerations
- o Structures
- o Conditional Compilation
-
-
- ΓòÉΓòÉΓòÉ 3.4. Primary Expression ΓòÉΓòÉΓòÉ
-
- A primary expression can be:
-
- o Identifiers
- o Parenthesized Expression ( )
- o Constant Expression
- o Function Call ( )
- o Array Subscript [ ]
- o Structure and Union Member Specification . ->
-
- All primary operators have the same precedence and have left-to-right
- associativity.
-
- Related Information
-
- o Expressions and Operators
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.4.1. Parenthesized Expression ( ) ΓòÉΓòÉΓòÉ
-
- You can use parentheses to explicitly force the order of expression evaluation.
- The following expression does not contain any parentheses used for grouping
- operands and operators. The parentheses surrounding weight, zipcode are used
- to form a function call. Notice how the the operands and operators are grouped
- in this expression according to the rules for operator precedence and
- associativity:
-
-
- -discount * item + handling(weight, zipcode) < .10 * item
- Γöé Γöé Γöé Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
- ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The following expression is similar to the previous expression. This
- expression, however, contains parentheses that change how the operands and
- operators group:
-
-
- (-discount * (item + handling(weight, zipcode) ) ) < (.10 * item)
- Γöé Γöé Γöé Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- In an expression that contains both associative and commutative operators, you
- can use parentheses to specify the grouping of operands with operators. The
- parentheses in the following expression guarantee the order of grouping
- operands with the operators:
-
- x = f + (g + h);
-
- Related Information
-
- o Operator Precedence
- o Function Call ( )
- o Expressions and Operators
-
-
- ΓòÉΓòÉΓòÉ 3.4.2. Function Call ( ) ΓòÉΓòÉΓòÉ
-
- A function call is a primary expression containing a parenthesized argument
- list. The argument list can contain any number of expressions separated by
- commas. For example:
-
- stub()
- overdue(account, date, amount)
- notify(name, date + 5)
- report(error, time, date, ++num)
-
- The arguments are evaluated, and each parameter is assigned the value of the
- corresponding argument. Assigning a value to a parameter within the function
- body changes the value of the parameter within the function, but has no effect
- on the argument.
-
- When you define a function as returning a certain type, for example type int,
- the result of the function call has that type.
-
- If you want a function to change the value of a variable, pass a pointer to the
- variable you want changed. When a pointer is passed as a parameter, the pointer
- is copied; the object pointed to is not copied. (See Pointers.)
-
- All arrays and functions are converted to pointers when passed as function
- arguments. Arguments passed to non-prototyped functions undergo conversions:
- type short or char parameters will be converted to int and float parameters to
- double. Use a cast expression for other conversions. (See Cast.)
-
- If the function has not been previously declared, an implicit declaration of
- extern int func(); is assumed.
-
- The compiler compares the data types provided by the calling function with the
- data types that the called function expects and the compiler may also perform
- type conversions if the declaration of the function is:
-
- o in function prototype format
- o visible at the point where the function is called.
-
- The order in which parameters are evaluated is not specified. Avoid such calls
- as:
-
- method(samp1, bat.proc--, bat.proc);
-
- In the preceding example, bat.proc-- may be evaluated last, causing the last
- two arguments to be passed with the same value.
-
- A function can call itself.
-
- Example of a Function Call
-
- Related Information
-
- o Functions
- o Pointers
- o Cast
- o Primary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.4.3. Array Subscript [ ] ΓòÉΓòÉΓòÉ
-
- A primary expression followed by an expression in [ ] (square brackets)
- specifies an element of an array. The expression within the square brackets is
- referred to as a subscript.
-
- The primary expression must have a pointer type, and the subscript must have
- integral type. The result of an array subscript is an lvalue.
-
- The first element of each array has the subscript 0 (zero). Thus, the
- expression contract[35] refers to the 36th element in the array contract.
-
- In a multidimensional array, you can reference each element (in the order of
- their increasing storage locations) by incrementing the right-most subscript
- most frequently. For example, the following statement gives the value 100 to
- each element in the array code[4][3][6]:
-
- for (first = 0; first <= 3; ++first)
- for (second = 0; second <= 2; ++second)
- for (third = 0; third <= 5; ++third)
- code[first][second][third] = 100;
-
- Related Information
-
- o Arrays
- o Lvalue
- o Primary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.4.4. Structure and Union Member Specification . -> ΓòÉΓòÉΓòÉ
-
- Two primary operators enable you to specify structure and union members:
- . (dot) and -> (arrow).
-
- The dot (a period) and arrow (formed by a minus and a greater than symbol)
- operators are always preceded by a primary expression and followed by an
- identifier.
-
- When you use the dot operator, the primary expression must be an instance of a
- type of structure or union, and the identifier must name a member of that
- structure or union. The result is the value associated with the named
- structure or union member. The result is an lvalue if the first expression is
- an lvalue.
-
- Some sample dot expressions follow:
-
- roster[num].name
- roster[num].name[1]
-
- When you use the arrow operator, the primary expression must be a pointer to a
- structure or a union, and the identifier must name a member of the structure or
- union. The result is the value of the named structure or union member to which
- the pointer expression refers. In the following example, name is an int:
-
- roster -> name
-
- Related Information
-
- o Unions
- o Structures
- o Primary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.5. Unary Expression ΓòÉΓòÉΓòÉ
-
- A unary expression contains one operand and a unary operator. All unary
- operators have the same precedence and have right-to-left associativity.
-
- o Increment ++
- o Decrement - -
- o Unary Plus +
- o Unary Minus -
- o Logical Negation !
- o Bitwise Negation ~
- o Address &
- o Indirection *
- o Cast
- o Size of an Object (sizeof)
-
- Related Information
-
- o Binary Expression
- o Expressions and Operators
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.5.1. Increment ++ ΓòÉΓòÉΓòÉ
-
- The ++ (increment) operator adds 1 (one) to the value of the scalar operand, or
- if the operand is a pointer, increments the operand by the size of the object
- to which it points. The operand receives the result of the increment
- operation. Thus, the operand must be a modifiable lvalue.
-
- You can place the ++ before or after the operand. If the ++ appears before the
- operand, the operand is incremented. Then the incremented value is used in the
- expression. If you place the ++ after the operand, the current value of the
- operand is used in the expression. Then the operand is incremented. For
- example:
-
- play = ++play1 + play2++;
-
- is equivalent to the following three expressions:
-
- play1 = play1 + 1;
- play = play1 + play2;
- play2 = play2 + 1;
-
- The type of the increment expression is the same type as that of the operand.
-
- Related Information
-
- o Decrement - -
- o Addition +
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.2. Decrement - - ΓòÉΓòÉΓòÉ
-
- The -- (decrement) operator subtracts 1 (one) from the value of the scalar
- operand, or if the operand is a pointer, decreases the operand by the size of
- the object to which it points. The operand receives the result of the
- decrement operation. Thus, the operand must be a modifiable lvalue.
-
- You can place the -- before or after the operand. If the -- appears before the
- operand, the operand is decremented, and then the decremented value is used in
- the expression. If the -- appears after the operand, the current value of the
- operand is used in the expression and then the operand is decremented.
-
- For example:
-
- play = --play1 + play2--;
-
- is equivalent to the following three expressions:
-
- play1 = play1 - 1;
- play = play1 + play2;
- play2 = play2 - 1;
-
- The type of the decrement expression is the same type as that of the operand.
-
- Related Information
-
- o Increment ++
- o Subtraction -
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.3. Unary Plus + ΓòÉΓòÉΓòÉ
-
- The + (unary plus) operator maintains the value of the operand. The operand
- can have any arithmetic type. The result is not an lvalue.
-
- The result of the unary plus expression has the same type as the operand after
- any integral promotions (for example, char to int).
-
- Note: Any plus sign preceding a constant is not part of the constant.
-
- Related Information
-
- o Unary Minus -
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.4. Unary Minus - ΓòÉΓòÉΓòÉ
-
- The - (unary minus) operator negates the value of the operand. The operand can
- have any arithmetic type. The result is not an lvalue.
-
- For example, if quality has the value 100, then -quality has the value -100.
-
- The result of the unary minus expression has the same type as the operand after
- any integral promotions (for example, char to int).
-
- Note: Any minus sign preceding a constant is not part of the constant.
-
- Related Information
-
- o Unary Plus +
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.5. Logical Negation ! ΓòÉΓòÉΓòÉ
-
- The ! (logical negation) operator determines whether the operand evaluates to 0
- (false) or nonzero (true). The expression yields the value 1 (true) if the
- operand evaluates to 0 and yields the value 0 (false) if the operand evaluates
- to a non-zero value. The operand must have a scalar data type, but the result
- of the operation has always type int and is not an lvalue.
-
- The following two expressions are equivalent:
-
- !right;
- right == 0;
-
- Related Information
-
- o Equality == !=
- o Relational < > <= >=
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.6. Bitwise Negation ~ ΓòÉΓòÉΓòÉ
-
- The ~ (bitwise negation) operator yields the bitwise complement of the operand.
- In the binary representation of the result, every bit has the opposite value of
- the same bit in the binary representation of the operand. The operand must
- have an integral type. The result has the same type as the operand but is not
- an lvalue.
-
- Suppose x represents the decimal value 5. The 16-bit binary representation of
- x is:
-
- 0000000000000101
-
- The expression ~x yields the following result (represented here as a 16-bit
- binary number):
-
- 1111111111111010
- Note that the ~ character can be represented by the trigraph ??-.
-
- The 16-bit binary representation of ~0 is:
-
- 1111111111111111
-
- Related Information
-
- o Bitwise Left and Right Shift << >>
- o Bitwise AND &
- o Bitwise Exclusive OR ^
- o Bitwise Inclusive OR |
- o Unary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.5.7. Address & ΓòÉΓòÉΓòÉ
-
- The & (address) operator yields a pointer to its operand. The operand must be
- an lvalue or function designator. It cannot be a bit-field or have the storage
- class specifier register. The result is a pointer to an object or function
- having the type of the operand. Thus, if the operand has type int, the result
- is a pointer to an object having type int. The result is not an lvalue.
-
- If p_to_y is defined as a pointer to an int and y as an int, the following
- expression assigns the address of the variable y to the pointer p_to_y:
-
- p_to_y = &y;
-
- Related Information
-
- o Pointers
- o Lvalue
- o register Storage Class Specifier
- o Unary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.5.8. Indirection * ΓòÉΓòÉΓòÉ
-
- The * (indirection) operator determines the value referred to by the
- pointer-type operand. The operand cannot be a pointer to void. The operation
- yields an lvalue, or a function designator if the operand points to a function.
- Arrays and functions are converted to pointers.
-
- The type of the operand determines the type of the result. Thus, if the
- operand is a pointer to an int, the result has type int.
-
- Do not apply the indirection operator to any pointer that contains an invalid
- address such as NULL. The result of applying an indirection operator to such a
- pointer is not defined.
-
- If p_to_y is defined as a pointer to an int and y as an int, the expressions:
-
- p_to_y = &y;
- *p_to_y = 3;
-
- cause the variable y to receive the value 3.
-
- Related Information
-
- o Pointers
- o Lvalue
- o Functions
- o Unary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.5.9. Cast ΓòÉΓòÉΓòÉ
-
- A cast operator converts the type of the operand to a specified data type and
- performs the necessary conversions to the operand for the type.
-
- The cast operator is a parenthesized type specifier. This type and the operand
- must be scalar; the type may also be void. Conversions describes how the C
- language performs conversions. The result has the type of the specified data
- type but is not an lvalue.
-
- The following expression contains a cast expression to convert an operand of
- type int to a value of type double:
-
- int x;
- printf("x=%f\n", (double)x);
-
- The function printf receives the value of x as a double. The variable x
- remains unchanged by the cast.
-
- Related Information
-
- o Conversions
- o Types
- o Unary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.5.10. Size of an Object (sizeof) ΓòÉΓòÉΓòÉ
-
- The sizeof operator yields the size in bytes of the operand. The sizeof
- operation cannot be performed on a bit-field, a function, or an incomplete type
- such as void. The operand may be the parenthesized name of a type.
-
- The compiler must be able to evaluate the size at compile time. The expression
- is not evaluated; there are no side effects. For example, the value of b is 5
- from initialization to program termination:
-
- #include <stdio.h>
-
- int main(void){
- int b = 5;
- sizeof(b++);
- }
-
- The size of a char object is the size of a byte. Given that the variable x has
- type char, the expression sizeof(x) always evaluates to 1.
-
- The result of a sizeof operation has type size_t. size_t is an unsigned
- integral type defined in the <stddef.h> header.
-
- The compiler determines the size of an object on the basis of the object's
- definition. The sizeof operator does not perform any conversions. However, if
- the operand contains operators that perform conversions, the compiler takes
- these conversions into consideration. The following expression causes the
- usual arithmetic conversions to be performed. The result of the expression
- x +1 has type int (if x has type char, short, or int or any enumeration type)
- and is equivalent to sizeof(int):
-
- sizeof (x + 1)
-
- When you perform the sizeof operation on an array, the result is the total
- number of bytes in the array. The compiler does not convert the array to a
- pointer before evaluating the expression.
-
- You can use a sizeof expression wherever a constant or unsigned constant is
- required. One of the most common uses for the sizeof operator is to determine
- the size of objects that are being communicated to or from storage allocation,
- input, and output functions.
-
- For portability of code, you should use the sizeof operator to determine the
- size that a data type represents. In this instance, the name of the data type
- must be placed in parentheses after the sizeof operator. For example:
-
- sizeof(int)
-
- Related Information
-
- o Constant Expression
- o Conversions
- o Types
- o -- Reference stddfh not found --
- o Unary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.6. Binary Expression ΓòÉΓòÉΓòÉ
-
- A binary expression contains two operands separated by one operator.
-
- Not all binary operators have the same precedence. The table in the section
- Operator Precedence shows the order of precedence among operators. All binary
- operators have left-to-right associativity.
-
- The order in which the operands of most binary operators are evaluated is not
- specified. Therefore, to ensure correct results, avoid creating binary
- expressions that depend on the order in which the compiler evaluates the
- operands.
-
- o Multiplication *
- o Division /
- o Remainder %
- o Addition +
- o Subtraction -
- o Bitwise Left and Right Shift << >>
- o Relational < > <= >=
- o Equality == !=
- o Bitwise AND &
- o Bitwise Exclusive OR ^
- o Bitwise Inclusive OR |
- o Logical AND &&
- o Logical OR ||
-
- Related Information
-
- o Unary Expression
- o Expressions and Operators
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.6.1. Multiplication * ΓòÉΓòÉΓòÉ
-
- The * (multiplication) operator yields the product of its operands. The
- operands must have an arithmetic type. The result is not an lvalue.
-
- Because the multiplication operator has both associative and commutative
- properties, the compiler may rearrange the operands in an expression that
- contains more than one multiplication operator. For example, the expression
-
- sites * number * cost
-
- can be interpreted in any of the following ways:
-
- (sites * number) * cost
- sites * (number * cost)
- (cost * sites) * number
-
- Related Information
-
- o Division /
- o Remainder %
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.2. Division / ΓòÉΓòÉΓòÉ
-
- The / (division) operator yields the quotient of its operands. The operands
- must have an arithmetic type. The result is not an lvalue.
-
- If both operands are positive integers and the operation produces a remainder,
- the remainder is ignored. Thus, the expression 7 / 4 yields the value 1 (rather
- than 1.75 or 2).
-
- For SAA-compliant compilers, including the C/C++ for OS/2 compiler, the result
- of -7 / 4 is -1 with a remainder of -3, assuming both -7 and 4 are signed. If
- 4 is unsigned, -7 is converted to unsigned.
-
- The result is undefined if the second operand evaluates to 0 (zero).
-
- Related Information
-
- o Multiplication *
- o Remainder %
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.3. Remainder % ΓòÉΓòÉΓòÉ
-
- The % (remainder) operator yields the remainder from the division of the left
- operand by the right operand. For example, the expression 5 % 3 yields 2. The
- result is not an lvalue.
-
- Both operands must have an integral type. If the right operand evaluates to 0
- (zero), the result is undefined. If either operand has a negative value, the
- result is such that the following always holds true. The following expression
- always yields the value of a if b is not 0 (zero) and a/b is representable:
-
- ( a / b ) * b + a % b;
-
- Related Information
-
- o Multiplication *
- o Division /
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.4. Addition + ΓòÉΓòÉΓòÉ
-
- The + (addition) operator yields the sum of its operands. Both operands must
- have an arithmetic type, or one operand must be a pointer to an object type and
- the other operand must have an integral type.
-
- When both operands have an arithmetic type, the usual arithmetic conversions on
- the operands are performed. The result has the type produced by the conversions
- on the operands and is not an lvalue.
-
- When one of the operands is a pointer, the compiler converts the other operand
- to an address offset. The result is a pointer of the same type as the pointer
- operand.
-
- Related Information
-
- o Pointers
- o Unary Plus +
- o Subtraction -
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.5. Subtraction - ΓòÉΓòÉΓòÉ
-
- The - (subtraction) operator yields the difference of its operands. Both
- operands must have an arithmetic type, or the left operand must have a pointer
- type and the right operand must have the same pointer type or an integral type.
-
- When both operands have an arithmetic type, the usual arithmetic conversions on
- the operands are performed. The result has the type produced by the conversions
- on the operands and is not an lvalue.
-
- When the left operand is a pointer and the right operand has an integral type,
- the compiler converts the value of the right operand to an address offset. The
- result is a pointer of the same type as the pointer operand.
-
- If both operands are pointers to the same type, the compiler converts the
- result to an integral type that represents the number of objects separating the
- two addresses. Behavior is undefined if the pointers do not refer to objects in
- the same array.
-
- Related Information
-
- o Pointers
- o Unary Minus -
- o Addition +
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.6. Bitwise Left and Right Shift << >> ΓòÉΓòÉΓòÉ
-
- The bitwise shift operators move the bit values of a binary object. The left
- operand specifies the value to be shifted. The right operand specifies the
- number of positions that the bits in the value are to be shifted. The result
- is not an lvalue.
-
- The << (bitwise left shift) operator indicates the bits are to be shifted to
- the left. The >> (bitwise right shift) operator indicates the bits are to be
- shifted to the right.
-
- Each operand must have an integral type. The compiler performs integral
- promotions on the operands. Then the right operand is converted to type int.
- The result has the same type as the left operand (after the arithmetic
- conversions).
-
- If the right operand has a negative value or a value that is greater than or
- equal to the width in bits of the expression being shifted, the result is
- undefined.
-
- If the right operand has the value 0 (zero), the result is the value of the
- left operand (after the usual arithmetic conversions).
-
- The << operator fills vacated bits with zeros. For example, if l_op has the
- value 4019, the bit pattern (in 16-bit format) of l_op is:
-
- 0000111110110011
-
- The expression l_op << 3 yields:
-
- 0111110110011000
-
- If the left operand has an unsigned type, the >> operator fills vacated bits
- with zeros. Otherwise, the compiler will fill the vacated bits of a signed
- value with a copy of the value's sign bit. For example, if l_op has the value
- -25, the bit pattern (in 16-bit format) of l_op is:
-
- 1111111111100111
-
- The expression l_op >> 3 yields:
-
- 1111111111111100
-
- Related Information
-
- o Bitwise Negation ~
- o Bitwise AND &
- o Bitwise Exclusive OR ^
- o Bitwise Inclusive OR |
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.7. Relational < > <= >= ΓòÉΓòÉΓòÉ
-
- The relational operators compare two operands and determine the validity of a
- relationship. If the relationship stated by the operator is true, the value of
- the result is 1. Otherwise, the value of the result is 0.
-
- The following table describes the relational operators:
-
- Operator Usage
-
- < Indicates whether the value of the left operand is less than the
- value of the right operand.
-
- > Indicates whether the value of the left operand is greater than the
- value of the right operand.
-
- <= Indicates whether the value of the left operand is less than or
- equal to the value of the right operand.
-
- >= Indicates whether the value of the left operand is greater than or
- equal to the value of the right operand.
-
- Both operands must have arithmetic types or be pointers to the same type. The
- result has type int. If the operands have arithmetic types, the usual
- arithmetic conversions on the operands are performed.
-
- When the operands are pointers, the result is determined by the locations of
- the objects to which the pointers refer. If the pointers do not refer to
- objects in the same array, the result is not defined.
-
- Relational operators have left-to-right associativity. Therefore, the
- expression:
-
- a < b <= c
-
- is interpreted as:
-
- (a < b) <= c
-
- If the value of a is less than the value of b, the first relationship is true
- and yields the value 1 (one). The compiler then compares the value 1 (one)
- with the value of c.
-
- Related Information
-
- o Equality == !=
- o Logical Negation !
- o Pointers
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.8. Equality == != ΓòÉΓòÉΓòÉ
-
- :isyn root=equal.equal equals equality inequality
-
- The equality operators, like the relational operators, compare two operands for
- the validity of a relationship. The equality operators, however, have a lower
- precedence than the relational operators. If the relationship stated by an
- equality operator is true, the value of the result is 1 (one). Otherwise, the
- value of the result is 0 (zero).
-
- The following table describes the equality operators:
-
- Operator Usage
-
- == Indicates whether the value of the left operand is equal to the
- value of the right operand.
-
- != Indicates whether the value of the left operand is not equal to the
- value of the right operand.
-
- Both operands must have arithmetic types or be pointers to the same type, or
- one operand must have a pointer type and the other operand must be a pointer to
- void or NULL. The result has type int.
-
- If the operands have arithmetic types, the usual arithmetic conversions on the
- operands are performed. If the operands are pointers, the result is determined
- by the locations of the objects to which the pointers refer.
-
- If one operand is a pointer and the other operand is an integer having the
- value 0 (zero), the expression is true only if the pointer operand evaluates to
- NULL.
-
- Note: The equality operator (==) should not be confused with the assignment
- operator (=). For example,
-
- if(x == 3) evaluates to 1 if x is equal to three
- while
- if(x = 3) always evaluates to 1 and assigns the value 3 to x.
-
- Related Information
-
- o Relational < > <= >=
- o Logical Negation !
- o Pointers
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.9. Bitwise AND & ΓòÉΓòÉΓòÉ
-
- The & (bitwise AND) operator compares each bit of its first operand to the
- corresponding bit of the second operand. If both bits are 1's, the
- corresponding bit of the result is set to 1. Otherwise, it sets the
- corresponding result bit to 0.
-
- Both operands must have an integral type. The usual arithmetic conversions on
- each operand are performed. The result has the same type as the converted
- operands.
-
- Because the bitwise AND operator has both associative and commutative
- properties, the compiler may rearrange the operands in an expression that
- contains more than one bitwise AND operator.
-
- The following example shows the values of a, b, and the result of a & b
- represented as 16-bit binary numbers:
-
- bit pattern of a 0000000001011100
- bit pattern of b 0000000000101110
- bit pattern of a & b 0000000000001100
-
- Note: The bitwise AND (&) should not be confused with the logical AND (&&)
- operator. For example,
-
- 1 & 4 evaluates to 0
- while
- 1 && 4 evaluates to 1
-
- Related Information
-
- o Bitwise Exclusive OR ^
- o Bitwise Inclusive OR |
- o Logical AND &&
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.10. Bitwise Exclusive OR ^ ΓòÉΓòÉΓòÉ
-
- The bitwise exclusive OR operator (in EBCDIC, the ^ symbol is represented by
- the ╨║ symbol) compares each bit of its first operand to the corresponding bit
- of the second operand. If both bits are 1's or both bits are 0's, the
- corresponding bit of the result is set to 0. Otherwise, it sets the
- corresponding result bit to 1.
-
- Both operands must have an integral type. The usual arithmetic conversions on
- each operand are performed. The result has the same type as the converted
- operands and is not an lvalue.
-
- Because the bitwise exclusive OR operator has both associative and commutative
- properties, the compiler may rearrange the operands in an expression that
- contains more than one bitwise exclusive OR operator. Note that the ^ character
- can be represented by the trigraph ??'.
-
- The following example shows the values of a, b, and the result of a ^ b
- represented as 16-bit binary numbers:
-
- bit pattern of a 0000000001011100
- bit pattern of b 0000000000101110
- bit pattern of a ^ b 0000000001110010
-
- Related Information
-
- o Bitwise Inclusive OR |
- o Bitwise AND &
- o Logical OR ||
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.11. Bitwise Inclusive OR | ΓòÉΓòÉΓòÉ
-
- The | (bitwise inclusive OR) operator compares the values (in binary format) of
- each operand and yields a value whose bit pattern shows which bits in either of
- the operands had the value 1. If both of the bits are 0, the result of that bit
- is 0; otherwise, the result is 1 (one).
-
- Both operands must have an integral type. The usual arithmetic conversions on
- each operand are performed. The result has the same type as the converted
- operands and is not an lvalue.
-
- Because the bitwise inclusive OR operator has both associative and commutative
- properties, the compiler may rearrange the operands in an expression that
- contains more than one bitwise inclusive OR operator. Note that the | character
- can be represented by the trigraph ??!.
-
- The following example shows the values of a, b, and the result of a | b
- represented as 16-bit binary numbers:
-
- bit pattern of a 0000000001011100
- bit pattern of b 0000000000101110
- bit pattern of a | b 0000000001111110
-
- Note: The bitwise OR (|) should not be confused with the logical OR (||)
- operator. For example,
-
- 1 | 4 evaluates to 5
- while
- 1 || 4 evaluates to 1
-
- Related Information
-
- o Bitwise Exclusive OR ^
- o Bitwise AND &
- o Logical OR ||
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.12. Logical AND && ΓòÉΓòÉΓòÉ
-
- The && (logical AND) operator indicates whether both operands have a nonzero
- value. If both operands have nonzero values, the result has the value 1 (one).
- Otherwise, the result has the value 0 (zero).
-
- Both operands must have a scalar type. The usual arithmetic conversions on
- each operand are performed. The result has type int and is not an lvalue.
-
- The logical AND operator guarantees left-to-right evaluation of the operands.
- If the left operand evaluates to 0 (zero), the right operand is not evaluated.
-
- The following examples show how the expressions that contain the logical AND
- operator are evaluated:
-
- Expression Result
- 1 && 0 0
- 1 && 4 1
- 0 && 0 0
-
- The following example uses the logical AND operator to avoid a divide-by-zero
- situation:
-
- y && (x / y)
-
- The expression x / y is not evaluated when y is 0.
-
- Note: The logical AND (&&) should not be confused with the inf.bitwise AND (&)
- operator. For example,
-
- 1 && 4 evaluates to 1
- while
- 1 & 4 evaluates to 0
-
- Related Information
-
- o Logical OR ||
- o Bitwise AND &
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.6.13. Logical OR || ΓòÉΓòÉΓòÉ
-
- The || (logical OR) operator indicates whether either operand has a nonzero
- value. If either operand has a nonzero value, the result has the value 1
- (one). Otherwise, the result has the value 0 (zero).
-
- Both operands must have a scalar type. The the usual arithmetic conversions on
- each operand are performed. The result has type int and is not an lvalue.
-
- The logical OR operator guarantees left-to-right evaluation of the operands.
- If the left operand has a nonzero value, the right operand is not evaluated.
-
- The following examples show how expressions that contain the logical OR
- operator are evaluated:
-
- Expression Result
- 1 || 0 1
- 1 || 4 1
- 0 || 0 0
-
- The following example uses the logical OR operator to conditionally increment
- y:
-
- ++x || ++y;
-
- The expression ++y is not evaluated when the expression ++x evaluates to a
- nonzero quantity.
-
- Note: The logical OR (||) should not be confused with the inf.bitwise OR (|)
- operator. For example,
-
- 1 || 4 evaluates to 1
- while
- 1 | 4 evaluates to 5
-
- Related Information
-
- o Logical AND &&
- o Bitwise Inclusive OR |
- o Binary Expression
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.7. Conditional Expression ? : ΓòÉΓòÉΓòÉ
-
- A conditional expression is a compound expression that contains a condition
- (the first expression), an expression to be evaluated if the condition has a
- nonzero value (the second expression), and an expression to be evaluated if the
- condition has the value 0 (zero).
-
- The conditional expression contains one two-part operator. The ? symbol
- follows the condition, and the : symbol appears between the two action
- expressions. All expressions that occur between the ? and : are treated as one
- expression.
-
- The first operand must have a scalar type. The second and third operands must
- have arithmetic types, compatible structure type, compatible union type, or
- compatible pointer type. A type is compatible when it has the same type but
- not necessarily the same qualifiers (volatile, const, or _Packed). Also, the
- second and third operands may be a pointer and a NULL pointer constant, or a
- pointer to an object and a pointer to void.
-
- The first expression is evaluated first. If the first expression has a nonzero
- value, the second expression is evaluated and the third operand is not
- evaluated. and its result is converted to the result type. If the expression is
- an arithmetic type, the usual arithmetic conversions on the second expression
- are performed. If the first expression has a zero value, the third expression
- is evaluated with the usual arithmetic conversions performed on it if it has an
- arithmetic type. The types of the second and third operands determine the type
- of the result as shown in the following table.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé TYPE OF ONE OPERAND Γöé TYPE OF OTHER Γöé TYPE OF RESULT Γöé
- Γöé Γöé OPERAND Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Arithmetic Γöé Arithmetic Γöé Arithmetic after Γöé
- Γöé Γöé Γöé usual arithmetic Γöé
- Γöé Γöé Γöé conversions Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "struct/union" type Γöé Compatible Γöé "struct/union" Γöé
- Γöé Γöé "struct/union" type Γöé type with all the Γöé
- Γöé Γöé Γöé qualifiers on both Γöé
- Γöé Γöé Γöé operands Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "void" Γöé "void" Γöé "void" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Pointer to compat- Γöé Pointer to compat- Γöé Pointer to type Γöé
- Γöé ible type Γöé ible type Γöé with all the qual- Γöé
- Γöé Γöé Γöé ifiers specified Γöé
- Γöé Γöé Γöé for the type Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Pointer to type Γöé "NULL" pointer Γöé Pointer to type Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Pointer to object Γöé Pointer to "void" Γöé Pointer to "void" Γöé
- Γöé or incomplete type Γöé Γöé with all the qual- Γöé
- Γöé Γöé Γöé ifiers specified Γöé
- Γöé Γöé Γöé for the type Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Type of the Conditional Expression
-
- Conditional expressions have right-to-left associativity.
-
- Examples of Conditional Expressions
-
- Related Information
-
- o Types
- o Declarators
- o Expressions and Operators
- o Usual Arithmetic Conversions
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.8. Assignment Expression ΓòÉΓòÉΓòÉ
-
- An assignment expression stores a value in the object designated by the left
- operand.
-
- The left operand in all assignment expressions must be a modifiable lvalue.
- The type of the expression is the type of the left operand. The value of the
- expression is the value of the left operand after the assignment has completed.
- The result of an assignment expression is not an lvalue.
-
- All assignment operators have the same precedence and have right-to-left
- associativity.
-
- There are two types of assignment operators, simple assignment and compound
- assignment operators. The following sections describe these operators.
-
- o Simple Assignment =
- o Compound Assignment
-
- Related Information
-
- o Expressions and Operators
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.8.1. Simple Assignment = ΓòÉΓòÉΓòÉ
-
- The simple assignment operator stores the value of the right operand in the
- object designated by the left operand.
-
- Both operands must have arithmetic types, the same structure type, or the same
- union type. Otherwise, both operands must be pointers to the same type, or the
- left operand must be a pointer and the right operand must be the constant 0
- (zero) or NULL.
-
- If both operands have arithmetic types, the system converts the type of the
- right operand to the type of the left operand before the assignment.
-
- If the left operand is a pointer and the right operand is the constant 0
- (zero), the result is NULL.
-
- Pointers to void can appear on either side of the simple assignment operator.
-
- A packed structure or union can be assigned to a nonpacked structure or union
- of the same type, and vice versa.
-
- If one operand is packed and the other is not, the layout of the right operand
- is remapped to match the layout of the left. This remapping of structures may
- degrade performance. For efficiency, when you perform assignment operations
- with structures or unions, you should ensure that both operands are either
- packed or nonpacked.
-
- Note: If you assign pointers to structures or unions, the objects they point
- to must both be either packed or nonpacked. See Pointers for more information
- on assignments with pointers.
-
- You can assign values to operands with the type qualifier volatile. You cannot
- assign a pointer of an object with the type qualifier const to a pointer of an
- object without the const type qualifier such as in the following example:
-
- const int *p1;
- int *p2;
- p2 = p1; /* is not allowed */
-
- p1 = p2; /* note that this is allowed */
-
- Examples of Simple Assignments
-
- Note: The assignment (=) operator should not be confused with the inf.equality
- (==) operator. For example,
-
- if(x == 3) evaluates to 1 if x is equal to three
- while
- if(x = 3) always evaluates to 1 and assigns the value 3 to x.
-
- Related Information
-
- o Compound Assignment
- o Equality == !=
- o Pointers
- o volatile and const Qualifiers
- o Types
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.8.2. Compound Assignment ΓòÉΓòÉΓòÉ
-
- The compound assignment operators consist of a binary operator and the simple
- assignment operator. They perform the operation of the binary operator on both
- operands and give the result of that operation to the left operand.
-
- If the left operand of the += and -= operators is a pointer, the right operand
- must have an integral type; otherwise, both operands must have an arithmetic
- type.
-
- Both operands of the *=, /=, and %= operators must have an arithmetic type.
-
- Both operands of the <<=, >>=, &=, ^=, and |= operators must have an integral
- type.
-
- Note that the expression a *= b + c is equivalent to a = a * (b + c), and not
- a = a * b + c.
-
- The following table lists the compound assignment operators and shows an
- expression using each operator:
-
- Operator Example
-
- += index += 2
- Equivalent expression: index = index + 2
-
- -= *(pointer++) -= 1
- Equivalent expression: *pointer = *(pointer++) - 1
-
- *= bonus *= increase
- Equivalent expression: bonus = bonus * increase
-
- /= time /= hours
- Equivalent expression: time = time / hours
-
- %= allowance %= 1000
- Equivalent expression: allowance = allowance % 1000
-
- <<= result <<= num
- Equivalent expression: result = result << num
-
- >>= form >>= 1
- Equivalent expression: form = form >> 1
-
- &= mask &= 2
- Equivalent expression: mask = mask & 2
-
- ^= test ^= pre_test
- Equivalent expression: test = test ^ pre_test
-
- |= flag |= ON
- Equivalent expression: flag = flag | ON
-
- Although the equivalent expression column shows the left operands (from the
- example column) evaluated twice, the left operand is evaluated only once.
-
- Related Information
-
- o Simple Assignment =
- o Binary Expression
-
-
- ΓòÉΓòÉΓòÉ 3.9. Comma Expression , ΓòÉΓòÉΓòÉ
-
- A comma expression contains two operands separated by a comma. Although the
- compiler evaluates both operands, the value of the right operand is the value
- of the expression. The left operand is evaluated, possibly producing side
- effects, and then the value is discarded. The result of a comma expression is
- not an lvalue.
-
- Both operands of a comma expression can have any type. All comma expressions
- have left-to-right associativity. The left operand is fully evaluated before
- the right operand.
-
- If omega had the value 11, the following example would increment y and assign
- the value 3 to alpha:
-
- alpha = (y++, omega % 4);
-
- Any number of expressions separated by commas can form a single expression.
- The compiler evaluates the leftmost expression first. The value of the
- rightmost expression becomes the value of the entire expression. For example,
- the value of the following expression is rotate(direction):
-
- intensity++, shade * increment, rotate(direction);
-
- Restrictions
- You can place comma expressions within lists that contain commas (for example,
- argument lists and initializer lists). However, because the comma has a
- special meaning, you must place parentheses around comma expressions in these
- lists. The comma expression t = 3, t + 2 is in the following function call:
-
- f(a, (t = 3, t + 2), c);
-
- The arguments to the function f are: the value of a, the value 5, and the
- value of c.
-
- Related Information
-
- o Expressions and Operators
- o Operator Precedence
-
-
- ΓòÉΓòÉΓòÉ 3.10. Conversions ΓòÉΓòÉΓòÉ
-
- Many C language operators cause conversions. A conversion changes the form of
- a value and its type. For example, when you add values having different data
- types, the compiler converts the types of the objects to the same type before
- adding the values. Addition of a short int value and an int value causes the
- compiler to convert the short int value to the int type.
-
- Conversions may occur, for example, when:
-
- o A cast operation is performed.
- o An operand is prepared for an arithmetic or logical operation.
- o An assignment is made to an lvalue that has different type from the assigned
- value.
- o A prototyped function is given an argument that has a different type from the
- parameter.
- o The type of the expression specified on a function's return statement has a
- different type from the defined return type for the function.
-
- Although the C language contains some guidelines for conversions, many
- conversions contain implementation specific aspects. These implementation
- specific aspects occur because:
-
- o The sizes of the data types vary.
- o The manner of handling signed data varies.
- o The data formats vary.
-
- The following sections describe conversions:
-
- o Usual Arithmetic Conversions
- o Type Conversions
-
- Related Information
-
- o Expressions and Operators
- o Types
- o Cast
- o Functions
-
-
- ΓòÉΓòÉΓòÉ 3.10.1. Usual Arithmetic Conversions ΓòÉΓòÉΓòÉ
-
- Most C operators perform type conversions to bring the operands of an
- expression to a common type or to extend short values to the integer size used
- in machine operations. The conversions performed by C operators depend on the
- specific operator and the type of the operand or operands. However, many
- operators perform similar conversions on operands of integer and floating-point
- types. These conversions are known as standard arithmetic conversions because
- they apply to the types of values ordinarily used in arithmetic.
-
- Integer promotions are performed when you use a char, short int, int bit-field
- or an enumeration type wherever an int or unsigned int is expected. If an int
- can hold the value, the value is converted to an int otherwise, it is
- converted to an unsigned int. All other arithmetic types are unchanged by
- integer promotions.
-
- Type Conversions outlines the path of each type of conversion.
-
- Arithmetic conversion proceeds in the following order:
-
- 1. If one operand has long double type, the other operand is converted to long
- double type.
-
- 2. If one operand has double type, the other operand is converted to double.
-
- 3. If one operand has float type, the other operand is converted to float.
-
- 4. If one operand has unsigned long int type, the other operand is converted
- to unsigned long int.
-
- 5. If one operand has unsigned int type and the other operand has long int
- type and the value of the unsigned int can be represented in a long int,
- the operand with unsigned int type is converted to long int.
-
- 6. If one operand has unsigned int type and the other operand has long int
- type and the value of the unsigned int cannot be represented in a long int,
- both operands are converted to unsigned long int.
-
- 7. If one operand has long int type, the other operand is converted to long
- int.
-
- 8. If one operand has unsigned int type, the other operand is converted to
- unsigned int.
-
- 9. Both operands have int type, and the result is type int.
-
- Related Information
-
- o Type Conversions
- o Types
- o Expressions and Operators
-
-
- ΓòÉΓòÉΓòÉ 3.10.2. Type Conversions ΓòÉΓòÉΓòÉ
-
- Type conversions are the assignment of a value to a variable of a different
- data type, when
-
- o a value is explicitly cast to another type,
- o an operator converts the type of its operand or operands before performing an
- operation,
- o a value is passed as an argument to a function.
-
- The following sections outline the rules governing each kind of conversion.
-
- Assignment Conversions
-
- In assignment operations, the type of the value being assigned is converted to
- the type of the variable receiving the assignment. C allows conversions by
- assignment between integer and floating-point types, even when the conversion
- entails loss of information.
-
- On IBM C compilers, int types are handled in the same manner as long types.
-
- The methods of carrying out the conversions depend upon the type:
-
- o Conversion from Signed Integer Types
- o Conversion from Unsigned Integer Types
- o Conversion from Floating-Point Types
- o Conversion to and from Pointer Types
- o Conversion from Other Types
-
- Related Information
-
- o Types
- o Expressions and Operators
- o Cast
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.10.3. Conversion from Signed Integer Types ΓòÉΓòÉΓòÉ
-
- :isyn root=convert.convert converting conversion
-
- C converts a signed integer to a shorter signed integer by truncating the
- high-order bits and converting to a longer signed integer by sign-extension.
- Conversion of signed integers to floating-point values takes place without loss
- of information, except that some precision can be lost when a long value is
- converted to a float. To convert a signed integer to an unsigned integer, the
- signed integer is converted to the size of the unsigned integer and the result
- is interpreted as an unsigned value.
-
- The following chart summarizes conversions from signed integer types:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé FROM Γöé TO Γöé METHOD Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "signed Γöé "short" Γöé Sign-extend. Γöé
- Γöé char" Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Sign-extend. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Sign-extend. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve pattern; high- Γöé
- Γöé Γöé char" Γöé order bit loses function Γöé
- Γöé Γöé Γöé as sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Sign-extend to "short"; Γöé
- Γöé Γöé short" Γöé convert "short" to Γöé
- Γöé Γöé Γöé "unsigned short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Sign-extend to "long"; Γöé
- Γöé Γöé long" Γöé convert "long" to Γöé
- Γöé Γöé Γöé "unsigned long". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Sign-extend to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Sign-extend to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Sign-extend to "long"; Γöé
- Γöé Γöé double" Γöé convert "long" to "long Γöé
- Γöé Γöé Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "short" Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Sign-extend. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Sign-extend. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve bit pattern; Γöé
- Γöé Γöé short" Γöé high-order bit loses Γöé
- Γöé Γöé Γöé function as sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Sign-extend to "long"; Γöé
- Γöé Γöé long" Γöé convert "long" to Γöé
- Γöé Γöé Γöé "unsigned long". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Sign-extend to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Sign-extend to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Sign-extend to "long"; Γöé
- Γöé Γöé double" Γöé convert "long" to "long Γöé
- Γöé Γöé Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "int" Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Preserve low-order bytes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order bytes. Γöé
- Γöé Γöé short" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve bit pattern; Γöé
- Γöé Γöé long" Γöé high-order bit loses Γöé
- Γöé Γöé Γöé function as sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Represent as a "float"; Γöé
- Γöé Γöé Γöé if the "long" cannot be Γöé
- Γöé Γöé Γöé represented exactly, some Γöé
- Γöé Γöé Γöé loss of precision occurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Represent as a "double"; Γöé
- Γöé Γöé Γöé if the "long" cannot be Γöé
- Γöé Γöé Γöé represented exactly, some Γöé
- Γöé Γöé Γöé loss of precision occurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Represent as a "long Γöé
- Γöé Γöé double" Γöé double"; if the "long" Γöé
- Γöé Γöé Γöé cannot be represented Γöé
- Γöé Γöé Γöé exactly, some loss of Γöé
- Γöé Γöé Γöé precision occurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "long" Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Preserve low-order bytes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order bytes. Γöé
- Γöé Γöé short" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve bit pattern; Γöé
- Γöé Γöé long" Γöé high-order bit loses Γöé
- Γöé Γöé Γöé function as sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Represent as a "float"; Γöé
- Γöé Γöé Γöé if the "long" cannot be Γöé
- Γöé Γöé Γöé represented exactly, some Γöé
- Γöé Γöé Γöé loss of precision occurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Represent as a "double"; Γöé
- Γöé Γöé Γöé if the "long" cannot be Γöé
- Γöé Γöé Γöé represented exactly, some Γöé
- Γöé Γöé Γöé loss of precision occurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Represent as a "long Γöé
- Γöé Γöé double" Γöé double"; if the "long" Γöé
- Γöé Γöé Γöé cannot be represented Γöé
- Γöé Γöé Γöé exactly, some loss of Γöé
- Γöé Γöé Γöé precision occurs. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Integers
- o Types
- o Type Conversions
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.10.4. Conversion from Unsigned Integer Types ΓòÉΓòÉΓòÉ
-
- An unsigned integer is converted to a shorter unsigned or signed integer by
- truncating the high-order bits. An unsigned integer is converted to a longer
- unsigned or signed integer by setting the high-order bits to 0. Unsigned values
- are converted to floating-point values by first converting to a signed integer
- of the same size, and then converting that signed value to a floating-point
- value.
-
- When an unsigned integer is converted to a signed integer of the same size, no
- change in the bit pattern occurs. However, the value changes if the sign bit
- is set.
-
- The following chart summarizes conversions from unsigned integer types:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé FROM Γöé TO Γöé METHOD Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "unsigned Γöé "signed Γöé Preserve bit pattern; Γöé
- Γöé char" Γöé char" Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Zero-extend; preserve the Γöé
- Γöé Γöé Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Zero-extend; preserve the Γöé
- Γöé Γöé Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Zero-extend; preserve the Γöé
- Γöé Γöé Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Zero-extend; preserve the Γöé
- Γöé Γöé short" Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Zero-extend; preserve the Γöé
- Γöé Γöé int" Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Zero-extend; preserve the Γöé
- Γöé Γöé long" Γöé bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Convert to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Convert to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Convert to "long"; Γöé
- Γöé Γöé double" Γöé convert "long" to "long Γöé
- Γöé Γöé Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "unsigned Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé short" Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Preserve bit pattern; Γöé
- Γöé Γöé Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign bit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Zero-extend; preserve Γöé
- Γöé Γöé Γöé the bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Zero-extend; preserve Γöé
- Γöé Γöé Γöé the bit pattern. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Zero-extend. Γöé
- Γöé Γöé int" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Zero-extend. Γöé
- Γöé Γöé long" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Convert to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Convert to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Convert to "long"; Γöé
- Γöé Γöé double" Γöé convert "long" to "long Γöé
- Γöé Γöé Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "unsigned Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé int" Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Preserve low-order bytes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Preserve bit pattern; Γöé
- Γöé Γöé Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Preserve bit pattern; Γöé
- Γöé Γöé Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order bytes. Γöé
- Γöé Γöé short" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Convert "int" to "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Convert "int" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Convert "int" to "long Γöé
- Γöé Γöé double" Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "unsigned Γöé "signed Γöé Preserve low-order byte. Γöé
- Γöé long" Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Preserve low-order bytes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Preserve bit pattern; Γöé
- Γöé Γöé Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Preserve bit pattern; Γöé
- Γöé Γöé Γöé high-order bit becomes Γöé
- Γöé Γöé Γöé sign. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order byte. Γöé
- Γöé Γöé char" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Preserve low-order bytes. Γöé
- Γöé Γöé short" Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Convert "long" to Γöé
- Γöé Γöé Γöé "float". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Convert "long" to Γöé
- Γöé Γöé Γöé "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Convert "long" to "long Γöé
- Γöé Γöé double" Γöé double". Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Integers
- o Types
- o Type Conversions
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.10.5. Conversion from Floating-Point Types ΓòÉΓòÉΓòÉ
-
- A float value converted to a double undergoes no change in value. A double
- converted to a float is represented exactly, if possible. If C cannot exactly
- represent the double value as a float, the number loses precision. If the
- value is too large to fit into a float, the number is undefined.
-
- A floating-point value is converted to an integer value by converting to an
- unsigned long. The decimal fraction portion of the floating-point value is
- discarded in the conversion. If the result is still too large to fit, the
- result of the conversion is undefined.
-
- The following chart summarizes conversions from floating-point types:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé FROM Γöé TO Γöé METHOD Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "float" Γöé "signed Γöé Convert to "long"; Γöé
- Γöé Γöé char" Γöé convert "long" to "signed Γöé
- Γöé Γöé Γöé char". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Convert to "long"; Γöé
- Γöé Γöé Γöé convert "long" to Γöé
- Γöé Γöé Γöé "short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "int", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "long", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Convert to "unsigned Γöé
- Γöé Γöé short" Γöé long"; convert "unsigned Γöé
- Γöé Γöé Γöé long" to "unsigned Γöé
- Γöé Γöé Γöé short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé int" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as an "unsigned int", Γöé
- Γöé Γöé Γöé result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé long" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as an "unsigned long", Γöé
- Γöé Γöé Γöé result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Represent as a "double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "double" Γöé "signed Γöé Convert to "float"; Γöé
- Γöé Γöé char" Γöé convert "float" to Γöé
- Γöé Γöé Γöé "char". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Convert to "float"; Γöé
- Γöé Γöé Γöé convert "float" to Γöé
- Γöé Γöé Γöé "short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "long", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "long", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Convert to "unsigned Γöé
- Γöé Γöé short" Γöé long"; convert "unsigned Γöé
- Γöé Γöé Γöé long" to "unsigned Γöé
- Γöé Γöé Γöé short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé int" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as an "unsigned int", Γöé
- Γöé Γöé Γöé result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé long" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "long", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Represent as a float; if Γöé
- Γöé Γöé Γöé the "double" value cannot Γöé
- Γöé Γöé Γöé be represented exactly as Γöé
- Γöé Γöé Γöé a "float", loss of preci- Γöé
- Γöé Γöé Γöé sion occurs; if the value Γöé
- Γöé Γöé Γöé is too large to be Γöé
- Γöé Γöé Γöé represented in a "float", Γöé
- Γöé Γöé Γöé the result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long Γöé Represent as a "long Γöé
- Γöé Γöé double" Γöé double". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "long Γöé "signed Γöé Convert to "double"; Γöé
- Γöé double" Γöé char" Γöé convert "double" to Γöé
- Γöé Γöé Γöé "float"; convert "float" Γöé
- Γöé Γöé Γöé to "char". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "short" Γöé Convert to "double"; Γöé
- Γöé Γöé Γöé convert "double" to Γöé
- Γöé Γöé Γöé "float"; convert "float" Γöé
- Γöé Γöé Γöé to "short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "int" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "int", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "long" Γöé Truncate at decimal Γöé
- Γöé Γöé Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "long", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Convert to "double"; Γöé
- Γöé Γöé short" Γöé convert "double" to Γöé
- Γöé Γöé Γöé "unsigned long"; convert Γöé
- Γöé Γöé Γöé "unsigned long" to Γöé
- Γöé Γöé Γöé "unsigned short". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé int" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as an "unsigned int", Γöé
- Γöé Γöé Γöé result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "unsigned Γöé Truncate at decimal Γöé
- Γöé Γöé long" Γöé point; if result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as an "unsigned long", Γöé
- Γöé Γöé Γöé result is undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "float" Γöé Convert to "double"; rep- Γöé
- Γöé Γöé Γöé resent as a "float"; if Γöé
- Γöé Γöé Γöé the "long double" value Γöé
- Γöé Γöé Γöé cannot be represented Γöé
- Γöé Γöé Γöé exactly as a "float", Γöé
- Γöé Γöé Γöé loss of precision occurs; Γöé
- Γöé Γöé Γöé if the value is too large Γöé
- Γöé Γöé Γöé to be represented in a Γöé
- Γöé Γöé Γöé "float", the result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé "double" Γöé Represent as a "double"; Γöé
- Γöé Γöé Γöé If the result is too Γöé
- Γöé Γöé Γöé large to be represented Γöé
- Γöé Γöé Γöé as a "double", result is Γöé
- Γöé Γöé Γöé undefined. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Floating-Point Variables
- o Types
- o Type Conversions
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.10.6. Conversion to and from Pointer Types ΓòÉΓòÉΓòÉ
-
- You can convert a pointer to one type of value to a pointer to a different
- type.
-
- You can convert a pointer value to an integral value. The path of the
- conversion depends on the size of the pointer and the size of the integral
- type.
-
- The conversion of an integer value to an address offset (in an expression with
- an integral type operand and a pointer type operand) is system dependent.
-
- A pointer to a constant or a volatile object should never be assigned to a
- non-constant or non-volatile object.
-
- A pointer to void can be converted to or from a pointer to any incomplete or
- object type.
-
- Related Information
-
- o Pointers
- o volatile and const Qualifiers
- o Types
- o Type Conversions
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 3.10.7. Conversion from Other Types ΓòÉΓòÉΓòÉ
-
- When you define a value using the enum type specifier, the value is treated as
- an int. Conversions to and from an enum value proceed as for the int type.
-
- When a packed structure or union is assigned to a nonpacked structure or union
- of the same type or vice versa, the layout of the right operand is remapped to
- match the layout of the left.
-
- No other conversions between structure or union types are allowed.
-
- The void type has no value, by definition. Therefore, it cannot be converted
- to any other type, nor can any value be converted to void by assignment.
- However, a value can be explicitly cast to void.
-
- Related Information
-
- o Enumerations
- o Integers
- o Structures
- o Unions
- o _Packed Qualifier
- o void Type
- o Cast
- o Type Conversions
- o Usual Arithmetic Conversions
-
-
- ΓòÉΓòÉΓòÉ 4. C Language Statements ΓòÉΓòÉΓòÉ
-
- This section describes the following C language statements:
-
- o Labels
- o Block
- o break
- o continue
- o do
- o Expression
- o for
- o goto
- o if
- o Null Statement
- o return
- o switch
- o while
-
-
- ΓòÉΓòÉΓòÉ 4.1. Labels ΓòÉΓòÉΓòÉ
-
- A label is an identifier that allows your program to transfer control to other
- statements within the same function. A label is the only type of identifier
- that has function scope. Control is transferred to the statement following the
- label by means of the goto or switch statements. A label has the form:
-
- ΓöÇΓöÇ
-
- identifierΓöÇΓöÇ:ΓöÇΓöÇ
-
- statementΓöÇΓöÇ
-
- For example, the following are labels:
-
- comment_complete: ; /* Example of null statement label */
- test_for_null: if (NULL == ptr) /* Example of statement label */
-
- The case and default labels have a specific use and are described later in this
- section under switch.
-
- Related Information
-
- o goto
- o switch
-
-
- ΓòÉΓòÉΓòÉ 4.2. Block ΓòÉΓòÉΓòÉ
-
- A block statement enables you to group any number of data definitions,
- declarations, and statements into one statement. When you enclose definitions,
- declarations, and statements within a single set of braces, everything within
- the braces is treated as a single statement. Note that the { and } characters
- can be represented by the trigraphs ??< and ??> respectively. You can place a
- block wherever a statement is allowed. The block statement has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- ΓöÇΓöÇ{ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ}ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇtype_definitionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
- Γöé Γöé
- Γö£ΓöÇΓöÇextern_declarationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇinternal_data_definitionΓöÇΓöÿ
-
- All definitions and declarations occur at the beginning of a block before
- statements. Statements must follow the definitions and declarations. A block
- is considered a single statement.
-
- If you redefine a data object inside a nested block, the inner object hides the
- outer object while the inner block is executed. Defining several variables
- that have the same identifier can make a program difficult to understand and
- maintain. Therefore, you should limit such redefinitions of identifiers within
- nested blocks.
-
- If a data object is usable within a block, all nested blocks can use that data
- object (unless that data object identifier is redefined).
-
- Initialization of an auto or register variable occurs each time the block is
- executed from the beginning. If you transfer control from one block to the
- middle of another block, initializations are not always performed. You cannot
- initialize an extern variable within a block.
-
- Example of Block Statements
-
- Related Information
-
- o Block Scope Data Declarations
- o Function Body
- o Storage Class Specifiers
-
-
- ΓòÉΓòÉΓòÉ 4.3. break ΓòÉΓòÉΓòÉ
-
- A break statement enables you to terminate and exit from a loop or switch
- statement from any point within the loop or switch other than the logical end.
- A break statement has the form:
-
- ΓöÇΓöÇbreakΓöÇΓöÇ;ΓöÇΓöÇ
-
- In a looping statement (do, for, or while), the break statement ends the loop
- and moves control to the next statement outside the loop. Within nested
- statements, the break statement ends only the smallest enclosing do, for,
- switch, or while statement.
-
- In a switch body, the break statement ends the execution of the switch body and
- gives control to the next statement outside the switch body.
-
- Restrictions
- You can place a break statement only in the body of a looping statement (do,
- for or while) or in the body of a switch statement.
-
- Example of break Statements
-
- Related Information
-
- o do
- o for
- o switch
- o while
-
-
- ΓòÉΓòÉΓòÉ 4.4. continue ΓòÉΓòÉΓòÉ
-
- A continue statement enables you to terminate the current iteration of a loop.
- Program control is passed from the location in the body of the loop in which
- the continue statement is found, to the end of the loop body. A continue
- statement has the form:
-
- ΓöÇΓöÇcontinueΓöÇΓöÇ;ΓöÇΓöÇ
-
- The continue statement ends the execution of the action part of a do, for, or
- while statement and moves control to the condition part of the statement. If
- the looping statement is a for statement, control moves to the third expression
- in the condition part of the statement, and then to the second expression (the
- test) in the condition part of the statement.
-
- Within nested statements, the continue statement ends only the current
- iteration of the do, for, or while statement immediately enclosing it.
-
- Restrictions
- You can place a continue statement only within the body of a looping statement
- (do, for or while).
-
- Example of continue Statements
-
- Related Information
-
- o do
- o for
- o while
-
-
- ΓòÉΓòÉΓòÉ 4.5. do ΓòÉΓòÉΓòÉ
-
- A do statement repeatedly executes a statement until the test expression
- evaluates to zero. Because of the order of execution, the statement is executed
- at least once.
-
- ΓöÇΓöÇdoΓöÇΓöÇstatementΓöÇΓöÇwhileΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇ;ΓöÇΓöÇ
-
- The body of the loop is executed before the while clause (the controlling
- expression) is evaluated. Further execution of the do statement depends on the
- value of the while clause. If the while clause does not evaluate to 0 (zero),
- the statement is executed again. Otherwise, execution of the statement ends.
-
- The controlling expression must be of scalar type.
-
- A break, return, or goto statement can cause the execution of a do statement to
- end, even when the while clause does not evaluate to 0 (zero).
-
- Example of do Statement
-
- Related Information
-
- o break
- o continue
- o for
- o goto
- o return
- o while
-
-
- ΓòÉΓòÉΓòÉ 4.6. Expression ΓòÉΓòÉΓòÉ
-
- An expression statement contains an expression. Expressions are described in
- Expressions and Operators. An expression statement has the form:
-
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇexpressionΓöÇΓöÇΓöÿ
-
- An expression statement evaluates the given expression. An expression
- statement is used to assign the value of the expression to a variable or to
- call a function.
-
- Example of Expression Statements
-
- Related Information
-
- o Expressions and Operators
-
-
- ΓòÉΓòÉΓòÉ 4.7. for ΓòÉΓòÉΓòÉ
-
- A for statement enables you to do the following:
-
- o Evaluate an expression prior to the first iteration of the statement
- ("initialization")
- o Specify an expression to determine whether or not the statement should be
- executed ("controlling part")
- o Evaluate an expression after each iteration of the statement
-
- A for statement has the form:
-
- ΓöÇΓöÇforΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇexpression1ΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇexpression2ΓöÇΓöÇΓöÿ
-
-
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇexpression3ΓöÇΓöÇΓöÿ
-
- The compiler evaluates expression1 only once; this is before the statement is
- executed for the first time. You can use this expression to initialize a
- variable. If you do not want to evaluate an expression prior to the first
- iteration of the statement, you can omit this expression.
-
- The compiler evaluates expression2 before each execution of the statement.
- expression2 must evaluate to a scalar type. If this expression evaluates to 0
- (zero), the for statement is terminated and control moves to the statement
- following the for statement. Otherwise, the statement is executed. If you
- omit expression2, it will be as if the expression had been replaced by a
- nonzero constant and the for statement will not be terminated by failure of
- this condition.
-
- The compiler evaluates expression3 after each execution of the statement. You
- can use this expression to increase, decrease, or reinitialize a variable. If
- you do not want to evaluate an expression after each iteration of the
- statement, you can omit this expression.
-
- A break, return, or goto statement can cause the execution of a for statement
- to end, even when the second expression does not evaluate to 0 (zero). If you
- omit expression2, you must use a break, return, or goto statement to stop the
- execution of the for statement.
-
- Example of for Statements
-
- Related Information
-
- o break
- o continue
- o do
- o return
- o goto
- o while
- o Expressions and Operators
-
-
- ΓòÉΓòÉΓòÉ 4.8. goto ΓòÉΓòÉΓòÉ
-
- A goto statement causes your program to unconditionally transfer control to the
- statement associated with the label specified on the goto statement. A goto
- statement has the form:
-
- ΓöÇΓöÇgotoΓöÇΓöÇidentifierΓöÇΓöÇ;ΓöÇΓöÇ
-
- The goto statement transfers control to the statement indicated by the
- identifier.
-
- Notes
- Use the goto statement sparingly. Because the goto statement can interfere
- with the normal top-to-bottom sequence of execution, the goto makes a program
- more difficult to read and maintain. Often, a break statement, a continue
- statement, or a function call can eliminate the need for a goto statement.
-
- If you use a goto statement to transfer control to a statement inside of a loop
- or block, initializations of automatic storage for the loop do not take place
- and the result is undefined. The label must appear in the same function as the
- goto.
-
- Example of goto Statements
-
- Related Information
-
- o Labels
- o break
- o continue
- o Functions
-
-
- ΓòÉΓòÉΓòÉ 4.9. if ΓòÉΓòÉΓòÉ
-
- An if statement allows you to conditionally execute a statement when the
- specified test expression evaluates to a nonzero value. The expression must
- have a scalar type. You may optionally specify an else clause on the if
- statement. If the test expression evaluates to 0 (zero) and an else clause
- exists, the statement associated with the else clause is executed. An if
- statement has the form:
-
- ΓöÇΓöÇifΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇelseΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
-
- When if statements are nested and else clauses are present, a given else is
- associated with the closest preceding if statement within the same block.
-
- Example of if Statements
-
- Related Information
-
- o Conditional Compilation
-
-
- ΓòÉΓòÉΓòÉ 4.10. Null Statement ΓòÉΓòÉΓòÉ
-
- The null statement performs no operation and has the form:
-
- ΓöÇΓöÇ;ΓöÇΓöÇ
-
- You can use a null statement in a looping statement to show a nonexistent
- action or in a labeled statement to hold the label.
-
- Example of Null Statements
-
- Related Information
-
- o Labels
-
-
- ΓòÉΓòÉΓòÉ 4.11. return ΓòÉΓòÉΓòÉ
-
- A return statement terminates the execution of the current function and returns
- control to the caller of the function. A return statement has the form:
-
- ΓöÇΓöÇreturnΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇexpressionΓöÇΓöÇΓöÿ
-
- A return statement ends the execution of the current function.
-
- A return statement is optional. If the system reaches the end of a function
- without encountering a return statement, control is passed to the caller as if
- a return statement without an expression were encountered.
-
- A function can contain multiple return statements.
-
- If an expression is present on a return statement, the value of the expression
- is returned to the caller. If the data type of the expression is different
- from the data type of the function, conversion of the return value takes place
- as if the value of the expression were assigned to an object with the same data
- type as the function.
-
- If an expression is not present on a return statement, the value of the return
- statement is not defined. If an expression is not given on a return statement
- and the calling function is expecting a value to be returned, the resulting
- behavior is undefined.
-
- You cannot use a return statement with an expression when the function is
- declared as returning type void.
-
- Example of return Statements
-
- Related Information
-
- o Functions
- o Expression
-
-
- ΓòÉΓòÉΓòÉ 4.12. switch ΓòÉΓòÉΓòÉ
-
- The switch statement passes control to the statement following one of the
- labels within the switch body or to the statement following the switch body.
- The value of the expression that precedes the switch body determines which
- statement receives control. A switch statement has the form:
-
- ΓöÇΓöÇswitchΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇswitch_bodyΓöÇΓöÇ
-
- A switch body can have a simple or complex form. The simple form contains any
- number of case labels mixed with an optional default label. The simple form
- ends with a single statement. Because only the final case or default label can
- be followed by a statement, the simple form of the switch body is rarely used
- in C language programs. An if statement usually can replace a switch statement
- that has a simple switch body.
-
- The simple form of a switch body is shown below:
-
- ΓöÇΓöÇΓö¼ΓöÇΓöÇcase_labelΓöÇΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdefault_labelΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ
-
- The complex form of a switch body is enclosed in braces and can contain
- definitions, declarations, case clauses, and a default clause. Each case and
- default clause can contain statements. The complex form of a switch body is
- shown below:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- ΓöÇΓöÇ{ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
- Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇtype_definitionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇΓöÇcase_clauseΓöÇΓöÇΓöÿ
- Γöé Γöé
- Γö£ΓöÇΓöÇextern_declarationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇinternal_data_definitionΓöÇΓöÇΓöÿ
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ}ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇdefault_clauseΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇcase_clauseΓöÇΓöÇΓöÿ
-
- Note: If you include an initializer within a type_definition,
- extern_definition or internal_data_definition, it will be ignored.
-
- The value of the switch expression is compared with the value of the expression
- in each case label. If a matching value is found, control is passed to the
- statement following the case label that contains the matching value. If the
- system does not find a matching value and a default label appears anywhere in
- the switch body, control passes to the default labelled statement. Otherwise,
- no part of the switch body is executed.
-
- If control passes to a statement in the switch body, control does not pass from
- the switch body until a break statement is encountered or the last statement in
- the switch body is executed.
-
- An integral promotion is performed on the controlling expression, if necessary,
- and all expressions in the case statements are converted to the same type as
- the controlling expression.
-
- Restrictions
- The switch expression and the case expressions must have an integral type. The
- value of each case expression must represent a different value and must be a
- constant expression.
-
- Only one default label can occur in each switch statement.
-
- You can place data definitions at the beginning of the switch body. However,
- the compiler does not initialize auto and register variables at the beginning
- of a switch body.
-
- Example of switch Statements
-
- Related Information
-
- o break
- o if
- o Labels
- o Expression
- o Types
- o Storage Class Specifiers
-
-
- ΓòÉΓòÉΓòÉ 4.13. while ΓòÉΓòÉΓòÉ
-
- A while statement enables you to repeatedly execute the body of a loop until
- the controlling expression evaluates to 0 (zero). A while statement has the
- form:
-
- ΓöÇΓöÇwhileΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇ
-
- The expression is evaluated to determine whether or not the body of the loop
- should be executed. The expression must be a scalar type. If the expression
- evaluates to 0 (zero), the statement terminates and the body of the loop never
- executes. Otherwise, the body does execute. After the body has executed,
- control is given once again to the expression. Further execution of the action
- depends on the value of the condition.
-
- A break, return, or goto statement can cause the execution of a while statement
- to end, even when the condition does not evaluate to 0 (zero).
-
- Example of while Statements
-
- Related Information
-
- o break
- o continue
- o do
- o for
- o goto
- o return
-
-
- ΓòÉΓòÉΓòÉ 5. Preprocessor Directives ΓòÉΓòÉΓòÉ
-
- This section describes the C preprocessor directives. Preprocessing is a step
- in the compilation process that enables you to:
-
- o Replace tokens in the current file with specified replacement tokens. A
- token is a series of characters delimited by whitespace. The only whitespace
- allowed on a preprocessor directive is the space, horizontal tab and
- comments.
- o Imbed files within the current file
- o Conditionally compile sections of the current file
- o Change the line number of the next line of source and change the file name of
- the current file
- o Generate diagnostic messages.
-
- The preprocessor recognizes the following directives:
-
- o #define
- o #undef
- o #error
- o #include
- o #if, #elif
- o #ifdef
- o #ifndef
- o #else
- o #endif
- o #line
- o #pragma
-
- The format of a preprocessor directive is described in Preprocessor Directive
- Format.
-
- Related Information
-
- o # Operator
- o ## Operator
- o # (Null Directive)
-
-
- ΓòÉΓòÉΓòÉ 5.1. Preprocessor Directive Format ΓòÉΓòÉΓòÉ
-
- Preprocessor directives begin with the # token followed by a preprocessor
- keyword. The # token must appear as the first non-white space character on a
- line.
-
- A preprocessor directive ends at the new-line character unless the last
- character of the line is the \ (backslash) character. If the \ character
- appears as the last character in the preprocessor line, the preprocessor
- interprets the \ and the new-line character as a continuation marker and
- interprets the following line as a continuation of the current preprocessor
- line.
-
- Preprocessor directives generally appear anywhere in a program.
-
- Related Information
-
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.2. #define ΓòÉΓòÉΓòÉ
-
- A preprocessor define directive directs the preprocessor to replace all
- subsequent occurrences of a macro with specified replacement tokens. A
- preprocessor #define directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇdefineΓöÇΓöÇidentifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÿ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇidentifierΓöÇΓö┤ΓöÇΓöÿ
-
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇ
- Γöé Γöé
- Γö£ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇcharacterΓöÇΓöÇΓöÇΓöÿ
-
- The #define directive can contain an object-like definition or a function-like
- definition.
-
- o Object-Like Macro Definition
- o Function-Like Macro Definition
- o Notes and Examples
-
- Related Information
-
- o #undef
- o # Operator
- o ## Operator
-
-
- ΓòÉΓòÉΓòÉ 5.2.1. Object-Like Macro Definition ΓòÉΓòÉΓòÉ
-
- An object-like macro definition replaces a single identifier with the specified
- replacement tokens. The following object-like definition causes the
- preprocessor to replace all subsequent instances of the identifier COUNT with
- the constant 1000:
-
- #define COUNT 1000
-
- This definition would cause the preprocessor to change the following statement
- (if the statement appears after the previous definition):
-
- int arry[COUNT];
-
- In the output of the preprocessor, the preceding statement would appear as:
-
- int arry[1000];
-
- The following definition references the previously defined identifier COUNT:
-
- #define MAX_COUNT COUNT + 100
-
- The preprocessor replaces each subsequent occurrence of MAX_COUNT with
- COUNT + 100, which the preprocessor then replaces with 1000 + 100.
-
- Related Information
-
- o #define
- o Function-Like Macro Definition
- o #undef
-
-
- ΓòÉΓòÉΓòÉ 5.2.2. Function-Like Macro Definition ΓòÉΓòÉΓòÉ
-
- A function-like macro definition:
-
- 1. Receives arguments from a macro invocation
- 2. Embeds these arguments in some replacement tokens
- 3. Substitutes the replacement tokens for the macro invocation.
-
- A function-like macro definition is an identifier followed by a parenthesized
- parameter list and the replacement tokens. White space cannot separate the
- identifier (which is the name of the macro) and the left parenthesis of the
- parameter list. A comma must separate each parameter. For portability, you
- should not assume that you can have more than 31 parameters for a macro.
-
- A macro invocation, like a function call, is an identifier followed by a
- parenthesized list of arguments. A comma must separate each argument.
-
- The following line defines the macro SUM as having two parameters a and b and
- the replacement tokens (a + b):
-
- #define SUM(a,b) (a + b)
-
- This definition would cause the preprocessor to change the following statements
- (if the statements appear after the previous definition):
-
- c = SUM(x,y);
- c = d * SUM(x,y);
-
- In the output of the preprocessor, the preceding statements would appear as:
-
- c = (x + y);
- c = d * (x + y);
-
- Related Information
-
- o #define
- o Object-Like Macro Definition
- o #undef
-
-
- ΓòÉΓòÉΓòÉ 5.2.3. Notes and Examples ΓòÉΓòÉΓòÉ
-
- A macro invocation must have the same number of arguments as the corresponding
- macro definition has parameters.
-
- In the macro invocation argument list, commas that appear as character
- constants, in string constants or surrounded by parentheses, do not separate
- arguments.
-
- The scope of a macro definition begins at the definition and does not end until
- a corresponding #undef directive is encountered. If there is no corresponding
- #undef directive, the scope of the macro definition lasts until the end of the
- compilation is reached.
-
- A recursive macro is not fully expanded. For example, the definition
-
- #define x(a,b) x(a+1,b+1) + 4
-
- would expand x(20,10) to x(20+1,10+1) + 4 rather than trying to expand
- the macro x over and over within itself.
-
- A definition is not required to specify replacement tokens. The following
- definition removes all instances of the token static from subsequent lines in
- the current file:
-
- #define static
-
- You can change the definition of a defined identifier or macro with a second
- preprocessor #define directive only if the second preprocessor #define
- directive is preceded by a preprocessor #undef directive. See #undef. The
- #undef directive nullifies the first definition so that the same identifier can
- be used in a redefinition.
-
- Within the text of the program, the preprocessor does not scan character
- constants or string constants for macro invocations.
-
- Note: You cannot define any predefined macros.
-
- Example of #define directives
-
- Related Information
-
- o #undef
- o # Operator
- o ## Operator
- o Predefined Macros
-
-
- ΓòÉΓòÉΓòÉ 5.3. #undef ΓòÉΓòÉΓòÉ
-
- A preprocessor undef directive causes the preprocessor to end the scope of a
- preprocessor definition. A preprocessor #undef directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇundefΓöÇΓöÇidentifierΓöÇΓöÇ
-
- #undef is ignored if the identifier is not currently defined as a macro.
-
- Note: You cannot undefine any predefined macros.
-
- Example of #undef directives
-
- Related Information
-
- o #define
- o Predefined Macros
-
-
- ΓòÉΓòÉΓòÉ 5.4. Predefined Macros ΓòÉΓòÉΓòÉ
-
- The C language provides the following predefined macro names.
-
- __LINE__
- An integer representing the current source line number.
-
- __FILE__
- A character string literal containing the name of the source file.
-
- __DATE__
- A character string literal containing the date when the source file was
- compiled. The date will be in the form
-
- "Mmm dd yyyy"
-
- where:
-
- Mmm represents the month in an abbreviated form (Jan, Feb, Mar, Apr, May,
- Jun, Jul, Aug, Sep, Oct, Nov, or Dec).
-
- dd represents the day. If the day is less than 10, the first d will be a
- blank character.
-
- yyyy represents the year.
-
- __TIME__
- A character string literal containing the time when the source file was
- compiled. The time will be in the form
-
- "hh:mm:ss"
-
- where:
-
- hh represents the hour.
-
- mm represents the minutes.
-
- ss represents the seconds.
-
- __TIMESTAMP__
- A character string literal containing the date and time when the source
- file was last modified.
-
- Note: This macro is not supported in all environments. If it is not
- supported, the date and time values will be implementation defined.
-
- The date and time will be in the form
-
- "Day Mmm dd hh:mm:ss yyyy"
-
- where:
-
- Day represents the day of the week (Mon, Tue, Wed, Thu, Fri, Sat, or Sun).
-
- Mmm represents the month in an abbreviated form (Jan, Feb, Mar, Apr, May,
- Jun, Jul, Aug, Sep, Oct, Nov, or Dec).
-
- dd represents the day. If the day is less than 10, the first d will be a
- blank character.
-
- hh represents the hour.
-
- mm represents the minutes.
-
- ss represents the seconds.
-
- yyyy represents the year.
-
- __STDC__
- The integer 1 (one).
-
- Note: This macro is undefined if the language level is set to anything
- other than ANSI.
-
- __ANSI__
- Allows only language constructs that conform to ANSI C standards. Defined
- using the inf.#pragma langlvl directive or inf./Sa option.
-
- __SAA__
- Allows only language constructs that conform to the most recent level of
- SAA C standards. Defined using the inf.#pragma langlvl directive of inf./S2
- option.
-
- __SAAL2__
- Allows only language constructs that conform to SAA Level 2 C standards.
- Defined using the inf.#pragma langlvldirective of inf./S2 option.
-
- __EXTENDED__
- Allows additional language constructs provided by the implementation.
- Defined using the inf.#pragma langlvl directive or inf./S2 option.
-
- The C/C++ for OS/2 compiler provides several other predefined macros:
-
- The C/C++ for OS/2 compiler provides several other predefined macros, described
- in Additional C/C++ for OS/2 Predefined Macros.
-
- -- Reference pmacnot not found --
-
- Related Information
-
- o Additional C/C++ for OS/2 Predefined Macros
- o inf.#pragma langlvl
- o Source Code Options
- o Using Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 5.4.1. Additional C/C++ for OS/2 Predefined Macros ΓòÉΓòÉΓòÉ
-
- ++ for OS/2 predefined ++ for OS/2 compiler
-
- Added CDPI information. If we say this, are there other macros we need to
- put in here (like INT_MAX, EDOM, etc)? C/370 includes them. We might also
- want to indicate if the macro is general purpose or internal use only.
-
- The macros identified in this section are provided to allow customers to write
- programs that use C/C++ for OS/2 services. Only those macros identified in
- this section should be used to request or receive C/C++ for OS/2 services.
-
- The C/C++ for OS/2 compiler provides both the SAA predefined macros and a
- number of macros specific to the C/C++ for OS/2 product. These macros cannot
- be user-defined or undefined.
-
- The additional macros offered by the C/C++ for OS/2 compiler are:
-
- _CHAR_UNSIGNED
- Indicates default character type is unsigned. Defined using the #pragma
- chars directive or /J option.
-
- _CHAR_SIGNED
- Indicates default character type is signed. Defined using the #pragma
- chars directive or /J option.
-
- __DDNAMES__
- Indicates ddnames are supported. Defined using the /Sh option. Defined
- using the #pragma langlvl directive or /Sm option.
-
- __FUNCTION__
- Indicates the name of the function currently being compiled.
-
- __MULTI__
- Indicates multithread code is being generated. Defined using the /Gm
- option.
-
- __DLL__
- Indicates code for a DLL is being compiled. Defined using the /Ge option.
-
- __SPC__
- Indicates the subsystem libraries are being used. Defined using the /Rn
- option.
-
- __DBCS__
- Indicates DBCS support is enabled. Defined using the /Sn option.
-
- __TILED__
- Indicates tiled memory is being used. Defined using the /Gt option.
-
- __IBMC__
- Indicates the version number of the compiler.
-
- __OS2__
- Set to the integer 1 (one). Indicates the product is an OS/2 compiler.
-
- __32BIT__
- Set to the integer 1 (one). Indicates the product is a 32-bit compiler.
-
- _M_I386
- Indicates code is being compiled for a 386 chip or higher.
-
- The value of the __IBMC__ macro is 200, and is always defined. The macros
- __OS2__, _M_I386, and __32BIT__ are always defined also. The remaining macros,
- with the exception of __FUNCTION__, are defined when the corresponding #pragma
- directive or compiler option is used.
-
- Related Information
-
- o Predefined Macros
- o -- Reference pmacnot not found --
- o #pragma chars
- o #pragma langlvl
- o Code Generation Options
- o Source Code Options
- o Other Options
- o Using Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 5.4.2. Notes and Examples ΓòÉΓòÉΓòÉ
-
- These predefined macro names consist of two underscore (__) characters
- immediately preceding the name, the name in uppercase letters, and two
- underscore characters immediately following the name.
-
- The value of __LINE__ will change during compilation as the compiler processes
- subsequent lines of your source program. Also, the value of __FILE__, and
- __TIMESTAMP__ will change as the compiler processes any #include files that are
- part of your source program.
-
- Restrictions
- Predefined macro names cannot be the subject of a #define or #undef
- preprocessor directive. However, they can be undefined on the command line
- using the /U option.
-
- Example of Predefined Macros
-
- Related Information
-
- o #define
- o #undef
- o #line
- o #pragma
- o Using Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 5.5. # Operator ΓòÉΓòÉΓòÉ
-
- The # (single number sign) operator is used to convert a parameter of a
- function-like macro (see Function-Like Macro Definition) into a character
- string literal. If macro ABC is defined using the following directive
-
- #define ABC(x) #x
-
- all subsequent invocations of the macro ABC would be expanded into a character
- string literal containing the argument passed to ABC. For example:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé INVOCATION Γöé RESULT OF MACRO EXPANSION Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ABC(1)" Γöé "1" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ABC(Hello there)" Γöé "Hello there" Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Note that the # character is also represented by the trigraph ??=.
-
- The # operator should not be confused with the null directive.
-
- When you use the # operator in a function-like macro definition, the following
- rules apply:
-
- 1. A parameter in a function-like macro that is preceded by the # operator
- will be converted into a character string literal containing the argument
- passed to the macro.
-
- 2. White space characters that appear before or after the argument passed to
- the macro will be deleted.
-
- 3. Multiple white space characters imbedded within the argument passed to the
- macro will be replaced by a single space character.
-
- 4. If the argument passed to the macro contains a string literal, and if a \
- (backslash) character appears within the literal, a second \ character
- will be inserted before the original \ when the macro is expanded.
-
- 5. If the argument passed to the macro contains a " (double quote) character,
- a \ character will be inserted before the " when the macro is expanded.
-
- 6. The conversion of an argument into a string literal occurs before macro
- expansion on that argument.
-
- 7. If more than one ## operator or # operator appears in the replacement list
- of a macro definition, the order of evaluation of the operators is not
- defined.
-
- 8. If the result of the replacement is not a valid character string literal,
- the behavior is undefined.
-
- Example of # Operators
-
- Related Information
-
- o #define
- o #undef
- o ## Operator
- o Function-Like Macro Definition
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.6. ## Operator ΓòÉΓòÉΓòÉ
-
- The ## (double number sign) operator is used to concatenate two tokens in a
- macro invocation (text and/or arguments) given in a macro definition. If a
- macro XY was defined using the following directive
-
- #define XY(x,y) x##y
-
- the last token of the argument for x will be concatenated with the first token
- of the argument for y.
-
- For example,
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé INVOCATION Γöé RESULT OF MACRO EXPANSION Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "XY(1, 2)" Γöé "12" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "XY(Green, Γöé "Greenhouse" Γöé
- Γöé house)" Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Note that the # character is also represented by the trigraph ??=.
-
- When you use the ## operator, the following rules apply:
-
- 1. The ## operator cannot be the very first or very last item in the
- replacement list of a macro definition.
-
- 2. The last token of the item preceding the ## operator is concatenated with
- first token of the item following the ## operator.
-
- 3. Concatenation takes place before any macros in arguments are expanded.
-
- 4. If the result of a concatenation is a valid macro name, it is available
- for further replacement even if it appears in a context in which it would
- not normally be available.
-
- 5. If more than one ## operator and/or # operator appears in the replacement
- list of a macro definition, the order of evaluation of the operators is
- not defined.
-
- Example of ## Operators
-
- Related Information
-
- o #define
- o #undef
- o # Operator
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.7. #error ΓòÉΓòÉΓòÉ
-
- A preprocessor error directive causes the preprocessor to generate an error
- message and causes the compilation to fail. #error directive has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇ#ΓöÇΓöÇerrorΓöÇΓöÇΓöÇΓöÇcharacterΓöÇΓöÇΓö┤ΓöÇ
-
- You can use the #error directive as a safety check during compilation. For
- example, if your program uses preprocessor conditional compilation directives,
- (see Conditional Compilation), you can place #error directives in the source
- file to make the compilation fail if a section of the program is reached that
- should be bypassed.
-
- Example of #error directive
-
- Related Information
-
- o Conditional Compilation
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.8. #include ΓòÉΓòÉΓòÉ
-
- A preprocessor include directive causes the preprocessor to replace the
- directive with the contents of the specified file. A preprocessor #include
- directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇincludeΓöÇΓöÇΓö¼ΓöÇ " ΓöÇfile_nameΓöÇ " ΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- Γö£ΓöÇ < ΓöÇfile_nameΓöÇ > ΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇcharactersΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- If the file name is enclosed in double quotes, for example:
-
- #include "payroll.h"
- the preprocessor treats it as a user-defined file, and searches for the file in
- the following places in the order given:
-
- 1. The directory where the original .c source file resides.
-
- 2. Any directories specified using the inf./I compiler option (that have not
- been removed by the inf./Xc option). Directories specified in the ICC
- environment variable are searched before those specified on the command
- line.
-
- 3. Any directories specified using the INCLUDE environment variable, provided
- the inf./Xi option is not in effect.
-
- If the file name is enclosed in angle brackets, for example:
-
- #include <stdio.h>
- it is treated as a system-defined file, and the preprocessor searches the
- following places in the order given:
-
- 1. Any directories specified using the inf./I compiler option (that have not
- been removed by the inf./Xc option). Directories specified in the ICC
- environment variable are searched before those specified on the command
- line.
-
- 2. Any directories specified using the INCLUDE environment variable, provided
- the inf./Xi option is not in effect.
-
- Note: If the file name is fully qualified, the preprocessor searches only the
- directory specified by the name.
-
- The preprocessor resolves macros on a #include directive. After macro
- replacement, the resulting token sequence must consist of a file name enclosed
- in either double quotation marks or the characters < and >. For example:
-
- #define MONTH <july.h>
- #include MONTH
-
- Usage
- If there are a number of declarations used by several files, you can place all
- these definitions in one file and #include that file in each file that uses
- the definitions. For example, the following file defs.h contains several
- definitions and an inclusion of an additional file of declarations:
-
- /* defs.h */
- #define TRUE 1
- #define FALSE 0
- #define BUFFERSIZE 512
- #define MAX_ROW 66
- #define MAX_COLUMN 80
- int hour;
- int min;
- int sec;
- #include "mydefs.h"
-
- You can embed the definitions that appear in defs.h with the following
- directive:
-
- #include "defs.h"
-
- Related Information
-
- o #define
- o Preprocessor Directives
- o -- Reference include not found --
-
-
- ΓòÉΓòÉΓòÉ 5.9. Conditional Compilation ΓòÉΓòÉΓòÉ
-
- A preprocessor conditional compilation directive causes the preprocessor to
- conditionally suppress the compilation of portions of source code. Such
- directives test a constant expression or an identifier to determine which
- tokens the preprocessor should pass on to the compiler and which tokens should
- be ignored. The directives are:
-
- o #if
- o #ifdef
- o #ifndef
- o #elif
- o #else
- o #endif
-
- For each #if, #ifdef and #ifndef directive, there are zero or more #elif
- directives, zero or one #else directive and one matching #endif directive. All
- the matching directives are considered to be at the same nesting level.
-
- You can have nested conditional compilation directives.
-
- Example of Nested Conditional Compilation Directives
-
- Each directive controls the block immediately following it. A block consists
- of all the tokens starting on the line following the directive and ending at
- the next conditional compilation directive at the same nesting level.
-
- Each directive is processed in the order in which it is encountered. If an
- expression evaluates to zero, the block following the directive is ignored.
-
- When a block following a preprocessor directive is to be ignored, the tokens
- are examined only to identify preprocessor directives within that block so
- that the conditional nesting level can be determined. All tokens other than
- the name of the directive are ignored.
-
- Only the first block whose expression is non-zero is processed. The remaining
- blocks at that nesting level are ignored. If none of the blocks at that
- nesting level have been processed and there is a #else directive, then the
- block following the #else directive is processed. If none of the blocks at
- that nesting level have been processed and there is no #else directive, the
- entire nesting level is ignored.
-
- Examples of Conditional Compilation
-
- Related Information
-
- o #if
- o #ifdef
- o #ifndef
- o #elif
- o #else
- o #endif
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.9.1. #if, #elif ΓòÉΓòÉΓòÉ
-
- The #if and #elif directives compare the value of the expression to zero. All
- macros are expanded, any defined() expressions are processed and all remaining
- identifiers are replaced with the token 0.
-
- The preprocessor #if directive has the following form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇΓöÇifΓöÇΓöÇΓöÇconstant_expressionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
-
- The preprocessor #elif directive has the following form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇelifΓöÇΓöÇconstant_expressionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
-
- The expressions which are tested must be integer constant expressions which
- follow the following rules:
-
- o No casts are performed.
- o The expression can contain the defined unary operator. The constant
- expression can contain the unary operator defined. This operator can be
- used only with the preprocessor keyword #if. The following expressions
- evaluate to 1 if the identifier is defined in the preprocessor, otherwise to
- 0 (zero):
-
- defined identifier
- defined(identifier)
-
- o The expression can contain defined macros.
- o Any arithmetic is performed using long ints.
-
- If the constant expression evaluates to a nonzero value, the tokens that
- immediately follow the condition are passed on to the compiler.
-
- Example of #if and #elif Directives
-
- Related Information
-
- o Conditional Compilation
- o #ifdef
- o #ifndef
- o #endif
- o Preprocessor Directives
- o if
-
-
- ΓòÉΓòÉΓòÉ 5.9.2. #ifdef ΓòÉΓòÉΓòÉ
-
- The #ifdef directive checks for the existence of macro definitions.
-
- If the identifier specified is defined as a macro, the tokens that immediately
- follow the condition are passed on to the compiler.
-
- The preprocessor #ifdef directive has the following form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇifdefΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
-
- Example of #ifdef Directive
-
- Related Information
-
- o Conditional Compilation
- o #ifndef
- o #if, #elif
- o #else
- o #endif
- o #define
- o #undef
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.9.3. #ifndef ΓòÉΓòÉΓòÉ
-
- The #ifndef directive checks for the existence of macro definitions.
-
- If the identifier specified is not defined as a macro, the tokens that
- immediately follow the condition are passed on to the compiler.
-
- The preprocessor #ifndef directive has the following form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇifndefΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
-
- Example of #ifndef Directive
-
- Related Information
-
- o Conditional Compilation
- o #ifdef
- o #if, #elif
- o #else
- o #endif
- o #define
- o #undef
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.9.4. #else ΓòÉΓòÉΓòÉ
-
- If the condition specified in the #if, #ifdef, or #ifndef directive evaluates
- to 0 (zero), and the conditional compilation directive contains a preprocessor
- #else directive, the source text located between the preprocessor #else
- directive and the preprocessor #endif directive is selected by the preprocessor
- to be passed on to the compiler. The preprocessor #else directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇelseΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
-
- Example of #else Directive
-
- Related Information
-
- o Conditional Compilation
- o #if, #elif
- o #ifdef
- o #ifndef
- o #endif
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.9.5. #endif ΓòÉΓòÉΓòÉ
-
- The preprocessor #endif directive ends the conditional compilation directive.
- The preprocessor #endif directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇendifΓöÇΓöÇ
-
- Example of #endif
-
- Related Information
-
- o Conditional Compilation
- o #if, #elif
- o #ifdef
- o #ifndef
- o #else
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.10. #line ΓòÉΓòÉΓòÉ
-
- A preprocessor line control directive causes the compiler to view the line
- number of the next source line as the specified number. A preprocessor #line
- directive has the form:
-
- ΓöÇΓöÇ#ΓöÇΓöÇlineΓöÇΓöÇΓö¼ΓöÇΓöÇdecimal_constantΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- Γöé ΓööΓöÇΓöÇ"ΓöÇΓöÇfile_nameΓöÇΓöÇ"ΓöÇΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇcharactersΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- A file name specification enclosed in double quotation marks can follow the
- line number. If you specify a file name, the compiler views the next line as
- part of the specified file. If you do not specify a file name, the compiler
- views the next line as part of the current source file.
-
- The token sequence on a #line directive is subject to macro replacement. After
- macro replacement, the resulting character sequence must consist of a decimal
- constant, optionally followed by a file name enclosed in double quotation
- marks.
-
- Example of #line Directives
-
- Related Information
-
- o Preprocessor Directives
- o Decimal Constants
-
-
- ΓòÉΓòÉΓòÉ 5.11. # (Null Directive) ΓòÉΓòÉΓòÉ
-
- The null directive performs no action. The null directive consists of a single
- # on a line of its own.
-
- The null directive should not be confused with the # operator or the character
- that starts a preprocessor directive.
-
- Example of # (Null Statements)
-
- Related Information
-
- o Preprocessor Directives
- o Null Statement
-
-
- ΓòÉΓòÉΓòÉ 5.12. #pragma ΓòÉΓòÉΓòÉ
-
- A pragma is an implementation defined instruction to the compiler. It has the
- general form given below, where character sequence is a series of characters
- giving a specific compiler instruction and arguments, if any.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇΓöÇΓöÇΓöÇcharacter_sequenceΓöÇΓöÇΓö┤ΓöÇΓöÇ
-
- The character sequence on a pragma is not subject to macro substitutions. More
- than one pragma construct can be specified on a single #pragma directive.
-
- The following pragmas are available:
-
- o alloc_text
- o chars
- o checkout
- o comment
- o data_seg
- o entry
- o export
- o handler
- o import
- o info
- o langlvl
- o linkage
- o map
- o margins
- o pack
- o page
- o pagesize
- o seg16
- o sequence
- o skip
- o stack16
- o strings
- o subtitle
- o title
-
- Examples of #pragma directives
-
- Related Information
-
- o Preprocessor Directives
-
- Some #pragma directives must appear in a certain place in your source, or can
- appear a limited number of times. The following table lists the restrictions
- for #pragma directives.
-
- #pragma:font facename=default
- size=0x0. Restrictions
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :FONT Γöé RESTRICTION ON NUMBER Γöé RESTRICTION OF PLACEMENT Γöé
- Γöé FACENAME=ΓöéOOFIOCCURRENCES Γöé Γöé
- Γöé SIZE=15X1Γöé.#PRAGMA:FONT Γöé Γöé
- Γöé FACENAME=ΓöéEFAULT Γöé Γöé
- Γöé SIZE=0X0.Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé Once Γöé On the first :font Γöé
- Γöé facename=Γöéourier Γöé facename=Courier Γöé
- Γöé size=15x1Γöé.chars:font Γöé size=15x12.#pragma:font Γöé
- Γöé facename=Γöéefault Γöé facename=default size=0x0. Γöé
- Γöé size=0x0.Γöé Γöé directive, and before any Γöé
- Γöé Γöé Γöé code or directive (except Γöé
- Γöé Γöé Γöé "#line") Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé "compiler" and Γöé "copyright" directive must Γöé
- Γöé facename=Γöéo"timestamp" directives Γöé appear before any code Γöé
- Γöé size=15x1Γöé.canmappearnonly once Γöé Γöé
- Γöé facename=Γöéefault Γöé Γöé
- Γöé size=0x0.Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé Once for each source Γöé Γöé
- Γöé facename=Γöéofiler Γöé Γöé
- Γöé size=15x1Γöé.entry:font Γöé Γöé
- Γöé facename=Γöéefault Γöé Γöé
- Γöé size=0x0.Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé Once Γöé On the first :font Γöé
- Γöé facename=Γöéourier Γöé facename=Courier Γöé
- Γöé size=15x1Γöé.langlvl:font Γöé size=15x12.#pragma:font Γöé
- Γöé facename=Γöéefault Γöé facename=default size=0x0. Γöé
- Γöé size=0x0.Γöé Γöé directive, and before any Γöé
- Γöé Γöé Γöé code or directive (except Γöé
- Γöé Γöé Γöé "#line") Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé Once for each function Γöé Before any declaration of Γöé
- Γöé facename=Γöéourier Γöé or call to the function Γöé
- Γöé size=15x1Γöé.linkage:font Γöé Γöé
- Γöé facename=Γöéefault Γöé Γöé
- Γöé size=0x0.Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé :font Γöé Once Γöé Before any code Γöé
- Γöé facename=Γöéourier Γöé Γöé
- Γöé size=15x1Γöé.strings:font Γöé Γöé
- Γöé facename=Γöéefault Γöé Γöé
- Γöé size=0x0.Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 5.12.1. alloc_text ΓòÉΓòÉΓòÉ
-
- The #pragma alloc_text directive lets you group functions into different 32-bit
- code segments.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇalloc_textΓöÇΓöÇ(ΓöÇΓöÇcodesegmentΓöÇΓöÇ,ΓöÇΓöÇfunctionΓöÇΓö┤ΓöÇΓöÇ
-
- The codesegment is the name of the code segment in which you want to place
- function. You can specify any number of functions to be included in the named
- codesegment.
-
- Functions that are not grouped in a code segment by #pragma alloc_text are
- placed in the default 32-bit code segment CODE32. You can also use #pragma
- alloc_text to explicitly place functions in CODE32 by specifying it as the
- codesegment.
-
- Defining your own code segments allows you to organize functions in memory so
- that the working set requires fewer pages of memory. You can also specify
- attributes for each segment, such as execute-only. You specify attributes for
- code segments in a module definition (.DEF) file.
-
- For example, if you had both 32-bit and 16-bit functions that you wanted to
- call from other programs, you could place the functions in a single code
- segment as follows:
-
- #pragma alloc_text(mysegment, 32func, 16func, otherfunc)
-
- and use the following statement in the .DEF file for the program:
-
- SEGMENTS
- mysegment MIXED1632 ALIAS
-
- MIXED1632 specifies that the segment contains both 16-bit and 32-bit code, and
- ALIAS specifies that your code can be called from other 32-bit programs or from
- 16-bit far calls.
-
- For more information on attributes and how to specify them in a .DEF file, see
- the OS/2 2.0 Developer's Toolkit documentation for the LINK386 program.
-
- Related Information
-
- o -- Link Reference pdatseg not found --#pragma data_seg
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.2. chars ΓòÉΓòÉΓòÉ
-
- Specifies that the compiler is to treat all char objects as signed or unsigned.
- This pragma must appear before any statements in a file.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcharsΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇsignedΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇunsignedΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Characters
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.3. checkout ΓòÉΓòÉΓòÉ
-
- The #pragma checkout directive controls the diagnostic messages generated by
- the /Kn compiler options.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcheckoutΓöÇΓöÇ(ΓöÇΓö¼ΓöÇresumeΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
- ΓööΓöÇsuspendΓöÇΓöÿ
-
- It lets you suspend the diagnostics performed by the /Kn options during
- specific portions of your program, and then resume the same level of
- diagnostics at some later point in the file.
-
- Note: To provide greater control over diagnostic messages, the inf./Wgrp
- options have been added. The C/C++ for OS/2 C compiler will map the /Kn
- options to the appropriate /Wgrp option. It will also map #pragma
- checkout to inf.#pragma &pinfo.. The C/C++ for OS/2 C++ compiler will
- map the /Kn options, but will ignore #pragma checkout directives.
-
- Support for the /Kn options and #pragma checkout will eventually be removed
- from the C/C++ for OS/2 product. Therefore you should avoid using them in any
- new code.
-
- Nested #pragma checkout directives are allowed and behave as follows:
-
- /* Assume /Kpx has been specified */
- #pragma checkout(suspend) /* No diagnostics are performed */
- .
- .
- .
- #pragma checkout(suspend) /* No effect */
- .
- .
- .
- #pragma checkout(resume) /* No effect */
- .
- .
- .
- #pragma checkout(resume) /* Diagnostics continue */
-
- The #pragma checkout directive affects all /Kn options specified.
-
- Related Information
-
- o inf./Kn Options
- o Using the /Wgrp Diagnostic Options
- o inf.#pragma info
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.4. comment ΓòÉΓòÉΓòÉ
-
- Emits a comment into the object file.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcommentΓöÇΓöÇ(ΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇcompilerΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- Γöé Γö£ΓöÇΓöÇdateΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γöé Γöé Γöé
- Γöé ΓööΓöÇΓöÇtimestampΓöÇΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇcopyrightΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇuserΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇ,ΓöÇ"characters"ΓöÇΓöÿ
- The comment type can be:
-
- o compiler - the name and version of the compiler is emitted into the end of
- the generated object module.
- o date - the date and time of compilation is emitted into the end of the
- generated object module.
- o timestamp - the last modification date and time of the source is emitted
- into the end of the generated object module.
- o copyright - the text specified by the character field is placed by the
- compiler into the generated object module and is loaded into memory when the
- program is run.
- o user - the text specified by the character field is placed by the compiler
- into the generated object but is not loaded into memory when the program is
- run.
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.5. data_seg ΓòÉΓòÉΓòÉ
-
- The #pragma data_seg directive lets you place static and external variables in
- different 32-bit data segments.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇdata_segΓöÇΓöÇ(ΓöÇΓöÇdatasegmentΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
-
- All static and external variables defined after the #pragma data_seg directive
- are placed in the named datasegment until another #pragma data_seg statement is
- found or the end of the compilation unit is reached.
-
- Restriction Writable string literals used to initialize pointers are not
- placed in the named datasegment, but in the default 32-bit data
- segment (DATA32). To place a string in a particular data segment,
- use an array to initialize the string instead of a pointer. For
- example:
-
- char a[] = "mystring";
- instead of
-
- char *a = "mystring";
-
- Static and external variables defined before the first #pragma data_seg
- directive are placed in the default DATA32 segment, with the exception of
- uninitialized variables and variables explicitly initialized to zero, which
- are placed in the BSS32 segment. You can also use #pragma data_seg to
- explicitly place variables in the DATA32 segment by specifying no datasegment,
- for example, #pragma data_seg(). However, you cannot use the CONST or BSS32
- segments in a #pragma data_seg directive.
-
- Note: Because the variables in the BSS32 data segment are initialized at
- load-time and loaded separately from the rest of your program, they take less
- space in your executable file. If you place these variables in a different
- data segment, this optimization does not take place, and the size of your
- executable module will increase. For this reason, if the size of your
- executable file is critical to you, you should define all variables
- initialized to zero (either explicitly or by default) before the first
- occurrence of #pragma data_seg.
-
- Defining your own data segments allows you to group data depending on how it
- is used and to specify different attributes for different groups of data, such
- as when the data should be loaded. You specify attributes for data segments in
- a module definition (.DEF) file.
-
- For example, when you build a DLL, you might have one set of data that you
- want to make global for all processes that use the DLL, and a different set of
- data that you want to copy for each process. You could use #pragma data_seg to
- place the data in two different segments as follows:
-
- #pragma data_seg(globdata)
-
- static int counter1 = 0;
- static int counter2 = 0;
- .
- .
- .
- #pragma data_seg(instdata)
-
- static int instcount1 = 0;
- static int instcount2 = 0;
- .
- .
- .
-
- You could then place the following statements in the program's .DEF file:
-
- SEGMENTS
- globdata CLASS 'DATA' SHARED
- instdata CLASS 'DATA' NONSHARED
-
- SHARED specifies that the data in the globdata segment is global or shared by
- all processes that use the DLL. NONSHARED means that each process gets its own
- copy of the data in the instdata segment.
-
- For more information on attributes and how to specify them in a .DEF file, see
- the OS/2 2.0 Developer's Toolkit documentation for the LINK386 program.
-
- Related Information
-
- o -- Link Reference alloct not found --#pragma alloc_text
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.6. entry ΓòÉΓòÉΓòÉ
-
- The #pragma entry directive specifies the function to be used as the entry
- point for the application being built.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇentryΓöÇΓöÇ(ΓöÇΓöÇfunc_nameΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The func_name function must be in the same compilation unit as the #pragma
- entry directive, and must be a defined external function.
-
- Normally when an application is started, the OS/2 system calls the C library
- entry point. When you specify a different entry point using #pragma entry, the
- system calls that entry point and does not perform any C library initialization
- or termination. If you use #pragma entry, you must ensure that your executable
- file does not require library initialization or termination, or provide your
- own intialization and termination functions.
-
-
- ΓòÉΓòÉΓòÉ 5.12.7. export ΓòÉΓòÉΓòÉ
-
- The #pragma export directive declares that a DLL function is to be exported and
- specifies the name the function will be called by outside the DLL.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇexportΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ,ΓöÇΓöÇ> Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ,ΓöÇΓöÇordinalΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé ΓööΓöÇ"ΓöÇΓöÇexport_nameΓöÇΓöÇ"ΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The function is the name of the function in the DLL. The export_name is the
- name for function outside of the DLL. If no export_name is specified, function
- is used.
-
- The ordinal is the number of the function within the DLL. Another module can
- import function using either the export_name or the ordinal number. Ordinal
- numbers are described in more detail in the OS/2 2.0 Developer's Toolkit
- documentation.
-
- For example, the statements:
-
- int elaine(int);
- #pragma export(elaine, catherine, 4)
-
- declare that the function elaine is to be exported, and can be imported by
- another module using the name catherine or the ordinal number 4. See import for
- information on importing functions.
-
- You can also use the -- Link Reference expkey not found --_Export keyword to
- export a function. If you use the keyword, you cannot specify a different name
- or an ordinal for the exported function.
-
- If you use #pragma export to export your function, you may still need to
- provide an EXPORTS entry for that function in your module definition (.DEF)
- file. If your function has certain default characteristics, namely:
-
- o Has shared data
- o Has no I/O privileges
- o Is not resident
- it does not require an EXPORTS entry. If your function has characteristics
- other than the defaults, the only way you can specify them is with an EXPORTS
- entry in your .DEF file.
-
- Note: To create an import library for the DLL, you must either create it from
- the DLL itself or provide a .DEF file with an EXPORTS entry for every
- function, regardless of whether #pragma export is used.
-
-
- ΓòÉΓòÉΓòÉ 5.12.8. handler ΓòÉΓòÉΓòÉ
-
- The #pragma handler directive registers an exception handler for a function.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇhandlerΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
-
- The function is the name of the function for which the exception handler is to
- be registered. You should declare it before you use it in this directive.
-
- The #pragma handler directive generates the code at compile time to install the
- C/C++ for OS/2 exception handler, _Exception, before starting execution of the
- function. It also generates code to remove the exception handler at function
- exit.
-
- You must use this directive whenever you change library environments or enter a
- user-created DLL.
-
- Note: If you are using the subsystem libraries, the _Exception function is not
- provided. To use the #pragma handler directive in a subsystem, you must provide
- your own exception handler named _Exception. Otherwise, you must register and
- remove your own exception handlers using the OS/2 exception handler APIs
- described in the IBM OS/2 2.0 Programming Reference.
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.9. import ΓòÉΓòÉΓòÉ
-
- The #pragma import directive lets you import a function from a DLL using either
- an ordinal number or a different function name than it has in the DLL.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇimportΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ,ΓöÇΓöÇ> Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ,ΓöÇΓöÇ"ΓöÇΓöÇmod_nameΓöÇΓöÇ"ΓöÇΓöÇ,ΓöÇΓöÇordinalΓöÇΓöÇ> Γöé
- Γöé ΓööΓöÇ"ΓöÇΓöÇexternal_nameΓöÇΓöÇ"ΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The function is the name you use in your source to call the function. The
- external_name is the name of the function in the DLL. For C++ files, it can
- also be a function prototype. If external_name is not specified, it is assumed
- to be the same as function.
-
- Note: Both function and external_name must be unique names in each compilation
- unit, meaning each name can be defined only once.
-
- The mod_name is the name of the DLL containing the function, and ordinal
- indicates the position of the function within the DLL. Ordinal numbers are
- described in more detail in the OS/2 2.0 Developer's Toolkit documentation.
-
- The information provided by #pragma import is used at load time to locate the
- imported function. If ordinal is 0, the external_name is used to find the
- function. If ordinal is any other number, external_name is ignored and the
- function is located by number. It is usually faster to locate the function by
- number than by name.
-
- Using #pragma import decreases your link time because the linker does not
- require an import library to resolve external names. This #pragma directive is
- also useful for C++ programming because you do not have to use the
- fully-qualified function name to call an imported function.
-
- Note: You cannot use the ordinals provided in the OS/2 2.0 Developer's Toolkit
- header files with #pragma import. These ordinals are provided as C macros
- which cannot be used in #pragma directives.
-
-
- ΓòÉΓòÉΓòÉ 5.12.10. info ΓòÉΓòÉΓòÉ
-
- The #pragma &pinfo. directive controls the diagnostic messages generated by the
- /Wgrp compiler options.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇinfoΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇallΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé Γö£ΓöÇnoneΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γö£ΓöÇrestoreΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γöé <ΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ< Γöé Γöé
- Γöé ΓööΓöÇΓöÇΓö¼ΓöÇgrpΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ Γöé
- Γöé ΓööΓöÇnogrpΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- You can use this #pragma directive in place of the inf./Wgrp option to turn
- groups of diagnostics on or off. Specifying #pragma info(grp) causes all
- messages associated with that diagnostic group to be generated. Specifying
- #pragma info(nogrp) suppresses all messages associated with that group.
-
- For example, to generate messages for missing function prototypes and
- statements with no effect, but not for uninitialized variables, specify:
-
- #pragma info(pro, eff, nouni)
- The #pragma directive overrides any /Wgrp options stated on the command line.
-
- Use #pragma info(all) to turn on all diagnostic checking. You can also use
- #pragma info(none) to turn off all diagnostic suboptions for specific portions
- of your program. Specifying #pragma info(restore) restores the options that
- were in effect before the previous #pragma &info. directive. Because #pragma
- info operates like a stack, this does not necessarily mean the options given on
- the command line. If no options were previously in effect, #pragma
- info(restore) does nothing.
-
- The #pragma &pinfo. directive replaces the #pragma checkout directive for
- controlling diagnostics. The C/C++ for OS/2 compiler will map #pragma
- checkout(suspend) and #pragma checkout(resume) to #pragma info(none) and
- #pragma info(restore), respectively.
-
- The following list describes the groups of diagnostic messages controlled by
- each grp option:
-
- Group Diagnostics
- cmp Possible redundancies in unsigned comparisons
- cnd Possible redundancies or problems in conditional expressions.
- cns Operations involving constants.
- cnv Conversions.
- dcl Consistency of declarations.
- eff Statements with no effect.
- enu Consistency of enum variables.
- ext Unused external definitions.
- gen General diagnostics.
- got Usage of goto statements.
- ini Possible problems with initialization.
- lan Effects of the language level.
- obs Features that are obsolete.
- ord Unspecified order of evaluation.
- par Unused parameters.
- por Non-portable language constructs.
- ppc Possible problems with using the preprocessor.
- ppt Trace of preprocessor actions.
- pro Missing function prototypes.
- rea Code that cannot be reached.
- ret Consistency of return statements.
- trd Possible truncation or loss of data or precision.
- tru Variable names truncated by the compiler.
- uni Uninitialized variables
- use Unused auto and static variables.
-
- Related Information
-
- o inf.#pragma checkout
- o Using the /Wgrp Diagnostic Options
- o Debugging and Diagnostic Information Options
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.11. langlvl ΓòÉΓòÉΓòÉ
-
- The #pragma langlvl directive lets you select elements of the C/C++ for OS/2
- implementation to be allowed or disallowed.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé ΓöîΓöÇextendedΓöÇΓöÉ Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇlanglvlΓöÇΓöÇ(ΓöÇΓöÇΓö╝ΓöÇansiΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé Γö£ΓöÇsaaΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé ΓööΓöÇsaal2ΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- This directive can be specified only once in your source file, and must appear
- before any C code.
-
- The compiler defines preprocessor variables that are used in header files to
- define the language level. The options are as follows:
-
- ansi Defines the preprocessor variables __ANSI__ and __STDC__. Allows
- only language constructs that conform to ANSI C standards.
-
- saa Defines the preprocessor variables __SAA__ and __SAA_L2__. Allows
- only language constructs that conform to the most recent level of
- SAA C standards (currently Level 2). These include ANSI C
- constructs.
-
- saal2 Defines the preprocessor variable __SAA_L2__. Allows only
- language constructs that conform to SAA Level 2 C standards.
- These include ANSI C constructs.
-
- extended Defines the preprocessor variable __EXTENDED__. Allows ANSI and
- SAA C constructs and all C/C++ for OS/2 extensions.
-
- The default language level is extended.
-
- The language level can also be set using the inf./Sa, /S2:exph, and /Se
- compiler options. These options are described in Source Code Options.
-
- Related Information
-
- o inf./Sa, /S2, /Se, /Sm Options
- o Predefined Macros
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.12. linkage ΓòÉΓòÉΓòÉ
-
- The #pragma linkage directive identifies the linkage or calling convention used
- on a function call.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇlinkageΓöÇ(ΓöÇΓöÇidentifierΓöÇ,ΓöÇΓöÇ> Γöé
- Γöé Γöé
- Γöé ΓöîΓöÇoptlinkΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé >ΓöÇΓöÇΓö╝ΓöÇsystemΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ)ΓöÇΓöÇ>< Γöé
- Γöé Γö£ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇpascalΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γöé ΓööΓöÇfar32ΓöÇΓöÿ Γöé Γöé
- Γöé ΓööΓöÇfar16ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÿ Γöé
- Γöé Γö£ΓöÇcdeclΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γö£ΓöÇ_cdeclΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γö£ΓöÇpascalΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γö£ΓöÇ_pascalΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé Γö£ΓöÇfastcallΓöÇΓöÇΓöñ Γöé
- Γöé ΓööΓöÇ_fastcallΓöÇΓöÿ Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- The identifier identifies either the name of the function that will be given
- the particular linkage type or the name of a typedef that resolves to a
- function type. If identifier is a typedef, any function declared using
- identifier will be given the particular linkage type.
-
- The following example shows how to use a typedef to declare functions and
- pointers to functions of system linkage.
-
- #pragma linkage(functype, system)
-
- typedef int functype(int);
-
- functype f; /* f is a function with system linkage */
- functype *fp; /* fp is a pointer to a function with system linkage */
-
- The C/C++ for OS/2 default linkage is optlink, which is a convention specific
- to the C/C++ for OS/2 product. If your program calls OS/2 APIs, you must use
- the system linkage convention, which is standard for all OS/2 applications to
- call those APIs. If you include the system header files, the OS/2 APIs are
- automatically given system linkage. If you are developing device drivers, you
- should use the pascal convention. You should use the far32 version of pascal
- linkage if your calls will cross code segments. Note that far32 pascal linkage
- is only available when you specify the /Gr+ option to generate code that runs
- at ring zero.
-
- The far16 linkage conventions indicate that a function has a 16-bit linkage
- type. The cdecl and _cdecl options are equivalent. The underscore is optional,
- and is accepted for compatibility with C/2 cdecl linkage declarations.
- Similarly, pascal and _pascal are equivalent, and specify C/2 pascal linkage;
- fastcall and _fastcall specify Microsoft _fastcall linkage. If far16 is
- specified without a parameter, cdecl linkage is used.
-
- You can also use linkage keywords to specify the calling convention for a
- function. Linkage keywords are easier to use than is the #pragma linkage
- directive. They let you declare both the function and its linkage type in one
- statement. See Linkage Keywords for more information on these keywords.
-
- You can use compiler options to explicitly set the calling convention to
- optlink (inf./Mp) or to change the default to system linkage (inf./Ms). These
- options are described in Code Generation Options. If a linkage keyword or
- #pragma linkage directive is specified, it overrides the compiler option.
-
- For more information about calling conventions, see the IBM C/C++ for OS/2
- Programming Guide.
-
- Related Information
-
- o inf./Mp, /Ms Options
- o Linkage Keywords
- o typedef
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.13. map ΓòÉΓòÉΓòÉ
-
- The #pragma map directive associates an external name (name) with a C name
- (identifier).
-
- ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇmapΓöÇΓöÇΓöÇ(ΓöÇΓöÇidentifierΓöÇΓöÇ,ΓöÇΓöÇ"name"ΓöÇΓöÇ)ΓöÇΓöÇ
-
- The #pragma map directive is used with the C/C++ for OS/2 debugger, but is
- provided mostly for compatibility with IBM C/370. It is also useful when your
- program maps to functions created by other compilers that precede identifier
- and function names with underscores.
-
- When you use this directive, the identifier that appears in the source file is
- not visible in the object file. The external name will be used to represent
- the object in the object file.
-
- Enclose the variable name in double quotation marks. The name will be kept as
- specified on the #pragma map directive in mixed case. Multiple C identifiers
- can have the same map name. The compiler generates an error message if more
- than one map name is given to an identifier.
-
- The map name is an external name and must not be used in the source file to
- reference the object. If you try to use the map name in the source file, to
- access the corresponding C object, the compiler will treat the map name as a
- new identifier.
-
- Note: The C/C++ for OS/2 compiler does not implement the optional third
- parameter to #pragma map, as defined by the SAA standard.
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.14. margins ΓòÉΓòÉΓòÉ
-
- The #pragma margins directive specifies the columns in the input line that are
- to be scanned for input to the compiler.
-
- ΓöîΓöÇnomarginsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓö┤ΓöÇmarginsΓöÇΓöÇ(ΓöÇΓöÇΓöÇlΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇrΓöÇΓöÇΓöÇ)ΓöÇΓö┤ΓöÇ
-
- Use the #pragma margins directive if you want to have characters outside
- certain columns ignored in your source file. The compiler ignores any text in
- the source input that does not fall within the range specified in the
- directive.
-
- The variable l specifies the first column of the source input that is to be
- scanned, and must be between 1 and 65535, inclusive. The variable r specifies
- the last column of the source input that is to be scanned. It must be greater
- than or equal to l and less than or equal to 65535. An asterisk (*) can be
- assigned to r to indicate the last column of input.
-
- By default, the left margin is set to 1, and the right margin is set to
- infinity. If nomargins is specified, the default values are taken.
-
- The #pragma margins directive can be used with the #pragma sequence directive
- to specify the columns that are not to be scanned for sequence numbers. If the
- #pragma sequence settings do not fall within the #pragma margins settings, the
- sequence directive has no effect.
-
- You can also set margins using the inf./Sg option. This option is described in
- Source Code Options.
-
- Related Information
-
- o inf./Sg Option
- o inf.#pragma sequence
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.15. pack ΓòÉΓòÉΓòÉ
-
- The #pragma pack directive specifies the alignment rules to use for the
- structures and unions that follow it.
-
- ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇpackΓöÇΓöÇΓöÇ(Γö¼ΓöÇΓöÇΓöÇΓö¼)ΓöÇΓöÇ
- Γö£ΓöÇ1ΓöÇΓöñ
- Γö£ΓöÇ2ΓöÇΓöñ
- ΓööΓöÇ4ΓöÇΓöÿ
-
- The #pragma pack directive causes all structures and unions that follow it in
- the program to be packed along a 1-byte, 2-byte, or 4-byte (the system default)
- boundary, according to the value specified in the directive, until another
- #pragma pack directive changes the packing boundary.
-
- If no value is specified, packing is performed along the system default
- boundary unless the /Sp compiler option was used, in which case #pragma pack()
- causes packing to be performed along the boundary specified by inf./Sp. The /Sp
- option is described in Source Code Options.
-
- For example:
-
- #pragma pack(1)
-
- struct hester{ /* this structure will be packed */
- char philip; /* along 1-byte boundaries */
- int mark;
- };
- .
- .
- .
- #pragma pack(2)
-
- struct jeff{ /* this structure will be packed */
- float bill; /* along 2-byte boundaries */
- int *chris;
- }
- .
- .
- .
- #pragma pack()
-
- struct dor{ /* this structure will be packed */
- double stephen; /* along the default boundaries */
- long alex;
- }
-
- Note: Data types that are by default packed along boundaries smaller than that
- specified by #pragma pack are still aligned along the smaller boundaries. For
- example, type char is always aligned along a 1-byte boundary, regardless of the
- value of #pragma pack.
-
- The following chart describes how each data type is packed for each of the
- #pragma pack options:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé DATA TYPE Γöé :FONT FACENAME=COURIER Γöé
- Γöé Γöé SIZE=15X12.#PRAGMA:FONT Γöé
- Γöé Γöé FACENAME=DEFAULT SIZE=0X0. Γöé
- Γöé Γöé :FONT FACENAME=COURIER Γöé
- Γöé Γöé SIZE=15X12.PACK:FONT Γöé
- Γöé Γöé FACENAME=DEFAULT SIZE=0X0. Γöé
- Γöé Γöé VALUE Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé 1 Γöé 2 Γöé 4 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "char" Γöé 1 Γöé 1 Γöé 1 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "short" Γöé 1 Γöé 2 Γöé 2 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "int", "long" Γöé 1 Γöé 2 Γöé 4 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "float", Γöé 1 Γöé 2 Γöé 4 Γöé
- Γöé "double", "long Γöé Γöé Γöé Γöé
- Γöé double" Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé pointer Γöé 1 Γöé 2 Γöé 4 Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Important The #pragma pack directive does not have the same effect as
- declaring a structure as _Packed. The _Packed keyword removes all
- padding from between structure members, while the #pragma pack
- directive only specifies the boundaries to align the members on.
-
- Although _Packed is a SAA C construct, it is not portable to many systems. The
- C++ language does not support it. If portability and C++ support are important
- to you, avoid using the _Packed qualifier.
-
- For more information on packing structures, see _Packed Qualifier. Related
- Information
-
- o inf./Sp Option
- o _Packed Qualifier
- o Structures
- o Types
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.16. page ΓòÉΓòÉΓòÉ
-
- Skips n pages of the generated source listing. If n is not specified, the next
- page is started.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇpageΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.17. pagesize ΓòÉΓòÉΓòÉ
-
- The #pragma pagesize directive sets the number of lines per page to n for the
- generated source listing.
-
- ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇpagesizeΓöÇΓöÇΓöÇ(ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇ
- ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
-
- The value of n must be between 16 and 32767, inclusive. The default page length
- is 66 lines.
-
- You can also use the inf./Lp compiler option to set the listing page size. This
- option is described in Listing File Options.
-
- Related Information
-
- o inf./Lp Option
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.18. seg16 ΓòÉΓòÉΓòÉ
-
- The #pragma seg16 directive specifies that a data object will be shared between
- 16-bit and 32-bit processes.
-
- ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇseg16ΓöÇΓöÇ(ΓöÇΓöÇidentifierΓöÇΓöÇ)ΓöÇΓöÇ
-
- It causes the compiler to lay out the identifier in memory so that it does not
- cross a 64K boundary. The identifier can then be used in a 16-bit program.
-
- The identifier can be a typedef or a data object. #pragma seg16 For example:
-
- typedef struct foo foostr;
- #pragma seg16(foostr)
- foostr quux;
-
- uses the typedef foostr to declare quux as an object addressable by a 16-bit
- program.
-
- You can also use the inf./Gt compiler option to perform the equivalent of a
- #pragma seg16 for all variables in the program. The /Gt option is described in
- Code Generation Options.
-
- Note: If #pragma seg16 is used on variables of a structure type, the pointers
- inside that structure are not automatically qualified as usable by 16-bit
- programs. If you want the pointers in the structure qualified as such, you
- must declare them using the _Seg16 type qualifier. See _Seg16 Type Qualifier
- for more information about _Seg16.
-
- For more information on calling 16-bit programs, see the IBM C/C++ for OS/2
- Programming Guide.
-
- Related Information
-
- o inf./Gt Option
- o _Seg16 Type Qualifier
- o Structures
- o typedef
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.19. sequence ΓòÉΓòÉΓòÉ
-
- The #pragma sequence directive defines the section of the input line that is to
- contain sequence numbers.
-
- ΓöîΓöÇnosequenceΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓö┤ΓöÇsequenceΓöÇΓöÇ(ΓöÇΓöÇΓöÇlΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇrΓöÇΓöÇΓöÇ)ΓöÇΓö┤ΓöÇΓöÇ
-
- If you are using a source file produced on a system that uses sequence numbers,
- you can use this option to have the sequence numbers ignored.
-
- The variable l specifies the column number of the left-hand margin. The value
- of l must be between 1 and 65535 inclusive, and must also be less than or equal
- to the value of r. The variable r specifies the column number of the right-hand
- margin. The value of r must be greater than or equal to l and less than or
- equal to 65535. An asterisk (*) can be assigned to r to indicate the last
- column of the line.
-
- The default for this directive is nosequence, which specifies there are no
- sequence numbers.
-
- The #pragma sequence directive can be used with the #pragma margins directive
- to specify the columns that are not to be scanned. If the #pragma sequence
- settings do not fall within the #pragma margins settings, the sequence
- directive has no effect.
-
- You can also set sequence numbers using the inf./Sq option. This option is
- described in Source Code Options.
-
- Related Information
-
- o inf./Sq Option
- o -- Link Reference margins not found --#pragma margins
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.20. skip ΓòÉΓòÉΓòÉ
-
- Skips the next n lines of the generated source listing. The value of n must be
- a positive integer less than 255. If n is omitted, one line is skipped.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇskipΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
- o Listing File Options
-
-
- ΓòÉΓòÉΓòÉ 5.12.21. stack16 ΓòÉΓòÉΓòÉ
-
- The #pragma stack16 directive specifies the size of the stack to be allocated
- for calls to 16-bit routines.
-
- ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇstack16ΓöÇΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
- ΓööΓöÇsizeΓöÇΓöÿ
-
- The variable size is the size of the stack in bytes, and has a value between
- 512 and 65532. The size specified applies to any 16-bit functions called from
- that point until the end of the compilation unit, or until another #pragma
- stack16 directive is given.
-
- The default value is 4096 bytes (4K). Note that the 16-bit stack is taken from
- the 32-bit stack allocated for the thread calling the 16-bit code. The 32-bit
- stack is therefore reduced by the amount you specify with #pragma stack16. Make
- sure your 32-bit stack is large enough for both your 32-bit and 16-bit code.
-
- If the sum of the size, the number of bytes for parameters, and the number of
- local bytes in the function calling the 16-bit routine is greater than 65532,
- the actual stack size will be 65532 bytes less the number of parameter and
- local bytes. If the sum of the parameter bytes and local bytes alone is greater
- than 65532, no bytes will be allocated for calls to 16-bit routines.
-
- Related Information
-
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.22. strings ΓòÉΓòÉΓòÉ
-
- Specifies that the compiler may place strings into readonly memory or must
- place strings into writable memory. Strings are writable by default. This
- pragma must appear before any C code in a file.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇstringsΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇreadonlyΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇwriteableΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Strings
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.23. subtitle ΓòÉΓòÉΓòÉ
-
- Places the text specified by subtitle on all subsequent pages of the generated
- source listing.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇsubtitleΓöÇΓöÇ("ΓöÇΓöÇsubtitleΓöÇΓöÇ")ΓöÇΓöÇ
-
- Related Information
-
- o #pragma title
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 5.12.24. title ΓòÉΓòÉΓòÉ
-
- Places the text specified by title on all subsequent pages of the generated
- source listing.
-
- ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇtitleΓöÇΓöÇ("ΓöÇΓöÇtitleΓöÇΓöÇ")ΓöÇΓöÇ
-
- Related Information
-
- o #pragma subtitle
- o #pragma
- o Preprocessor Directives
-
-
- ΓòÉΓòÉΓòÉ 6. Using Compiler Options ΓòÉΓòÉΓòÉ
-
- The compiler options affect the compiling and linking of a program.
-
- This section describes the compiler options and tells you how to use them. The
- compiler options are divided into groups by function:
-
- o Output File Management Options
- o #include File Search Options
- o Listing File Options
- o Debugging and Diagnostic Information Options
- o Source Code Options
- o Preprocessor Options
- o Code Generation Options
- o Other Options
-
- Related Information
-
- o Specifying Compiler Options
- o Using Parameters with Compiler Options
- o Scope of Compiler Options
- o Related and Conflicting Options
- o Compiler Options for Presentation Manager Programming
-
-
- ΓòÉΓòÉΓòÉ 6.1. Specifying Compiler Options ΓòÉΓòÉΓòÉ
-
- The compiler options are not case sensitive, so you can specify the options in
- lower-, upper-, or mixed case. For example, you can specify the /Rn option as
- /rn. You can also substitute a dash (-) for the slash (/) preceding the option.
- For example, -Rn is equivalent to /Rn. Lower- and uppercase, dashes, and
- slashes can all be used on one command line, as in:
-
- icc /ls -RN -kA /Li prog.c
-
- You can specify compiler options in the following ways:
-
- o On the command line
-
- o In the ICC environment variable
-
- Options specified on the command line override the options in the ICC
- variable.
-
- o In the WorkFrame/2 environment.
-
-
- ΓòÉΓòÉΓòÉ 6.1.1. Using Parameters with Compiler Options ΓòÉΓòÉΓòÉ
-
- For all compiler options that take parameters, the following rules apply:
-
- o If a parameter is required, zero or more spaces may appear between the
- option and the parameter. For example, both /FeMyexe.exe and /Fe Myexe.exe
- are valid.
- o If a parameter is optional, no space is allowed between the option and
- parameter. For example, /FlMylist.lst is valid, but /Fl Mylist.lst is not.
-
- The syntax of the compiler options varies according to the type of parameter
- that is used with the option.
-
- Strings
- If the option has a string parameter, the string must be enclosed by a pair of
- double quotation marks if there are spaces in the string. For example,
- /V"Version 1.0" is correct. If there are no spaces in the string, the
- quotation marks are not necessary. For example, both /VNew and /V"New" are
- valid.
-
- If the string contains double quotation marks, precede them with the backslash
- (\) character. For example, if the string is abc"def, specify it on the
- command line as "abc\"def". This combination is the only escape sequence
- allowed within string options. Do not end a string with a backslash, as in
- "abc\".
-
- Do not put a space between the option and the string.
-
- File Names
- If you want to use a file that is in the current directory, specify only the
- file name. If the file you want to use is not in the current directory,
- specify the path and file name. If you do not specify an extension for the
- executable file, .EXE is assumed.
-
- If your file name contains spaces (as permitted by the High Performance File
- System(HPFS)) and any elements of the HPFS extended character set, the file
- name must be enclosed in double quotation marks. Do not put a space between
- the option and the file name or directory.
-
- Switches
- Some options are used with plus (+) or minus (-) signs. If you do not use
- either sign, the compiler processes the option as if you had used the + sign.
- When you use an option that uses switches, you can combine them. For example,
- the following two option specifications have the same result.
-
- /La+ /Le+ /Ls+ /Lx-
- /Laesx-
-
- Note that the - sign applies only to the switch immediately preceding it.
-
- Numbers
- When an option uses a number as a parameter, do not put a space between the
- option and the number. When an option uses two numbers as parameters, separate
- the numbers with a comma. For example,
-
- /Sg10,132
-
-
- ΓòÉΓòÉΓòÉ 6.2. Scope of Compiler Options ΓòÉΓòÉΓòÉ
-
- The compiler options are categorized according to how they are processed. The
- categories are:
-
- o Local
- o Global
- o Cumulative.
-
- Local
- A local option applies only to the source files that follow the option. The
- last, or rightmost, occurrence of these options is the one that is in effect
- for the source file or files that follow it.
-
- Removed the table listing all the options and made it like the online
- ("most options are local, unless we say they're global in the next
- section"). I don't think the list was that helpful anyways.
-
- Most compiler options are local. The exceptions are listed under the Global
- heading.
-
- Example of Local Options
-
- Note: The /D (define a preprocessor macro) is different, in that the first
- definition of a macro is the one that is used.
-
- Global
- A global option applies to all the source files on the command line. If a
- global option is specified more than once, the last occurrence of the option
- is the one in effect. A global option can follow the last file on the command
- line.
-
- The following options are global:
-
-
- /B /C /Fe /Fm /Gu /H /Mp /Ms /Ol /Q /Sd /Sn
-
- Cumulative
- The local option /I and the global option /B have a special characteristic.
- Each time you specify one of them, the parameters you specify are appended to
- the parameters previously stated.
-
- Example of Cumulative Options
-
- Related Information
-
- o Specifying Compiler Options
- o Related and Conflicting Options
- o Compiler Options for Presentation Manager Programming
- o Output File Management Options
- o #include File Search Options
- o Listing File Options
- o Debugging and Diagnostic Information Options
- o Source Code Options
- o Preprocessor Options
- o Code Generation Options
- o Other Options
-
-
- ΓòÉΓòÉΓòÉ 6.2.1. Related and Conflicting Options ΓòÉΓòÉΓòÉ
-
- Related Options
- Some options are required with other options:
-
- o If any of the /Le, /Li, or /Lj options is specified, the /Ls option must
- also be specified.
-
- o If the /Gr option is specified, the /Rn option must also be specified.
-
- Conflicting Options
- Some options are incompatible with other options. If options specified on the
- command line are in conflict, the following rules apply:
-
- o The /Fc option take precedence over the /Fa, /Fm, /Fo, /P, /Pc, /Pd and /Pe
- options.
-
- o The /P, /Pc, /Pd, and /Pe options take precedence over the /Fa, /Fl, /Fm,
- and /Fo options, the /Fw, /Gu, and /Ol options, and all listing file (/L)
- options.
-
- o The /Rn option takes precedence over the /Gm, /Sh, and /Sv options.
-
- o The /Fo- option takes precedence over the /Ti option.
-
- o The /C+ option takes precedence over the /Fm+ option.
-
- Related Information
-
- o Specifying Compiler Options
- o Compiler Options for Presentation Manager Programming
- o Output File Management Options
- o #include File Search Options
- o Listing File Options
- o Debugging and Diagnostic Information Options
- o Source Code Options
- o Preprocessor Options
- o Code Generation Options
- o Other Options
-
-
- ΓòÉΓòÉΓòÉ 6.2.2. Compiler Options for Presentation Manager Programming ΓòÉΓòÉΓòÉ
-
- If you are using the C/C++ for OS/2 product to develop PM applications, you
- will probably want to use the following options:
-
- Option Description
-
- /Se Allow all C/C++ for OS/2 language extensions (this is the default).
-
- /Gm Use the multithread libraries.
-
- /Gs- Generate stack probes.
-
- /Wgen Produce basic diagnostic messages (including messages about
- nonprototype function declarations).
-
- Related Information
-
- o Specifying Compiler Options
- o Source Code Options
- o Code Generation Options
- o Debugging and Diagnostic Information Options
- o Related and Conflicting Options
-
-
- ΓòÉΓòÉΓòÉ 6.3. Output File Management Options ΓòÉΓòÉΓòÉ
-
- Use the options listed in this section to control the files that the compiler
- produces.
-
- Note: You do not have to specify the plus symbol (+), when specifying an
- option. For example, the forms /Fa+ and /Fa are equivalent.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Output File Management Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fa[Γö╝Γöé-]" Γöé Produce and Γöé "/Fa-" Γöé "/Fa[Γö╝]" Γöé
- Γöé Γöé name an assem- Γöé Γöé Γöé
- Γöé "/Faname" Γöé bler listing Γöé Do not create Γöé Create an Γöé
- Γöé Γöé file that has Γöé an assembler Γöé assembler Γöé
- Γöé Γöé the source Γöé listing file. Γöé listing file Γöé
- Γöé Γöé code as com- Γöé Γöé that has the Γöé
- Γöé Γöé ments. Γöé Γöé same name as Γöé
- Γöé Γöé Γöé Γöé the source Γöé
- Γöé Γöé NOTE: This Γöé Γöé file, with Γöé
- Γöé Γöé listing is not Γöé Γöé the extension Γöé
- Γöé Γöé guaranteed to Γöé Γöé ".ASM". Γöé
- Γöé Γöé compile. Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/Fa"name Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Create the Γöé
- Γöé Γöé Γöé Γöé listing file Γöé
- Γöé Γöé Γöé Γöé name".ASM". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fb[Γö╝Γöé-]" Γöé Produce a Γöé "/Fb-" Γöé "/Fb[Γö╝]" Γöé
- Γöé Γöé browser Γöé Γöé Γöé
- Γöé Γöé listing file. Γöé Do not create Γöé Create a Γöé
- Γöé Γöé Γöé a browser Γöé browser Γöé
- Γöé Γöé Γöé listing file. Γöé listing file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fc[Γö╝Γöé-]" Γöé Perform syntax Γöé "/Fc-" Γöé "/Fc[Γö╝]" Γöé
- Γöé Γöé check only. Γöé Γöé Γöé
- Γöé Γöé Γöé Compile and Γöé Do only a Γöé
- Γöé Γöé Γöé produce output Γöé syntax check. Γöé
- Γöé Γöé Γöé files Γöé The only Γöé
- Γöé Γöé Γöé according to Γöé output files Γöé
- Γöé Γöé Γöé other options. Γöé you can Γöé
- Γöé Γöé Γöé Γöé produce when Γöé
- Γöé Γöé Γöé Γöé this option Γöé
- Γöé Γöé Γöé Γöé is in effect Γöé
- Γöé Γöé Γöé Γöé are listing Γöé
- Γöé Γöé Γöé Γöé (".LST") Γöé
- Γöé Γöé Γöé Γöé files. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fd[Γö╝Γöé-]" Γöé Specify work Γöé "/Fd-" Γöé "/Fd[Γö╝]" Γöé
- Γöé Γöé file storage Γöé Γöé Γöé
- Γöé Γöé area. Γöé Store internal Γöé Store Γöé
- Γöé Γöé Γöé work files in Γöé internal work Γöé
- Γöé Γöé Γöé shared memory. Γöé files on disk Γöé
- Γöé Γöé Γöé Γöé in the direc- Γöé
- Γöé Γöé Γöé Γöé tory speci- Γöé
- Γöé Γöé Γöé Γöé fied by the Γöé
- Γöé Γöé Γöé Γöé TMP variable. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fename" Γöé Specify name Γöé Give the exe- Γöé "/Fename" Γöé
- Γöé Γöé of executable Γöé cutable file Γöé Γöé
- Γöé Γöé file or DLL. Γöé the same name Γöé Name the exe- Γöé
- Γöé Γöé Γöé as the first Γöé cutable file Γöé
- Γöé Γöé Γöé source file, Γöé "name.EXE" or Γöé
- Γöé Γöé Γöé with the Γöé "name.DLL". Γöé
- Γöé Γöé Γöé extension Γöé Γöé
- Γöé Γöé Γöé ".EXE" or Γöé Γöé
- Γöé Γöé Γöé ".DLL". Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fi[Γö╝Γöé-]" Γöé Control cre- Γöé "/Fi-" Γöé "/Fi[Γö╝]" Γöé
- Γöé Γöé ation of pre- Γöé Γöé Γöé
- Γöé Γöé compiled Γöé Do not create Γöé Create a pre- Γöé
- Γöé Γöé header files. Γöé a precompiled Γöé compiled Γöé
- Γöé Γöé Γöé header file. Γöé header file Γöé
- Γöé Γöé Γöé Γöé if none Γöé
- Γöé Γöé Γöé Γöé exists or if Γöé
- Γöé Γöé Γöé Γöé the existing Γöé
- Γöé Γöé Γöé Γöé one is out- Γöé
- Γöé Γöé Γöé Γöé of-date. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fl[Γö╝Γöé-]" Γöé Produce and Γöé "/Fl-" Γöé "/Fl[Γö╝]" Γöé
- Γöé Γöé name a listing Γöé Γöé Γöé
- Γöé "/Flname" Γöé file. Γöé Do not create Γöé Give the Γöé
- Γöé Γöé Γöé a listing Γöé listing the Γöé
- Γöé Γöé Γöé file. Γöé same file Γöé
- Γöé Γöé Γöé Γöé name as the Γöé
- Γöé Γöé Γöé Γöé source file, Γöé
- Γöé Γöé Γöé Γöé with the Γöé
- Γöé Γöé Γöé Γöé extension Γöé
- Γöé Γöé Γöé Γöé ".LST". Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/Flname" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Name the Γöé
- Γöé Γöé Γöé Γöé listing file Γöé
- Γöé Γöé Γöé Γöé "name.LST". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fm[Γö╝Γöé-]" Γöé Produce a Γöé "/Fm-" Γöé "/Fm[Γö╝]" Γöé
- Γöé "/Fmname" Γöé linker map Γöé Γöé Γöé
- Γöé Γöé file. Γöé Do not create Γöé Create a Γöé
- Γöé Γöé Γöé a map file. Γöé linker map Γöé
- Γöé Γöé NOTE: When Γöé Γöé file with the Γöé
- Γöé Γöé used with the Γöé Γöé same file Γöé
- Γöé Γöé "/C" option, Γöé Γöé name as the Γöé
- Γöé Γöé the "/Fm" Γöé Γöé source file, Γöé
- Γöé Γöé option has no Γöé Γöé with the Γöé
- Γöé Γöé effect. Γöé Γöé extension Γöé
- Γöé Γöé Γöé Γöé ".MAP". Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/Fm"name Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Create map Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé "name.MAP". Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé NOTE: Use Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé "/B"/map"" Γöé
- Γöé Γöé Γöé Γöé option to get Γöé
- Γöé Γöé Γöé Γöé a more Γöé
- Γöé Γöé Γöé Γöé detailed map Γöé
- Γöé Γöé Γöé Γöé file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fo[Γö╝Γöé-]" Γöé Create an Γöé "/Fo[Γö╝]" Γöé "/Fo-" Γöé
- Γöé Γöé object file. Γöé Γöé Γöé
- Γöé "/Fo"name Γöé Γöé Create an Γöé Do not create Γöé
- Γöé Γöé Specify name Γöé object file, Γöé an object Γöé
- Γöé Γöé of object Γöé and give it Γöé file. Γöé
- Γöé Γöé file. Γöé the same name Γöé Γöé
- Γöé Γöé Γöé as the source Γöé "/Foname" Γöé
- Γöé Γöé Γöé file, with the Γöé Γöé
- Γöé Γöé Γöé extension Γöé Create object Γöé
- Γöé Γöé Γöé ".OBJ". Γöé file Γöé
- Γöé Γöé Γöé Γöé name".OBJ". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ft[Γö╝Γöé-]" Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé "/Ftdir" Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Fw[Γö╝Γöé-]" Γöé Control gener- Γöé "/Fw-" Γöé "/Fw[Γö╝]" Γöé
- Γöé Γöé ation and use Γöé Γöé Γöé
- Γöé "/Fwname" Γöé of interme- Γöé Perform Γöé Create inter- Γöé
- Γöé Γöé diate code Γöé regular compi- Γöé mediate code Γöé
- Γöé Γöé files. Γöé lation; do not Γöé files only; Γöé
- Γöé Γöé Γöé save interme- Γöé do not com- Γöé
- Γöé Γöé Γöé diate code Γöé plete compi- Γöé
- Γöé Γöé Γöé files. Γöé lation. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/Fwname" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Create inter- Γöé
- Γöé Γöé Γöé Γöé mediate code Γöé
- Γöé Γöé Γöé Γöé files only Γöé
- Γöé Γöé Γöé Γöé and name them Γöé
- Γöé Γöé Γöé Γöé "name.w, Γöé
- Γöé Γöé Γöé Γöé name.wh", and Γöé
- Γöé Γöé Γöé Γöé "name.wi"; do Γöé
- Γöé Γöé Γöé Γöé not complete Γöé
- Γöé Γöé Γöé Γöé compilation. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- File Names and Extensions
- For the file management options that take a file name as a parameter, If you
- do not specify a file extension, the default extension will be used For
- example, if you specify /Fldale the listing file will be called dale.lst.
- Although you can specify an extension of your own choosing, it is advisable to
- use the default extensions. If you use an option without using an optional
- name parameter, the name of the following C source file and the default
- extension is used, with the exception of the /Fm option. If you do not
- specify a name with /Fm, the name of the first file given on the command line
- is used, with the default extension .map.
-
- Note: If you use the /Fe option, you must specify a name or a path for the
- file. If you specify only a path, the file will have the same name as
- the first source file on the command line, with the path specified.
-
- Examples of File Management Options
-
- Related Information
-
- o Specifying Compiler Options
- o Listing File Options
-
-
- ΓòÉΓòÉΓòÉ 6.4. #include File Search Options ΓòÉΓòÉΓòÉ
-
- Use these options to control which paths are searched when the compiler looks
- for #include files. The paths that are searched are the result of the
- information in the INCLUDE environment variable and in ICC, combined with how
- you use the following compiler options.
-
- &ipfisyn. root=include.include #include
-
- #include:font facename=default
- size=0x0. File Search Options
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ipath[;path]"Γöé Specify :font Γöé Search direc- Γöé "/I"path[;pathΓöé
- Γöé Γöé facename=CouriΓöértory of Γöé Search Γöé
- Γöé Γöé size=15x12.#inΓöélsourcenfile Γöé path[;path]. Γöé
- Γöé Γöé facename=defauΓöét(for user Γöé Γöé
- Γöé Γöé size=0x0. Γöé files only), Γöé Γöé
- Γöé Γöé search Γöé then search Γöé Γöé
- Γöé Γöé path(s). Γöé paths given Γöé Γöé
- Γöé Γöé Γöé in the Γöé Γöé
- Γöé Γöé Γöé INCLUDE envi- Γöé Γöé
- Γöé Γöé Γöé ronment vari- Γöé Γöé
- Γöé Γöé Γöé able. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Xc[Γö╝Γöé-]" Γöé Specify Γöé "/Xc-" Γöé "/Xc[Γö╝]" Γöé
- Γöé Γöé whether to Γöé Search paths Γöé Do not search Γöé
- Γöé Γöé search paths Γöé specified Γöé paths speci- Γöé
- Γöé Γöé specified Γöé using "/I". Γöé fied using Γöé
- Γöé Γöé using "/I". Γöé Γöé "/I". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Xi[Γö╝Γöé-]" Γöé Control Γöé "/Xi-" Γöé "/Xi[Γö╝]" Γöé
- Γöé Γöé INCLUDE envi- Γöé Search the Γöé Do not search Γöé
- Γöé Γöé ronment vari- Γöé paths speci- Γöé the paths Γöé
- Γöé Γöé able search Γöé fied in the Γöé specified by Γöé
- Γöé Γöé paths. Γöé INCLUDE envi- Γöé the INCLUDE Γöé
- Γöé Γöé Γöé ronment vari- Γöé environment Γöé
- Γöé Γöé Γöé able. Γöé variable. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The /I option must be followed by one or more directory names. A space may be
- included between /I and the directory name. If more than one directory is
- specified, separate the directory names with a semicolon.
-
- If you use the /I option more than once, the directories you specify are
- appended to the directories you previously specified.
-
- If you specify search paths using /I in both the ICC environment variable and
- on the command line, all the paths are searched. The paths specified in ICC are
- searched before those specified on the command line.
-
- Note: Once you use the /Xc option, the paths previously specified by using /I
- cannot be recovered. You have to use the /I option again if you want to
- reuse the paths canceled by /Xc.
-
- The /Xi option has no effect on the /Xc and /I options.
-
- Related Information
-
- o #include
- o -- Reference include not found --
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.5. Listing File Options ΓòÉΓòÉΓòÉ
-
- The options listed below allow you to control whether or not a listing file is
- produced as well as the type of information in the listing and the appearance
- of the file.
-
- Note: The following options only modify the appearance of a listing; they do
- not cause a listing to be produced. Use them with one of the other listing file
- options or the /Fl option to produce a listing.
-
- /Le /Li /Lj /Lp /Lt /Lu
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Listing Output Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/L[Γö╝Γöé-]" Γöé Produce a Γöé "/L-" Γöé "/L[Γö╝]" Γöé
- Γöé Γöé listing file. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not produce Γöé Produce a Γöé
- Γöé Γöé Γöé a listing Γöé listing file Γöé
- Γöé Γöé Γöé file. Γöé with only a Γöé
- Γöé Γöé Γöé Γöé prolog and Γöé
- Γöé Γöé Γöé Γöé error mes- Γöé
- Γöé Γöé Γöé Γöé sages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/La[Γö╝Γöé-]" Γöé Include a Γöé "/La-" Γöé "/La[Γö╝]" Γöé
- Γöé Γöé layout of all Γöé Γöé Γöé
- Γöé Γöé referenced Γöé Do not include Γöé Include a Γöé
- Γöé Γöé "struct" and Γöé a layout. Γöé layout. Γöé
- Γöé Γöé "union" vari- Γöé Γöé Γöé
- Γöé Γöé ables, with Γöé Γöé Γöé
- Γöé Γöé offsets and Γöé Γöé Γöé
- Γöé Γöé lengths. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lb[Γö╝Γöé-]" Γöé Include a Γöé "/Lb-" Γöé "/Lb[Γö╝]" Γöé
- Γöé Γöé layout of all Γöé Γöé Γöé
- Γöé Γöé "struct" and Γöé Do not include Γöé Include a Γöé
- Γöé Γöé "union" vari- Γöé a layout. Γöé layout. Γöé
- Γöé Γöé ables. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Le[Γö╝Γöé-]" Γöé Expand all Γöé "/Le-" Γöé "/Le[Γö╝]" Γöé
- Γöé Γöé macros. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not expand Γöé Expand Γöé
- Γöé Γöé Γöé macros. Γöé macros. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lf[Γö╝Γöé-]" Γöé Set all Γöé "/Lf-" Γöé "/Lf[Γö╝]" Γöé
- Γöé Γöé listing Γöé Γöé Γöé
- Γöé Γöé options on or Γöé Set all Γöé Set all Γöé
- Γöé Γöé off. Γöé listing Γöé listing Γöé
- Γöé Γöé Γöé options off. Γöé options on. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Li[Γö╝Γöé-]" Γöé Expand user Γöé "/Li-" Γöé "/Li[Γö╝]" Γöé
- Γöé Γöé :font Γöé Γöé Γöé
- Γöé Γöé facename=CourieΓöé Do not expand Γöé Expand user Γöé
- Γöé Γöé size=15x12.#incΓöéuusero:font Γöé :font Γöé
- Γöé Γöé facename=defaulΓöé facename=CourieΓöé facename=CouriΓöér
- Γöé Γöé size=0x0. Γöé size=15x12.#incΓöéusize=15x12.#inΓöélude:font
- Γöé Γöé files. Γöé facename=defaulΓöé facename=defauΓöét
- Γöé Γöé Γöé size=0x0. Γöé size=0x0. Γöé
- Γöé Γöé Γöé files. Γöé files. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lj[Γö╝Γöé-]" Γöé Expand user Γöé "/Lj-" Γöé "/Lj[Γö╝]" Γöé
- Γöé Γöé and system Γöé Γöé Γöé
- Γöé Γöé :font Γöé Do not expand Γöé Expand user Γöé
- Γöé Γöé facename=CourieΓöé user and Γöé and system Γöé
- Γöé Γöé size=15x12.#incΓöéusystemt:font Γöé :font Γöé
- Γöé Γöé facename=defaulΓöé facename=CourieΓöé facename=CouriΓöér
- Γöé Γöé size=0x0. Γöé size=15x12.#incΓöéusize=15x12.#inΓöélude:font
- Γöé Γöé files. Γöé facename=defaulΓöé facename=defauΓöét
- Γöé Γöé Γöé size=0x0. Γöé size=0x0. Γöé
- Γöé Γöé Γöé files. Γöé files. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lpnum" Γöé Set page Γöé "/Lp66" Γöé "/Lpnum" Γöé
- Γöé Γöé length. Γöé Γöé Γöé
- Γöé Γöé Γöé Set page Γöé Specify num Γöé
- Γöé Γöé Γöé length to 66 Γöé lines per Γöé
- Γöé Γöé Γöé lines. Γöé page of Γöé
- Γöé Γöé Γöé Γöé listing. num Γöé
- Γöé Γöé Γöé Γöé must be Γöé
- Γöé Γöé Γöé Γöé between 15 Γöé
- Γöé Γöé Γöé Γöé and 65535 Γöé
- Γöé Γöé Γöé Γöé inclusive. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ls[Γö╝Γöé-]" Γöé Include the Γöé "/Ls-" Γöé "/Ls[Γö╝]" Γöé
- Γöé Γöé source code. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not include Γöé Include the Γöé
- Γöé Γöé Γöé the source Γöé source code. Γöé
- Γöé Γöé Γöé code. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lt"string""Γöé Set title Γöé "/Lt""" Γöé "/Lt"string"" Γöé
- Γöé Γöé string. Γöé Γöé Γöé
- Γöé Γöé Γöé Set no title Γöé Set title Γöé
- Γöé Γöé Γöé (null string). Γöé string to Γöé
- Γöé Γöé Γöé Γöé string. Γöé
- Γöé Γöé Γöé Γöé Maximum Γöé
- Γöé Γöé Γöé Γöé string length Γöé
- Γöé Γöé Γöé Γöé is 256 char- Γöé
- Γöé Γöé Γöé Γöé acters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lu"string""Γöé Set subtitle Γöé "/Lu""" Γöé "/Lu"string"" Γöé
- Γöé Γöé string. Γöé Γöé Γöé
- Γöé Γöé Γöé Set no sub- Γöé Set subtitle Γöé
- Γöé Γöé Γöé title (null Γöé string to Γöé
- Γöé Γöé Γöé string). Γöé string. Γöé
- Γöé Γöé Γöé Γöé Maximum Γöé
- Γöé Γöé Γöé Γöé string length Γöé
- Γöé Γöé Γöé Γöé is 256 char- Γöé
- Γöé Γöé Γöé Γöé acters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Lx[Γö╝Γöé-]" Γöé Generate a Γöé "/Lx-" Γöé "/Lx[Γö╝]" Γöé
- Γöé Γöé cross- Γöé Γöé Γöé
- Γöé Γöé reference Γöé Do not gen- Γöé Generate a Γöé
- Γöé Γöé table of ref- Γöé erate a cross- Γöé cross- Γöé
- Γöé Γöé erenced vari- Γöé reference Γöé reference Γöé
- Γöé Γöé able, Γöé table. Γöé table. Γöé
- Γöé Γöé structure, and Γöé Γöé Γöé
- Γöé Γöé function names Γöé Γöé Γöé
- Γöé Γöé that shows Γöé Γöé Γöé
- Γöé Γöé line numbers Γöé Γöé Γöé
- Γöé Γöé where names Γöé Γöé Γöé
- Γöé Γöé are declared. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ly[Γö╝Γöé-]" Γöé Generate a Γöé "/Ly-" Γöé "/Ly[Γö╝]" Γöé
- Γöé Γöé cross- Γöé Γöé Γöé
- Γöé Γöé reference Γöé Do not gen- Γöé Generate a Γöé
- Γöé Γöé table of all Γöé erate a cross- Γöé cross- Γöé
- Γöé Γöé variable, Γöé reference Γöé reference Γöé
- Γöé Γöé structure, and Γöé table. Γöé table. Γöé
- Γöé Γöé function Γöé Γöé Γöé
- Γöé Γöé names. Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Note: You can also specify titles using the #pragma title and subtitle
- directives, but these titles do not appear on the first page of the listing
- output.
-
- Related Information
-
- o inf.#pragma title
- o inf.#pragma subtitle
- o Output File Management Options
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.6. Debugging and Diagnostic Information Options ΓòÉΓòÉΓòÉ
-
- The options listed here are useful for debugging your programs.
-
- The information generated by the C/C++ for OS/2 debugger and the /Kn and /Wgrp
- options is provided to help you diagnose problems in your code. Do not use the
- debugging information as a programming interface.
-
- 1. The /Ti option is not recommended for use with /O[+].
-
- 2. The /Wgrp options and /Kn options generate the same messages. The /Wgrp
- options give you greater control over the types of messages generated.
- The /Kn options are provided for compatibility with C Set/2 V1.0 only, and
- are mapped for you to the correct /Wgrp options.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Debugging Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ka[+Γöé-]" Γöé Control mes- Γöé "/Ka-" Γöé "/Ka[+]" Γöé
- Γöé Γöé sages about Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé variable Γöé sages about Γöé sages about Γöé
- Γöé Γöé assignments Γöé assignments Γöé inappropriate Γöé
- Γöé Γöé that can Γöé that may cause Γöé assignments Γöé
- Γöé Γöé result in a Γöé a loss of pre- Γöé of "long" Γöé
- Γöé Γöé loss of preci- Γöé cision. Γöé values. Γöé
- Γöé Γöé sion. Γöé Γöé Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé "/Wtrd" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kb[+Γöé-]" Γöé Control mes- Γöé "/Kb-" Γöé "/Kb[+]" Γöé
- Γöé Γöé sages about Γöé Suppress basic Γöé Produce basic Γöé
- Γöé Γöé basic diagnos- Γöé diagnostic Γöé diagnostic Γöé
- Γöé Γöé tics generated Γöé messages. Γöé messages. Γöé
- Γöé Γöé by "/K" Γöé Γöé Γöé
- Γöé Γöé options. Γöé Γöé Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé "/Wgen" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé NOTE: Many of Γöé Γöé Γöé
- Γöé Γöé the messages Γöé Γöé Γöé
- Γöé Γöé considered Γöé Γöé Γöé
- Γöé Γöé general diag- Γöé Γöé Γöé
- Γöé Γöé nostics in the Γöé Γöé Γöé
- Γöé Γöé C Set/2 V1.0 Γöé Γöé Γöé
- Γöé Γöé product are Γöé Γöé Γöé
- Γöé Γöé now contolled Γöé Γöé Γöé
- Γöé Γöé by a specific Γöé Γöé Γöé
- Γöé Γöé /W option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kc[Γö╝Γöé-]" Γöé Control pre- Γöé "/Kc-" Γöé "/Kc[Γö╝]" Γöé
- Γöé Γöé processor Γöé Suppress pre- Γöé Produce pre- Γöé
- Γöé Γöé warning mes- Γöé processor Γöé processor Γöé
- Γöé Γöé sages. Γöé warning mes- Γöé warning mes- Γöé
- Γöé Γöé Maps to the Γöé sages. Γöé sages. Γöé
- Γöé Γöé "/Wppc" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ke[Γö╝Γöé-]" Γöé Control mes- Γöé "/Ke-" Γöé "/Ke[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé "enum" usage. Γöé sages about Γöé sages about Γöé
- Γöé Γöé Maps to the Γöé "enum" usage. Γöé "enum" usage. Γöé
- Γöé Γöé "/Wenu" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kf[Γö╝Γöé-]" Γöé Set all diag- Γöé "/Kf-" Γöé "/Kf[Γö╝]" Γöé
- Γöé Γöé nostic mes- Γöé Γöé Γöé
- Γöé Γöé sages options Γöé Set all diag- Γöé Set all diag- Γöé
- Γöé Γöé on or off. Γöé nostic mes- Γöé nostic mes- Γöé
- Γöé Γöé Maps to the Γöé sages options Γöé sages options Γöé
- Γöé Γöé "/Wall" Γöé off. Γöé on. Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kg[Γö╝Γöé-]" Γöé Control mes- Γöé "/Kg-" Γöé "/Kg[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Γöé Γöé
- Γöé Γöé the appearance Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé and usage of Γöé sages about Γöé sages about Γöé
- Γöé Γöé "goto" state- Γöé "goto" state- Γöé "goto" state- Γöé
- Γöé Γöé ments. Γöé ments. Γöé ments. Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé "/Wgot" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ki[Γö╝Γöé-]" Γöé Control mes- Γöé "/Ki-" Γöé "/Ki[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Γöé Γöé
- Γöé Γöé variables that Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé are not Γöé sages about Γöé sages about Γöé
- Γöé Γöé explicitly Γöé uninitialized Γöé uninitialized Γöé
- Γöé Γöé initialized. Γöé variables. Γöé variables. Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé "/Wini" and Γöé Γöé Γöé
- Γöé Γöé "/Wuni" Γöé Γöé Γöé
- Γöé Γöé options. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ko[Γö╝Γöé-]" Γöé Control diag- Γöé "/Ko-" Γöé "/Ko[Γö╝]" Γöé
- Γöé Γöé nostic mes- Γöé Γöé Γöé
- Γöé Γöé sages about Γöé Suppress por- Γöé Produce por- Γöé
- Γöé Γöé portability. Γöé tability mes- Γöé tability mes- Γöé
- Γöé Γöé Maps to the Γöé sages. Γöé sages. Γöé
- Γöé Γöé "/Wpor" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kp[Γö╝Γöé-]" Γöé Control mes- Γöé "/Kp-" Γöé "/Kp[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Γöé Γöé
- Γöé Γöé function Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé parameters Γöé sages about Γöé sages about Γöé
- Γöé Γöé that are not Γöé unused func- Γöé unused func- Γöé
- Γöé Γöé used. Γöé tion parame- Γöé tion parame- Γöé
- Γöé Γöé Maps to the Γöé ters. Γöé ters. Γöé
- Γöé Γöé "/Wpar" Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kr[Γö╝Γöé-]" Γöé Control mes- Γöé "/Kr-" Γöé "/Kr[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Γöé Γöé
- Γöé Γöé mapping of Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé names to the Γöé sages about Γöé sages about Γöé
- Γöé Γöé linkage Γöé name mapping. Γöé name mapping. Γöé
- Γöé Γöé editor. Γöé Γöé Γöé
- Γöé Γöé ********* Γöé Γöé Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé ???????? Γöé Γöé Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γöé Γöé ************* Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kt[Γö╝Γöé-]" Γöé Control pre- Γöé "/Kt-" Γöé "/Kt[Γö╝]" Γöé
- Γöé Γöé processor Γöé Γöé Γöé
- Γöé Γöé trace mes- Γöé Suppress pre- Γöé Produce pre- Γöé
- Γöé Γöé sages. Γöé processor Γöé processor Γöé
- Γöé Γöé Maps to the Γöé trace mes- Γöé trace mes- Γöé
- Γöé Γöé "/Wppt" Γöé sages. Γöé sages. Γöé
- Γöé Γöé option. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Kx[Γö╝Γöé-]" Γöé Control mes- Γöé "/Kx-" Γöé "/Kx[Γö╝]" Γöé
- Γöé Γöé sages about Γöé Γöé Γöé
- Γöé Γöé variables and Γöé Suppress mes- Γöé Produce mes- Γöé
- Γöé Γöé functions that Γöé sages about Γöé sages about Γöé
- Γöé Γöé have external Γöé unreferenced Γöé unreferenced Γöé
- Γöé Γöé declarations, Γöé external vari- Γöé external var- Γöé
- Γöé Γöé but are never Γöé ables and Γöé iables and Γöé
- Γöé Γöé used. Γöé functions. Γöé functions. Γöé
- Γöé Γöé Maps to the Γöé Γöé Γöé
- Γöé Γöé "/Wext" and Γöé Γöé Γöé
- Γöé Γöé "/Wuse" Γöé Γöé Γöé
- Γöé Γöé options. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Nn" Γöé Set maximum Γöé Set no limit Γöé "/Nn" Γöé
- Γöé Γöé number of Γöé on number of Γöé End compila- Γöé
- Γöé Γöé errors before Γöé errors. Γöé tion when Γöé
- Γöé Γöé compilation Γöé Γöé error count Γöé
- Γöé Γöé aborts. Γöé Γöé reaches n. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ti[Γö╝Γöé-]" Γöé Generate Γöé "/Ti-" Γöé "/Ti[Γö╝]" Γöé
- Γöé Γöé C/C:font Γöé Do not gen- Γöé Generate Γöé
- Γöé Γöé facename=CourieΓöé erate debugger Γöé debugger Γöé
- Γöé Γöé size=15x12.Γö╝:foΓöétinformation. Γöé information. Γöé
- Γöé Γöé facename=defaulΓöé Γöé Γöé
- Γöé Γöé size=0x0.:font Γöé Γöé Γöé
- Γöé Γöé facename=CourieΓöé Γöé Γöé
- Γöé Γöé size=15x12.Γö╝:foΓöét Γöé Γöé
- Γöé Γöé facename=defaulΓöé Γöé Γöé
- Γöé Γöé size=0x0. for Γöé Γöé Γöé
- Γöé Γöé OS/2 debugger Γöé Γöé Γöé
- Γöé Γöé information. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ts[Γö╝Γöé-]" Γöé Generate code Γöé "/Ts-" Γöé "/Ts[Γö╝]" Γöé
- Γöé Γöé to allow the Γöé Γöé Γöé
- Γöé Γöé debugger to Γöé Do not gen- Γöé Generate code Γöé
- Γöé Γöé maintain the Γöé erate code to Γöé to allow the Γöé
- Γöé Γöé call stack Γöé allow the Γöé debugger to Γöé
- Γöé Γöé across all Γöé debugger to Γöé maintain the Γöé
- Γöé Γöé calls that do Γöé maintain the Γöé call stack. Γöé
- Γöé Γöé not chain the Γöé call stack. Γöé Γöé
- Γöé Γöé EBP, that is, Γöé Γöé Γöé
- Γöé Γöé :font Γöé Γöé Γöé
- Γöé Γöé facename=CourieΓöé Γöé Γöé
- Γöé Γöé size=15x12.systΓöém:font Γöé Γöé
- Γöé Γöé facename=defaulΓöé Γöé Γöé
- Γöé Γöé size=0x0. Γöé Γöé Γöé
- Γöé Γöé calls. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Tx[Γö╝Γöé-]" Γöé Control infor- Γöé "/Tx-" Γöé "/Tx[Γö╝Γöé-]" Γöé
- Γöé Γöé mation gener- Γöé Γöé Γöé
- Γöé Γöé ated when an Γöé Provide only Γöé Provide a Γöé
- Γöé Γöé exception Γöé the exception Γöé complete Γöé
- Γöé Γöé occurs. Γöé message and Γöé machine-state Γöé
- Γöé Γöé Γöé address when Γöé dump when an Γöé
- Γöé Γöé Γöé an exception Γöé exception Γöé
- Γöé Γöé Γöé occurs; do not Γöé occurs. Γöé
- Γöé Γöé Γöé provide a com- Γöé Γöé
- Γöé Γöé Γöé plete machine- Γöé Γöé
- Γöé Γöé Γöé state dump. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/W<grp>[Γö╝Γöé-]ΓöégControl diag- Γöé "/Wall-" Γöé "/Wgrp" Γöé
- Γöé Γöé nostic mes- Γöé Do not gen- Γöé Generate mes- Γöé
- Γöé Γöé sages. Γöé erate diag- Γöé sages in the Γöé
- Γöé Γöé Γöé nostic Γöé grp group. Γöé
- Γöé Γöé Γöé messages. Γöé More than one Γöé
- Γöé Γöé Γöé Γöé group may be Γöé
- Γöé Γöé Γöé Γöé specified. Γöé
- Γöé Γöé Γöé Γöé See -- Γöé
- Γöé Γöé Γöé Γöé Heading Γöé
- Γöé Γöé Γöé Γöé 'WCOPTS' Γöé
- Γöé Γöé Γöé Γöé unknown -- Γöé
- Γöé Γöé Γöé Γöé for Γöé
- Γöé Γöé Γöé Γöé descriptions Γöé
- Γöé Γöé Γöé Γöé of the dif- Γöé
- Γöé Γöé Γöé Γöé ferent groups Γöé
- Γöé Γöé Γöé Γöé of messages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/W[0Γöé1Γöé2Γöé3]"Γöé Set the type Γöé "/W3" Γöé "/W[0Γöé1Γöé2Γöé3]" Γöé
- Γöé Γöé of message the Γöé Produce all Γöé Γöé
- Γöé Γöé compiler Γöé message types. Γöé "/W0" Γöé
- Γöé Γöé produces and Γöé Γöé Produce only Γöé
- Γöé Γöé that causes Γöé Γöé severe Γöé
- Γöé Γöé the error Γöé Γöé errors. Γöé
- Γöé Γöé count to Γöé Γöé Γöé
- Γöé Γöé increment. Γöé Γöé "/W1" Γöé
- Γöé Γöé Γöé Γöé Produce Γöé
- Γöé Γöé Γöé Γöé severe errors Γöé
- Γöé Γöé Γöé Γöé and errors. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/W2" Γöé
- Γöé Γöé Γöé Γöé Produce Γöé
- Γöé Γöé Γöé Γöé severe Γöé
- Γöé Γöé Γöé Γöé errors, Γöé
- Γöé Γöé Γöé Γöé errors, and Γöé
- Γöé Γöé Γöé Γöé warnings. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/W3" Same Γöé
- Γöé Γöé Γöé Γöé as default. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Using the /Wgrp Diagnostic Options
-
- Related Information
-
- o Specifying Compiler Options
- o C/C++ for OS/2 Return Codes and Messages
-
-
- ΓòÉΓòÉΓòÉ 6.6.1. Using the /Wgrp Diagnostic Options ΓòÉΓòÉΓòÉ
-
- Use these options to examine your source code for possible programming errors,
- weak programming style, and other information about the structure of your
- program. When you specify /Wall[+] all suboptions are turned on and all
- possible diagnostic messages are reported. Because even a simple program that
- contains no errors can produce many informational messages, you can use the
- suboptions alone or in combination to specify the type of messages that you
- want the compiler to report. Suboptions can be separated by an optional + sign.
- To turn off a suboption, you must place a - sign after it.
-
- The following table lists the message groups and the message numbers that each
- controls, as well as the /Kn that formerly controlled each message.
-
- :font facename=Courier
- size=15x12./W:font facename=default size=0x0.grp:font
- facename=default size=0x0. Options
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé grp Γöé :FONT Γöé CONTROLS MESSAGES ABOUT Γöé MESSAGES Γöé
- Γöé Γöé FACENAMΓöé=COURIER Γöé Γöé
- Γöé Γöé SIZE=15Γöé12.:FONT Γöé Γöé
- Γöé Γöé FACENAMΓöé=COURIER Γöé Γöé
- Γöé Γöé SIZE=15Γöé12./K:FONT Γöé Γöé
- Γöé Γöé FACENAMΓöé=DEFAULT Γöé Γöé
- Γöé Γöé SIZE=0XΓöé.n:FONT Γöé Γöé
- Γöé Γöé FACENAMΓöé=DEFAULT Γöé Γöé
- Γöé Γöé SIZE=0XΓöé. Γöé Γöé
- Γöé Γöé OPTION Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "all" Γöé "/Kf" Γöé All diagnostics. Γöé All message Γöé
- Γöé Γöé Γöé Γöé numbers listed Γöé
- Γöé Γöé Γöé Γöé in this table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "cmp" Γöé (none) Γöé Possible redundancies in Γöé Messages for Γöé
- Γöé Γöé Γöé unsigned comparisons. Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0.:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "cnd" Γöé "/Kb" Γöé Possible redundancies or Γöé EDC0816, Γöé
- Γöé Γöé Γöé problems in conditional Γöé EDC0821, Γöé
- Γöé Γöé Γöé expressions. Γöé EDC0822 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "cns" Γöé "/Kb" Γöé Operations involving con- Γöé EDC0823, Γöé
- Γöé Γöé Γöé stants. Γöé EDC0824, Γöé
- Γöé Γöé Γöé Γöé EDC0838, Γöé
- Γöé Γöé Γöé Γöé EDC0839, Γöé
- Γöé Γöé Γöé Γöé EDC0865, Γöé
- Γöé Γöé Γöé Γöé EDC0866, Γöé
- Γöé Γöé Γöé Γöé EDC0867 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "cnv" Γöé "/Kb" Γöé Conversions. Γöé Messages for Γöé
- Γöé Γöé Γöé Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0.:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "dcl" Γöé (none) Γöé Consistency of declara- Γöé Messages for Γöé
- Γöé Γöé Γöé tions. Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0.:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "eff" Γöé "/Kb" Γöé Statements with no effect. Γöé EDC0811, Γöé
- Γöé Γöé Γöé Γöé EDC0812, Γöé
- Γöé Γöé Γöé Γöé EDC0813, Γöé
- Γöé Γöé Γöé Γöé EDC0814, Γöé
- Γöé Γöé Γöé Γöé EDC0815 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "enu" Γöé "/Ke" Γöé Consistency of "enum" var- Γöé EDC0830, Γöé
- Γöé Γöé Γöé iables. Γöé EDC0831 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ext" Γöé "/Kb" Γöé Unused external defi- Γöé EDC0803, Γöé
- Γöé Γöé and Γöé nitions. Γöé EDC0804, Γöé
- Γöé Γöé "/Kx" Γöé Γöé EDC0810 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "gen" Γöé "/Kb" Γöé General diagnostics. Γöé EDC0807, Γöé
- Γöé Γöé Γöé Γöé EDC0809, Γöé
- Γöé Γöé Γöé Γöé EDC0826, Γöé
- Γöé Γöé Γöé Γöé EDC0835, Γöé
- Γöé Γöé Γöé Γöé EDC0868, Γöé
- Γöé Γöé Γöé Γöé EDC0869 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "got" Γöé "/Kg" Γöé Usage of "goto" state- Γöé EDC0832, Γöé
- Γöé Γöé Γöé ments. Γöé EDC0837 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ini" Γöé "/Ki" Γöé Possible problems with Γöé EDC0861, Γöé
- Γöé Γöé Γöé initialization. Γöé EDC0862, Γöé
- Γöé Γöé Γöé Γöé EDC0863, Γöé
- Γöé Γöé Γöé Γöé EDC0864 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "lan" Γöé (none) Γöé Effects of the language Γöé Messages for Γöé
- Γöé Γöé Γöé level. Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0.:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "obs" Γöé "/Kb" Γöé Features that are obso- Γöé EDC0827, Γöé
- Γöé Γöé Γöé lete. Γöé EDC0828 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ord" Γöé "/Kb" Γöé Unspecified order of eval- Γöé EDC0829 Γöé
- Γöé Γöé Γöé uation. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "par" Γöé "/Kp" Γöé Unused parameters. Γöé EDC0800 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "por" Γöé "/Ko, Γöé Non-portable language con- Γöé EDC0464, Γöé
- Γöé Γöé /Kb" Γöé structs. Γöé EDC0819, Γöé
- Γöé Γöé Γöé Γöé EDC0820 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ppc" Γöé "/Kc" Γöé Possible problems with Γöé EDC0836, Γöé
- Γöé Γöé Γöé using the preprocessor. Γöé EDC0841, Γöé
- Γöé Γöé Γöé Γöé EDC0842, Γöé
- Γöé Γöé Γöé Γöé EDC0843, Γöé
- Γöé Γöé Γöé Γöé EDC0844, Γöé
- Γöé Γöé Γöé Γöé EDC0845, Γöé
- Γöé Γöé Γöé Γöé EDC0846, Γöé
- Γöé Γöé Γöé Γöé EDC0847, Γöé
- Γöé Γöé Γöé Γöé EDC0848 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ppt" Γöé "/Kt" Γöé Trace of preprocessor Γöé EDC0851, Γöé
- Γöé Γöé Γöé actions. Γöé EDC0852, Γöé
- Γöé Γöé Γöé Γöé EDC0853, Γöé
- Γöé Γöé Γöé Γöé EDC0854, Γöé
- Γöé Γöé Γöé Γöé EDC0855, Γöé
- Γöé Γöé Γöé Γöé EDC0856, Γöé
- Γöé Γöé Γöé Γöé EDC0857, Γöé
- Γöé Γöé Γöé Γöé EDC0858, Γöé
- Γöé Γöé Γöé Γöé EDC0859, Γöé
- Γöé Γöé Γöé Γöé EDC0860, Γöé
- Γöé Γöé Γöé Γöé EDC0870 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "pro" Γöé "/Kb" Γöé Missing function proto- Γöé EDC0185 Γöé
- Γöé Γöé Γöé types. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "rea" Γöé "/Kb" Γöé Code that cannot be Γöé EDC0825 Γöé
- Γöé Γöé Γöé reached. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ret" Γöé "/Kb" Γöé Consistency of "return" Γöé EDC0833, Γöé
- Γöé Γöé Γöé statements. Γöé EDC0834 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "trd" Γöé "/Ka" Γöé Possible truncation or Γöé EDC0817, Γöé
- Γöé Γöé Γöé loss of data or precision. Γöé EDC0818 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "tru" Γöé (none) Γöé Variable names truncated Γöé Messages for Γöé
- Γöé Γöé Γöé by the compiler. Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0.:font Γöé
- Γöé Γöé Γöé Γöé facename=CourierΓöé
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fonΓöé
- Γöé Γöé Γöé Γöé facename=defaultΓöé
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "uni" Γöé "/Ki" Γöé Uninitialized variables. Γöé EDC0808 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "use" Γöé "/Kb, Γöé Unused "auto" and "static" Γöé EDC0801, Γöé
- Γöé Γöé /Kx" Γöé variables. Γöé EDC0802, Γöé
- Γöé Γöé Γöé Γöé EDC0805, Γöé
- Γöé Γöé Γöé Γöé EDC0806 Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- More information about the messages generated by the /Wgrp options is available
- in C/C++ for OS/2 Return Codes and Messages.
-
- Examples of /Wgrp Options
-
- Related Information
-
- o Specifying Compiler Options
- o C/C++ for OS/2 Return Codes and Messages
-
-
- ΓòÉΓòÉΓòÉ 6.7. Source Code Options ΓòÉΓòÉΓòÉ
-
- These options allow you to control how the C/C++ for OS/2 compiler interprets
- your source file. This control is especially useful, for example, if you are
- importing source files from other systems that use line numbers.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Source Code Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/S[aΓöécΓöéeΓöé2]" Γöé Set language Γöé "/Se" Γöé "/Sa" Γöé
- Γöé Γöé standard. Γöé Γöé Γöé
- Γöé Γöé Γöé Allow all Γöé Conform to Γöé
- Γöé Γöé Γöé C/C:font Γöé ANSI stand- Γöé
- Γöé Γöé Γöé facename=CouriΓöérards. "/Sc" Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:fΓöént Γöé
- Γöé Γöé Γöé facename=defauΓöétConform to Γöé
- Γöé Γöé Γöé size=0x0.:fontΓöé CFRONT stand- Γöé
- Γöé Γöé Γöé facename=CouriΓöérards. Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:fΓöént Γöé
- Γöé Γöé Γöé facename=defauΓöét"/S2" Γöé
- Γöé Γöé Γöé size=0x0. for Γöé Γöé
- Γöé Γöé Γöé OS/2 language Γöé Conform to Γöé
- Γöé Γöé Γöé extensions. Γöé SAA Level 2 Γöé
- Γöé Γöé Γöé Γöé standards. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sd" Γöé Set default Γöé "/Sd-" Γöé "/Sd[Γö╝]" Γöé
- Γöé Γöé file exten- Γöé Γöé Γöé
- Γöé Γöé sion. Γöé Set the Γöé Set the Γöé
- Γöé Γöé Γöé default file Γöé default file Γöé
- Γöé Γöé Γöé extension as Γöé extension as Γöé
- Γöé Γöé Γöé ".OBJ". Γöé ".C". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sg[l][,<rΓöé*>]Γöé Set left and Γöé "/Sg-" Γöé "/Sg[l][,rΓöé*]"Γöé
- Γöé Γöé right margins Γöé Γöé Γöé
- Γöé "/Sg-" Γöé of the input Γöé Do not set Γöé Set left Γöé
- Γöé Γöé file and Γöé any margins: Γöé margin to Γöé
- Γöé Γöé ignore text Γöé use the Γöé "l". The Γöé
- Γöé Γöé outside these Γöé entire input Γöé right margin Γöé
- Γöé Γöé margins. Γöé file. Γöé can be the Γöé
- Γöé Γöé Useful when Γöé Γöé value r, or Γöé
- Γöé Γöé using source Γöé Γöé an asterisk Γöé
- Γöé Γöé files created Γöé Γöé can be used Γöé
- Γöé Γöé on other Γöé Γöé to denote no Γöé
- Γöé Γöé systems Γöé Γöé right margin. Γöé
- Γöé Γöé Γöé Γöé "l" and r Γöé
- Γöé Γöé NOTE: This Γöé Γöé must be Γöé
- Γöé Γöé option is Γöé Γöé between 1 and Γöé
- Γöé Γöé only valid Γöé Γöé 65535 inclu- Γöé
- Γöé Γöé for C files. Γöé Γöé sive, and r Γöé
- Γöé Γöé which contain Γöé Γöé must be Γöé
- Γöé Γöé characters Γöé Γöé greater than Γöé
- Γöé Γöé that you want Γöé Γöé or equal to Γöé
- Γöé Γöé to ignore. Γöé Γöé "l". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sh[Γö╝Γöé-]" Γöé Allow use of Γöé "/Sh-" Γöé "/Sh[Γö╝]" Γöé
- Γöé Γöé ddnames. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not allow Γöé Allow use of Γöé
- Γöé Γöé Γöé ddnames. Γöé ddnames. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Si[Γö╝Γöé-]" Γöé Control use Γöé "/Si[Γö╝]" Γöé "/Si-" Γöé
- Γöé Γöé of precom- Γöé Use precom- Γöé Do not use Γöé
- Γöé Γöé piled header Γöé piled header Γöé precompiled Γöé
- Γöé Γöé files. Γöé files if they Γöé header files. Γöé
- Γöé Γöé Γöé exist and are Γöé Γöé
- Γöé Γöé Γöé current. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sm[Γö╝Γöé-]" Γöé Control com- Γöé "/Sm-" Γöé "/Sm[Γö╝]" Γöé
- Γöé Γöé piler inter- Γöé Γöé Γöé
- Γöé Γöé pretation of Γöé Treat unsup- Γöé Ignore unsup- Γöé
- Γöé Γöé unsupported Γöé ported 16-bit Γöé ported 16-bit Γöé
- Γöé Γöé 16-bit Γöé keywords like Γöé keywords. Γöé
- Γöé Γöé keywords, Γöé any other Γöé Γöé
- Γöé Γöé such as Γöé identifier. Γöé Γöé
- Γöé Γöé "near" and Γöé Γöé Γöé
- Γöé Γöé "far". Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sn[Γö╝Γöé-]" Γöé Allow use of Γöé "/Sn-" Γöé "/Sn[Γö╝]" Γöé
- Γöé Γöé double-byte Γöé Γöé Γöé
- Γöé Γöé character set Γöé Do not allow Γöé Allow use of Γöé
- Γöé Γöé (DBCS). Γöé DBCS. Γöé DBCS. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sp[1Γöé2Γöé4]" Γöé Specify Γöé "/Sp4" Γöé "/Sp[1Γöé2]" Γöé
- Γöé Γöé alignment or Γöé Γöé Γöé
- Γöé Γöé packing of Γöé Align struc- Γöé Align struc- Γöé
- Γöé Γöé data items Γöé tures and Γöé tures and Γöé
- Γöé Γöé within struc- Γöé unions along Γöé unions along Γöé
- Γöé Γöé tures and Γöé 4-byte bound- Γöé 1-byte or Γöé
- Γöé Γöé unions. Γöé aries (normal Γöé 2-byte bound- Γöé
- Γöé Γöé Γöé alignment). Γöé aries. "/Sp" Γöé
- Γöé Γöé Γöé Γöé is equivalent Γöé
- Γöé Γöé Γöé Γöé to "/Sp1". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sq[l][,<rΓöé*>]Γöé Specify Γöé "/Sq-" Γöé "/Sq[l][,r]" Γöé
- Γöé Γöé columns in Γöé Γöé Γöé
- Γöé "/Sq-" Γöé which Γöé Use no Γöé Sequence Γöé
- Γöé Γöé sequence Γöé sequence Γöé numbers Γöé
- Γöé Γöé numbers Γöé numbers. Γöé appear Γöé
- Γöé Γöé appear, and Γöé Γöé between Γöé
- Γöé Γöé ignore text Γöé Γöé columns "l" Γöé
- Γöé Γöé in those Γöé Γöé and r of each Γöé
- Γöé Γöé columns. Γöé Γöé line in the Γöé
- Γöé Γöé This option Γöé Γöé input source Γöé
- Γöé Γöé can be used Γöé Γöé code. "l" Γöé
- Γöé Γöé when Γöé Γöé and r must be Γöé
- Γöé Γöé importing Γöé Γöé between 1 and Γöé
- Γöé Γöé source files Γöé Γöé 65535 inclu- Γöé
- Γöé Γöé from systems Γöé Γöé sive, and r Γöé
- Γöé Γöé that uses Γöé Γöé must be Γöé
- Γöé Γöé sequence Γöé Γöé greater than Γöé
- Γöé Γöé numbers. Γöé Γöé or equal to Γöé
- Γöé Γöé Γöé Γöé "l". If you Γöé
- Γöé Γöé NOTE: This Γöé Γöé do not want Γöé
- Γöé Γöé option is Γöé Γöé to specify a Γöé
- Γöé Γöé only valid Γöé Γöé right column, Γöé
- Γöé Γöé for C files. Γöé Γöé use an Γöé
- Γöé Γöé Γöé Γöé asterisk for Γöé
- Γöé Γöé Γöé Γöé r. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sr[Γö╝Γöé-]" Γöé Set type con- Γöé "/Sr-" Γöé "/Sr[Γö╝]" Γöé
- Γöé Γöé version Γöé Γöé Γöé
- Γöé Γöé rules. Γöé Use new-style Γöé Use old-style Γöé
- Γöé Γöé Γöé rules for Γöé rules for Γöé
- Γöé Γöé Γöé type conver- Γöé type conver- Γöé
- Γöé Γöé Γöé sion. New- Γöé sion. Old- Γöé
- Γöé Γöé Γöé style rules Γöé style rules Γöé
- Γöé Γöé Γöé preserve Γöé preserve the Γöé
- Γöé Γöé Γöé accuracy. Γöé sign. They Γöé
- Γöé Γöé Γöé Γöé do not Γöé
- Γöé Γöé Γöé Γöé conform to Γöé
- Γöé Γöé Γöé Γöé ANSI stand- Γöé
- Γöé Γöé Γöé Γöé ards. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ss[Γö╝Γöé-]" Γöé Allow use of Γöé "/Ss-" Γöé "/Ss[Γö╝]" Γöé
- Γöé Γöé double Γöé Γöé Γöé
- Γöé Γöé slashes Γöé Do not allow Γöé Allow the Γöé
- Γöé Γöé ("//") for Γöé double Γöé double slash Γöé
- Γöé Γöé comments. Γöé slashes to Γöé format to Γöé
- Γöé Γöé Γöé indicate com- Γöé indicate com- Γöé
- Γöé Γöé NOTE: This Γöé ments. Γöé ments. This Γöé
- Γöé Γöé option is not Γöé Γöé type of Γöé
- Γöé Γöé valid for Γöé Γöé comment is Γöé
- Γöé Γöé C:font Γöé Γöé ended by a Γöé
- Γöé Γöé facename=CouriΓöér Γöé carriage Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöént Γöé return. Γöé
- Γöé Γöé facename=defauΓöét Γöé Γöé
- Γöé Γöé size=0x0.:fontΓöé Γöé Γöé
- Γöé Γöé facename=CouriΓöér Γöé Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöént Γöé Γöé
- Γöé Γöé facename=defauΓöét Γöé Γöé
- Γöé Γöé size=0x0. Γöé Γöé Γöé
- Γöé Γöé files because Γöé Γöé Γöé
- Γöé Γöé C:font Γöé Γöé Γöé
- Γöé Γöé facename=CouriΓöér Γöé Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöént Γöé Γöé
- Γöé Γöé facename=defauΓöét Γöé Γöé
- Γöé Γöé size=0x0.:fontΓöé Γöé Γöé
- Γöé Γöé facename=CouriΓöér Γöé Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöént Γöé Γöé
- Γöé Γöé facename=defauΓöét Γöé Γöé
- Γöé Γöé size=0x0. Γöé Γöé Γöé
- Γöé Γöé allows double Γöé Γöé Γöé
- Γöé Γöé slashes to Γöé Γöé Γöé
- Γöé Γöé indicate com- Γöé Γöé Γöé
- Γöé Γöé ments as part Γöé Γöé Γöé
- Γöé Γöé of the lan- Γöé Γöé Γöé
- Γöé Γöé guage Γöé Γöé Γöé
- Γöé Γöé standard. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Su[Γö╝Γöé-Γöé1Γöé2Γöé4]Γöé Control size Γöé "/Su-" Γöé "/Su[Γö╝]" Γöé
- Γöé Γöé of "enum" Γöé Γöé Γöé
- Γöé Γöé variables. Γöé Use the SAA Γöé Make all Γöé
- Γöé Γöé Γöé rules, that Γöé "enum" vari- Γöé
- Γöé Γöé Γöé is, make all Γöé ables 4 Γöé
- Γöé Γöé Γöé "enum" vari- Γöé bytes. Γöé
- Γöé Γöé Γöé ables the Γöé "/Su1" Γöé
- Γöé Γöé Γöé size of the Γöé Γöé
- Γöé Γöé Γöé smallest Γöé Make all Γöé
- Γöé Γöé Γöé integral type Γöé "enum" vari- Γöé
- Γöé Γöé Γöé that can Γöé ables 1 byte. Γöé
- Γöé Γöé Γöé contain all Γöé "/Su2" Γöé
- Γöé Γöé Γöé variables. Γöé Γöé
- Γöé Γöé Γöé Γöé Make all Γöé
- Γöé Γöé Γöé Γöé "enum" vari- Γöé
- Γöé Γöé Γöé Γöé ables 2 Γöé
- Γöé Γöé Γöé Γöé bytes. Γöé
- Γöé Γöé Γöé Γöé "/Su4" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Make all Γöé
- Γöé Γöé Γöé Γöé "enum" vari- Γöé
- Γöé Γöé Γöé Γöé ables 4 Γöé
- Γöé Γöé Γöé Γöé bytes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Sv[Γö╝Γöé-]" Γöé Allow use of Γöé "/Sv-" Γöé "/Sv[Γö╝]" Γöé
- Γöé Γöé memory files. Γöé Do not allow Γöé Allow use of Γöé
- Γöé Γöé Γöé memory files. Γöé memory files. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Tc" Γöé Specify that Γöé Compile Γöé "/Tc" Γöé
- Γöé Γöé the following Γöé ".cpp" and Γöé Compile the Γöé
- Γöé Γöé file is a C Γöé ".cxx" files Γöé following Γöé
- Γöé Γöé file. Γöé as C:font Γöé file as a C Γöé
- Γöé Γöé Γöé facename=CouriΓöérsource file, Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:fΓöénregardless of Γöé
- Γöé Γöé Γöé facename=defauΓöétits exten- Γöé
- Γöé Γöé Γöé size=0x0.:fontΓöé sion. Γöé
- Γöé Γöé Γöé facename=CouriΓöér Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:fΓöénIMPORTANT: Γöé
- Γöé Γöé Γöé facename=defauΓöét The Γöé
- Γöé Γöé Γöé size=0x0. Γöé "/Tc" Γöé
- Γöé Γöé Γöé files, and Γöé option Γöé
- Γöé Γöé Γöé ".c" and all Γöé MUST Γöé
- Γöé Γöé Γöé other unrec- Γöé be Γöé
- Γöé Γöé Γöé ognized files Γöé fol- Γöé
- Γöé Γöé Γöé as C files. Γöé lowed Γöé
- Γöé Γöé Γöé Γöé by a Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé name, Γöé
- Γöé Γöé Γöé Γöé and Γöé
- Γöé Γöé Γöé Γöé appliesΓöé
- Γöé Γöé Γöé Γöé only Γöé
- Γöé Γöé Γöé Γöé to Γöé
- Γöé Γöé Γöé Γöé that Γöé
- Γöé Γöé Γöé Γöé file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Td[cΓöép]" Γöé Specify Γöé "/Td" Γöé "/Tdc" Γöé
- Γöé Γöé default lan- Γöé Compile Γöé Compile all Γöé
- Γöé Γöé guage (C or Γöé ".cpp" and Γöé files that Γöé
- Γöé Γöé C:font Γöé ".cxx" files Γöé follow on the Γöé
- Γöé Γöé facename=CouriΓöéras C:font Γöé command line Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöénfacename=CouriΓöéras C files. Γöé
- Γöé Γöé facename=defauΓöétsize=15x12.Γö╝:fΓöént Γöé
- Γöé Γöé size=0x0.:fontΓöé facename=defauΓöét"/Tdp" Γöé
- Γöé Γöé facename=CouriΓöérsize=0x0.:fontΓöé Compile all Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöénfacename=CouriΓöérfiles that Γöé
- Γöé Γöé facename=defauΓöétsize=15x12.Γö╝:fΓöénfollow on the Γöé
- Γöé Γöé size=0x0.) Γöé facename=defauΓöétcommand line Γöé
- Γöé Γöé for files. Γöé size=0x0. Γöé as C:font Γöé
- Γöé Γöé Γöé files, and Γöé facename=CouriΓöér
- Γöé Γöé Γöé ".c" and all Γöé size=15x12.Γö╝:fΓöént
- Γöé Γöé Γöé other unrec- Γöé facename=defauΓöét
- Γöé Γöé Γöé ognized files Γöé size=0x0.:fontΓöé
- Γöé Γöé Γöé as C files. Γöé facename=CouriΓöér
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fΓöént
- Γöé Γöé Γöé Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γöé Γöé Γöé Γöé files. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé NOTE: You Γöé
- Γöé Γöé Γöé Γöé can specify Γöé
- Γöé Γöé Γöé Γöé "/Td" any- Γöé
- Γöé Γöé Γöé Γöé where on the Γöé
- Γöé Γöé Γöé Γöé command line Γöé
- Γöé Γöé Γöé Γöé to return to Γöé
- Γöé Γöé Γöé Γöé the default Γöé
- Γöé Γöé Γöé Γöé rules for the Γöé
- Γöé Γöé Γöé Γöé files that Γöé
- Γöé Γöé Γöé Γöé follow it. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Tp" Γöé Specify that Γöé Compile Γöé "/Tc" Γöé
- Γöé Γöé the following Γöé ".cpp" and Γöé Compile the Γöé
- Γöé Γöé file is a Γöé ".cxx" files Γöé following Γöé
- Γöé Γöé C:font Γöé as C:font Γöé file as a Γöé
- Γöé Γöé facename=CouriΓöérfacename=CouriΓöérC:font Γöé
- Γöé Γöé size=15x12.Γö╝:fΓöénsize=15x12.Γö╝:fΓöénfacename=CouriΓöér
- Γöé Γöé facename=defauΓöétfacename=defauΓöétsize=15x12.Γö╝:fΓöént
- Γöé Γöé size=0x0.:fontΓöé size=0x0.:fontΓöé facename=defauΓöét
- Γöé Γöé facename=CouriΓöérfacename=CouriΓöérsize=0x0.:fontΓöé
- Γöé Γöé size=15x12.Γö╝:fΓöénsize=15x12.Γö╝:fΓöénfacename=CouriΓöér
- Γöé Γöé facename=defauΓöétfacename=defauΓöétsize=15x12.Γö╝:fΓöént
- Γöé Γöé size=0x0. Γöé size=0x0. Γöé facename=defauΓöét
- Γöé Γöé file. Γöé files, and Γöé size=0x0. Γöé
- Γöé Γöé Γöé ".c" and all Γöé source file, Γöé
- Γöé Γöé Γöé other unrec- Γöé regardless of Γöé
- Γöé Γöé Γöé ognized files Γöé its exten- Γöé
- Γöé Γöé Γöé as C files. Γöé sion. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé IMPORTANT: Γöé
- Γöé Γöé Γöé Γöé The Γöé
- Γöé Γöé Γöé Γöé "/Tp" Γöé
- Γöé Γöé Γöé Γöé option Γöé
- Γöé Γöé Γöé Γöé MUST Γöé
- Γöé Γöé Γöé Γöé be Γöé
- Γöé Γöé Γöé Γöé fol- Γöé
- Γöé Γöé Γöé Γöé lowed Γöé
- Γöé Γöé Γöé Γöé by a Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé name, Γöé
- Γöé Γöé Γöé Γöé and Γöé
- Γöé Γöé Γöé Γöé appliesΓöé
- Γöé Γöé Γöé Γöé only Γöé
- Γöé Γöé Γöé Γöé to Γöé
- Γöé Γöé Γöé Γöé that Γöé
- Γöé Γöé Γöé Γöé file. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o inf.#pragma langlvl
- o -- Link Reference prpack not found --#pragma pack
- o _Packed Qualifier
- o -- Link Reference margins not found --#pragma margins
- o inf.#pragma sequence
- o Comments
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.8. Preprocessor Options ΓòÉΓòÉΓòÉ
-
- The options listed here let you control the use of the preprocessor.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Preprocessor Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé /Dname[::nΓöé Define pre- Γöé Define no macros Γöé /Dname[Γöé:n]
- Γöé or Γöé processor macros Γöé on command line. Γöé or Γöé
- Γöé /Dname[=n]Γöé to specified Γöé Γöé /Dname[Γöén]
- Γöé Γöé values. Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Define Γöé
- Γöé Γöé Γöé Γöé pre- Γöé
- Γöé Γöé Γöé Γöé processorΓöé
- Γöé Γöé Γöé Γöé macro Γöé
- Γöé Γöé Γöé Γöé name to Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé value n. Γöé
- Γöé Γöé Γöé Γöé If n is Γöé
- Γöé Γöé Γöé Γöé omitted, Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé macro is Γöé
- Γöé Γöé Γöé Γöé set to a Γöé
- Γöé Γöé Γöé Γöé null Γöé
- Γöé Γöé Γöé Γöé string. Γöé
- Γöé Γöé Γöé Γöé Macros Γöé
- Γöé Γöé Γöé Γöé defined Γöé
- Γöé Γöé Γöé Γöé on the Γöé
- Γöé Γöé Γöé Γöé command Γöé
- Γöé Γöé Γöé Γöé line Γöé
- Γöé Γöé Γöé Γöé override Γöé
- Γöé Γöé Γöé Γöé macros Γöé
- Γöé Γöé Γöé Γöé defined Γöé
- Γöé Γöé Γöé Γöé in the Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/P[Γö╝Γöé-]" Γöé Control the pre- Γöé "/P-" Γöé "/P[Γö╝]" Γöé
- Γöé Γöé processor. Γöé Γöé Γöé
- Γöé Γöé Γöé Run the pre- Γöé Run the Γöé
- Γöé Γöé Γöé processor and Γöé pre- Γöé
- Γöé Γöé Γöé compiler. Do not Γöé processorΓöé
- Γöé Γöé Γöé generate pre- Γöé only. Γöé
- Γöé Γöé Γöé processor output. Γöé Create a Γöé
- Γöé Γöé Γöé Γöé pre- Γöé
- Γöé Γöé Γöé Γöé processorΓöé
- Γöé Γöé Γöé Γöé output Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé that has Γöé
- Γöé Γöé Γöé Γöé the same Γöé
- Γöé Γöé Γöé Γöé name as Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé file, Γöé
- Γöé Γöé Γöé Γöé with the Γöé
- Γöé Γöé Γöé Γöé exten- Γöé
- Γöé Γöé Γöé Γöé sion Γöé
- Γöé Γöé Γöé Γöé ".i". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Pc[Γö╝Γöé-]" Γöé Preserve source Γöé "/Pc-" Γöé "/Pc[Γö╝]" Γöé
- Γöé Γöé code comments in Γöé Run the pre- Γöé Run the Γöé
- Γöé Γöé preprocessor Γöé processor only. Γöé pre- Γöé
- Γöé Γöé output. Γöé Create a pre- Γöé processorΓöé
- Γöé Γöé Γöé processor output Γöé only. Γöé
- Γöé Γöé Γöé file and strip Γöé Create a Γöé
- Γöé Γöé Γöé out any comments. Γöé pre- Γöé
- Γöé Γöé Γöé The output file Γöé processorΓöé
- Γöé Γöé Γöé has the same name Γöé output Γöé
- Γöé Γöé Γöé as the source Γöé file Γöé
- Γöé Γöé Γöé file with the Γöé that Γöé
- Γöé Γöé Γöé extension ".i". Γöé includes Γöé
- Γöé Γöé Γöé Γöé the com- Γöé
- Γöé Γöé Γöé Γöé ments Γöé
- Γöé Γöé Γöé Γöé from the Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé code. Γöé
- Γöé Γöé Γöé Γöé The Γöé
- Γöé Γöé Γöé Γöé output Γöé
- Γöé Γöé Γöé Γöé file has Γöé
- Γöé Γöé Γöé Γöé the same Γöé
- Γöé Γöé Γöé Γöé name as Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé with the Γöé
- Γöé Γöé Γöé Γöé exten- Γöé
- Γöé Γöé Γöé Γöé sion Γöé
- Γöé Γöé Γöé Γöé ".i". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Pd[Γö╝Γöé-]" Γöé Redirect pre- Γöé "/Pd-" Γöé "/Pd[Γö╝]" Γöé
- Γöé Γöé processor output. Γöé Run the pre- Γöé Run the Γöé
- Γöé Γöé Γöé processor only. Γöé pre- Γöé
- Γöé Γöé Γöé Do not redirect Γöé processorΓöé
- Γöé Γöé Γöé preprocessor Γöé only. Γöé
- Γöé Γöé Γöé output. Write Γöé Send the Γöé
- Γöé Γöé Γöé preprocessor Γöé pre- Γöé
- Γöé Γöé Γöé output to a file Γöé processorΓöé
- Γöé Γöé Γöé that has the same Γöé output Γöé
- Γöé Γöé Γöé name as the Γöé to Γöé
- Γöé Γöé Γöé source file, with Γöé "stdout".Γöé
- Γöé Γöé Γöé the extension Γöé Γöé
- Γöé Γöé Γöé ".I". Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Pe[Γö╝Γöé-]" Γöé Suppress "#line" Γöé "/Pe-" Γöé "/Pe[Γö╝]" Γöé
- Γöé Γöé directives in Γöé Run the pre- Γöé Run the Γöé
- Γöé Γöé preprocessor Γöé processor only. Γöé pre- Γöé
- Γöé Γöé output. Γöé Generate "#line" Γöé processorΓöé
- Γöé Γöé Γöé directives in the Γöé only. Γöé
- Γöé Γöé Γöé preprocessor Γöé Suppress Γöé
- Γöé Γöé Γöé output. The Γöé creation Γöé
- Γöé Γöé Γöé output file has Γöé of Γöé
- Γöé Γöé Γöé the same name as Γöé "#line" Γöé
- Γöé Γöé Γöé the source file Γöé direc- Γöé
- Γöé Γöé Γöé with the exten- Γöé tives in Γöé
- Γöé Γöé Γöé sion ".i". Γöé pre- Γöé
- Γöé Γöé Γöé Γöé processorΓöé
- Γöé Γöé Γöé Γöé output. Γöé
- Γöé Γöé Γöé Γöé The Γöé
- Γöé Γöé Γöé Γöé output Γöé
- Γöé Γöé Γöé Γöé file has Γöé
- Γöé Γöé Γöé Γöé the same Γöé
- Γöé Γöé Γöé Γöé name as Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé file Γöé
- Γöé Γöé Γöé Γöé with the Γöé
- Γöé Γöé Γöé Γöé exten- Γöé
- Γöé Γöé Γöé Γöé sion Γöé
- Γöé Γöé Γöé Γöé ".i". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/U<nameΓöé*>"Γöé Remove macros. Γöé Retain macros. Γöé "/Uname" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Remove Γöé
- Γöé Γöé Γöé Γöé macro Γöé
- Γöé Γöé Γöé Γöé name. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/U*" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Remove Γöé
- Γöé Γöé Γöé Γöé all Γöé
- Γöé Γöé Γöé Γöé macros. Γöé
- Γöé Γöé Γöé Γöé "/U" Γöé
- Γöé Γöé Γöé Γöé does not Γöé
- Γöé Γöé Γöé Γöé affect Γöé
- Γöé Γöé Γöé Γöé the Γöé
- Γöé Γöé Γöé Γöé macros Γöé
- Γöé Γöé Γöé Γöé "__DATE__Γöé
- Γöé Γöé Γöé Γöé __TIME__,Γöé
- Γöé Γöé Γöé Γöé __TIMESTAΓöéP__,
- Γöé Γöé Γöé Γöé __FILE__"Γöé
- Γöé Γöé Γöé Γöé and Γöé
- Γöé Γöé Γöé Γöé "__FUNCTIΓöéN",
- Γöé Γöé Γöé Γöé nor does Γöé
- Γöé Γöé Γöé Γöé it unde- Γöé
- Γöé Γöé Γöé Γöé fine Γöé
- Γöé Γöé Γöé Γöé macros Γöé
- Γöé Γöé Γöé Γöé defined Γöé
- Γöé Γöé Γöé Γöé in Γöé
- Γöé Γöé Γöé Γöé source Γöé
- Γöé Γöé Γöé Γöé code. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Preprocessor Directives
- o Predefined Macros
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.9. Code Generation Options ΓòÉΓòÉΓòÉ
-
- These options allow you to specify the type of code that the compiler will
- produce.
-
- Notes:
-
- o The /Oi[+] option is more effective when /O[+] is also specified.
-
- o Using optimization (/O[+]) limits your use of the C/C++ for OS/2 debugger to
- debug your code. The /Ti option is not recommended for use with
- optimization.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Code Generation Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gd[Γö╝Γöé-]" Γöé Specify static Γöé "/Gd-" Γöé "/Gd[Γö╝]" Γöé
- Γöé Γöé or dynamic Γöé Γöé Γöé
- Γöé Γöé linking of the Γöé Statically Γöé Dynamically Γöé
- Γöé Γöé runtime Γöé link the Γöé link the Γöé
- Γöé Γöé library. Γöé runtime Γöé runtime Γöé
- Γöé Γöé Γöé library. All Γöé library. Γöé
- Γöé Γöé Γöé external names Γöé Γöé
- Γöé Γöé Γöé beginning with Γöé Γöé
- Γöé Γöé Γöé the letters Γöé Γöé
- Γöé Γöé Γöé "Dos", "Kbd", Γöé Γöé
- Γöé Γöé Γöé and "Vio" are Γöé Γöé
- Γöé Γöé Γöé reserved. Γöé Γöé
- Γöé Γöé Γöé This Γöé Γöé
- Γöé Γöé Γöé restriction Γöé Γöé
- Γöé Γöé Γöé does not apply Γöé Γöé
- Γöé Γöé Γöé when compiling Γöé Γöé
- Γöé Γöé Γöé with "/GdΓö╝". Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ge[Γö╝Γöé-]" Γöé Specify cre- Γöé "/Ge[Γö╝]" Γöé "/Ge-" Γöé
- Γöé Γöé ation of an Γöé Γöé Γöé
- Γöé Γöé ".EXE" or a Γöé Build an Γöé Build a Γöé
- Γöé Γöé ".DLL" file. Γöé ".EXE" file. Γöé ".DLL" file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gf[Γö╝Γöé-]" Γöé Specify fast Γöé "/Gf-" Γöé "/Gf[Γö╝]" Γöé
- Γöé Γöé floating-point Γöé Γöé Γöé
- Γöé Γöé execution. Γöé Do not use Γöé Use fast Γöé
- Γöé Γöé Γöé fast floating- Γöé floating- Γöé
- Γöé Γöé If your Γöé point exe- Γöé point exe- Γöé
- Γöé Γöé program does Γöé cution. Γöé cution. Γöé
- Γöé Γöé not need to Γöé Γöé Γöé
- Γöé Γöé abide by ANSI Γöé Γöé Γöé
- Γöé Γöé rules Γöé Γöé Γöé
- Γöé Γöé regarding the Γöé Γöé Γöé
- Γöé Γöé processing of Γöé Γöé Γöé
- Γöé Γöé "double" and Γöé Γöé Γöé
- Γöé Γöé "float" types, Γöé Γöé Γöé
- Γöé Γöé then you can Γöé Γöé Γöé
- Γöé Γöé use this Γöé Γöé Γöé
- Γöé Γöé option to Γöé Γöé Γöé
- Γöé Γöé increase your Γöé Γöé Γöé
- Γöé Γöé program's per- Γöé Γöé Γöé
- Γöé Γöé formance. Γöé Γöé Γöé
- Γöé Γöé Because the Γöé Γöé Γöé
- Γöé Γöé fast floating- Γöé Γöé Γöé
- Γöé Γöé point method Γöé Γöé Γöé
- Γöé Γöé does not Γöé Γöé Γöé
- Γöé Γöé perform all Γöé Γöé Γöé
- Γöé Γöé the conver- Γöé Γöé Γöé
- Γöé Γöé sions neces- Γöé Γöé Γöé
- Γöé Γöé sary to Γöé Γöé Γöé
- Γöé Γöé maintain accu- Γöé Γöé Γöé
- Γöé Γöé racy, some Γöé Γöé Γöé
- Γöé Γöé variables may Γöé Γöé Γöé
- Γöé Γöé lose preci- Γöé Γöé Γöé
- Γöé Γöé sion. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gh[Γö╝Γöé-]" Γöé Generate code Γöé "/Gh-" Γöé "/Gh[Γö╝]" Γöé
- Γöé Γöé enabled for Γöé Γöé Γöé
- Γöé Γöé Execution Γöé Do not enable Γöé Enable code Γöé
- Γöé Γöé Trace Analyzer Γöé code for Exe- Γöé to be run by Γöé
- Γöé Γöé and other pro- Γöé cution Trace Γöé Execution Γöé
- Γöé Γöé filing tools. Γöé Analyzer. Γöé Trace Ana- Γöé
- Γöé Γöé Γöé Γöé lyzer and Γöé
- Γöé Γöé Γöé Γöé other pro- Γöé
- Γöé Γöé Γöé Γöé filing tools Γöé
- Γöé Γöé Γöé Γöé by generated Γöé
- Γöé Γöé Γöé Γöé profiler Γöé
- Γöé Γöé Γöé Γöé hooks in Γöé
- Γöé Γöé Γöé Γöé function Γöé
- Γöé Γöé Γöé Γöé prologs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gi[Γö╝Γöé-]" Γöé Specify fast Γöé "/Gi-" Γöé "/Gi[Γö╝]" Γöé
- Γöé Γöé integer exe- Γöé Γöé Γöé
- Γöé Γöé cution. Γöé Do not use Γöé Use fast Γöé
- Γöé Γöé Γöé fast integer Γöé integer exe- Γöé
- Γöé Γöé If you are Γöé execution. Γöé cution. Γöé
- Γöé Γöé shifting bits Γöé Γöé Γöé
- Γöé Γöé by a variable Γöé Γöé Γöé
- Γöé Γöé amount, you Γöé Γöé Γöé
- Γöé Γöé can use fast Γöé Γöé Γöé
- Γöé Γöé integer exe- Γöé Γöé Γöé
- Γöé Γöé cution to Γöé Γöé Γöé
- Γöé Γöé ensure that Γöé Γöé Γöé
- Γöé Γöé for values Γöé Γöé Γöé
- Γöé Γöé greater than Γöé Γöé Γöé
- Γöé Γöé 31, the bits Γöé Γöé Γöé
- Γöé Γöé are shifted by Γöé Γöé Γöé
- Γöé Γöé the result of Γöé Γöé Γöé
- Γöé Γöé a modulo 32 of Γöé Γöé Γöé
- Γöé Γöé the value. Γöé Γöé Γöé
- Γöé Γöé Otherwise the Γöé Γöé Γöé
- Γöé Γöé result of the Γöé Γöé Γöé
- Γöé Γöé shift is 0. Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé NOTE: If your Γöé Γöé Γöé
- Γöé Γöé shift value is Γöé Γöé Γöé
- Γöé Γöé a constant Γöé Γöé Γöé
- Γöé Γöé greater than Γöé Γöé Γöé
- Γöé Γöé 32, the result Γöé Γöé Γöé
- Γöé Γöé will always be Γöé Γöé Γöé
- Γöé Γöé 0. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gm[Γö╝Γöé-]" Γöé Choose single Γöé "/Gm-" Γöé "/Gm[Γö╝]" Γöé
- Γöé Γöé or multithread Γöé Γöé Γöé
- Γöé Γöé libraries. Γöé Link with the Γöé Link with the Γöé
- Γöé Γöé Γöé single-thread Γöé multithread Γöé
- Γöé Γöé Γöé version of the Γöé version of Γöé
- Γöé Γöé Γöé library (no Γöé the library. Γöé
- Γöé Γöé Γöé multithread Γöé Γöé
- Γöé Γöé Γöé capabilities). Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gn[Γö╝Γöé-]" Γöé Do not gen- Γöé "/Gn-" Γöé "/Gn[Γö╝]" Γöé
- Γöé Γöé erate default Γöé Γöé Γöé
- Γöé Γöé libraries in Γöé Do default Γöé Do not search Γöé
- Γöé Γöé object. Γöé library Γöé libraries Γöé
- Γöé Γöé Γöé search, Γöé during compi- Γöé
- Γöé Γöé Γöé according to Γöé lation to Γöé
- Γöé Γöé Γöé other "/G" Γöé resolve Γöé
- Γöé Γöé Γöé options speci- Γöé external ref- Γöé
- Γöé Γöé Γöé fied. Provide Γöé erences. All Γöé
- Γöé Γöé Γöé linker infor- Γöé libraries Γöé
- Γöé Γöé Γöé mation about Γöé must be Γöé
- Γöé Γöé Γöé the default Γöé explicitly Γöé
- Γöé Γöé Γöé libraries. Γöé specified at Γöé
- Γöé Γöé Γöé Γöé link time. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gp[Γö╝Γöé-]" Γöé Create pro- Γöé "/Gp-" Γöé "/Gp[Γö╝]" Γöé
- Γöé Γöé tected DLL. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not gen- Γöé Generate the Γöé
- Γöé Γöé Γöé erate the code Γöé proper code Γöé
- Γöé Γöé Γöé required for Γöé to create a Γöé
- Γöé Γöé Γöé protected Γöé protected Γöé
- Γöé Γöé Γöé DLLs. Γöé DLL. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gr[Γö╝Γöé-]" Γöé Allow object Γöé "/Gr-" Γöé "/Gr[Γö╝]" Γöé
- Γöé Γöé code to run at Γöé Γöé Γöé
- Γöé Γöé ring 0. Use Γöé Do not allow Γöé Allow object Γöé
- Γöé Γöé this option if Γöé object code to Γöé code to run Γöé
- Γöé Γöé you are Γöé run at ring 0. Γöé at ring 0. Γöé
- Γöé Γöé writing code, Γöé Γöé Γöé
- Γöé Γöé such as device Γöé Γöé Γöé
- Γöé Γöé drivers or Γöé Γöé Γöé
- Γöé Γöé operating Γöé Γöé Γöé
- Γöé Γöé systems, that Γöé Γöé Γöé
- Γöé Γöé will run at Γöé Γöé Γöé
- Γöé Γöé ring 0 instead Γöé Γöé Γöé
- Γöé Γöé of ring 3. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gs[Γö╝Γöé-]" Γöé Remove stack Γöé "/Gs-" Γöé "/Gs[Γö╝]" Γöé
- Γöé Γöé probes from Γöé Γöé Γöé
- Γöé Γöé the generated Γöé Do not remove Γöé Remove stack Γöé
- Γöé Γöé code. Γöé stack probes. Γöé probes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gt[Γö╝Γöé-]" Γöé Enable tiled Γöé "/Gt-" Γöé "/Gt[Γö╝]" Γöé
- Γöé Γöé memory and Γöé Γöé Γöé
- Γöé Γöé store vari- Γöé Do not enable Γöé Enable all Γöé
- Γöé Γöé ables such Γöé variables to Γöé variables to Γöé
- Γöé Γöé that they may Γöé be passed to Γöé be passed to Γöé
- Γöé Γöé be passed to Γöé 16-bit func- Γöé 16-bit func- Γöé
- Γöé Γöé 16-bit func- Γöé tions. Γöé tions. Γöé
- Γöé Γöé tions. Γöé Γöé Static and Γöé
- Γöé Γöé Γöé Γöé external var- Γöé
- Γöé Γöé Γöé Γöé iables are Γöé
- Γöé Γöé Γöé Γöé mapped into Γöé
- Γöé Γöé Γöé Γöé 16-bit seg- Γöé
- Γöé Γöé Γöé Γöé ments. Vari- Γöé
- Γöé Γöé Γöé Γöé ables larger Γöé
- Γöé Γöé Γöé Γöé than 64K will Γöé
- Γöé Γöé Γöé Γöé be aligned Γöé
- Γöé Γöé Γöé Γöé on, but will Γöé
- Γöé Γöé Γöé Γöé still cross, Γöé
- Γöé Γöé Γöé Γöé 64K bounda- Γöé
- Γöé Γöé Γöé Γöé ries. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gu[Γö╝Γöé-]" Γöé Tell interme- Γöé "/Gu-" Γöé "/GuΓö╝" Γöé
- Γöé Γöé diate linker Γöé External func- Γöé The data is Γöé
- Γöé Γöé whether Γöé tions may use Γöé used only Γöé
- Γöé Γöé external func- Γöé data in the Γöé within the Γöé
- Γöé Γöé tions use data Γöé intermediate Γöé intermediate Γöé
- Γöé Γöé defined in the Γöé files being Γöé files being Γöé
- Γöé Γöé intermediate Γöé linked. Γöé linked, with Γöé
- Γöé Γöé link. Γöé Γöé the exception Γöé
- Γöé Γöé Γöé Γöé of data qual- Γöé
- Γöé Γöé Γöé Γöé ified with Γöé
- Γöé Γöé Γöé Γöé the :font Γöé
- Γöé Γöé Γöé Γöé facename=CouriΓöér
- Γöé Γöé Γöé Γöé size=15x12._ExΓöéort:font
- Γöé Γöé Γöé Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γöé Γöé Γöé Γöé keyword. See Γöé
- Γöé Γöé Γöé Γöé -- Heading Γöé
- Γöé Γöé Γöé Γöé 'ICLINK' Γöé
- Γöé Γöé Γöé Γöé unknown -- Γöé
- Γöé Γöé Γöé Γöé for more Γöé
- Γöé Γöé Γöé Γöé information Γöé
- Γöé Γöé Γöé Γöé about the Γöé
- Γöé Γöé Γöé Γöé intermediate Γöé
- Γöé Γöé Γöé Γöé code linker. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Gw[Γö╝Γöé-]" Γöé Control gener- Γöé "/Gw-" Γöé "/Gw[Γö╝]" Γöé
- Γöé Γöé ation of Γöé Γöé Γöé
- Γöé Γöé "FWAIT" Γöé Do not gen- Γöé Generate Γöé
- Γöé Γöé instruction Γöé erate "FWAIT" Γöé "FWAIT" Γöé
- Γöé Γöé after each Γöé instruction Γöé instruction Γöé
- Γöé Γöé floating-point Γöé after each Γöé after each Γöé
- Γöé Γöé load instruc- Γöé floating-point Γöé floating- Γöé
- Γöé Γöé tion. Γöé load instruc- Γöé point load Γöé
- Γöé Γöé Γöé tion. Γöé instruction. Γöé
- Γöé Γöé Γöé Γöé This allows Γöé
- Γöé Γöé Γöé Γöé the program Γöé
- Γöé Γöé Γöé Γöé to take a Γöé
- Γöé Γöé Γöé Γöé floating- Γöé
- Γöé Γöé Γöé Γöé point stack Γöé
- Γöé Γöé Γöé Γöé overflow Γöé
- Γöé Γöé Γöé Γöé exception Γöé
- Γöé Γöé Γöé Γöé immediately Γöé
- Γöé Γöé Γöé Γöé after the Γöé
- Γöé Γöé Γöé Γöé load instruc- Γöé
- Γöé Γöé Γöé Γöé tion that Γöé
- Γöé Γöé Γöé Γöé caused it. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé NOTE: This Γöé
- Γöé Γöé Γöé Γöé option is not Γöé
- Γöé Γöé Γöé Γöé recommended Γöé
- Γöé Γöé Γöé Γöé because it Γöé
- Γöé Γöé Γöé Γöé increases the Γöé
- Γöé Γöé Γöé Γöé size of your Γöé
- Γöé Γöé Γöé Γöé executable Γöé
- Γöé Γöé Γöé Γöé file and Γöé
- Γöé Γöé Γöé Γöé greatly Γöé
- Γöé Γöé Γöé Γöé decreases its Γöé
- Γöé Γöé Γöé Γöé performance. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/G[3Γöé4Γöé5]" Γöé Specify type Γöé "/G3" Γöé "/G4" Γöé
- Γöé Γöé of processor. Γöé Γöé Γöé
- Γöé Γöé Γöé Optimize code Γöé Optimize code Γöé
- Γöé Γöé Γöé for use with a Γöé for use with Γöé
- Γöé Γöé Γöé 386 processor. Γöé a 486 Γöé
- Γöé Γöé Γöé The code will Γöé processor. Γöé
- Γöé Γöé Γöé run on a 486 Γöé The code will Γöé
- Γöé Γöé Γöé or P5 Γöé run on a 386 Γöé
- Γöé Γöé Γöé processor. Γöé or P5 Γöé
- Γöé Γöé Γöé Γöé processor. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/G5" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Optimize code Γöé
- Γöé Γöé Γöé Γöé for use with Γöé
- Γöé Γöé Γöé Γöé a P5 Γöé
- Γöé Γöé Γöé Γöé processor. Γöé
- Γöé Γöé Γöé Γöé The code will Γöé
- Γöé Γöé Γöé Γöé run on a 386 Γöé
- Γöé Γöé Γöé Γöé or 486 Γöé
- Γöé Γöé Γöé Γöé processor. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/MpΓöé/Ms" Γöé Set calling Γöé "/Mp" Γöé "/Ms" Γöé
- Γöé Γöé convention. Γöé Γöé Γöé
- Γöé Γöé Γöé Use :font Γöé Use :font Γöé
- Γöé Γöé Γöé facename=CourieΓöé facename=CouriΓöér
- Γöé Γöé Γöé size=15x12.optlΓöénsize=15x12.sysΓöéem:font
- Γöé Γöé Γöé facename=defaulΓöé facename=defauΓöét
- Γöé Γöé Γöé size=0x0. Γöé size=0x0. Γöé
- Γöé Γöé Γöé linkage for Γöé linkage for Γöé
- Γöé Γöé Γöé functions. Γöé functions. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé You must Γöé You must Γöé
- Γöé Γöé Γöé include the Γöé include the Γöé
- Γöé Γöé Γöé OS/2 2.0 Γöé library Γöé
- Γöé Γöé Γöé Developer's Γöé header files Γöé
- Γöé Γöé Γöé Toolkit header Γöé to call func- Γöé
- Γöé Γöé Γöé files to call Γöé tions. Γöé
- Γöé Γöé Γöé OS/2 applica- Γöé Γöé
- Γöé Γöé Γöé tion program- Γöé Γöé
- Γöé Γöé Γöé ming Γöé Γöé
- Γöé Γöé Γöé interfaces. Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ndname" Γöé Specify names Γöé Use the Γöé "/Ndname" Γöé
- Γöé Γöé of default Γöé default names Γöé Γöé
- Γöé Γöé data and con- Γöé DATA32 and Γöé Use the names Γöé
- Γöé Γöé stant seg- Γöé CONST32. Γöé nameDATA32 Γöé
- Γöé Γöé ments. Γöé Γöé and Γöé
- Γöé Γöé Γöé Γöé nameCONST32. Γöé
- Γöé Γöé Γöé Γöé You can then Γöé
- Γöé Γöé Γöé Γöé give the seg- Γöé
- Γöé Γöé Γöé Γöé ments special Γöé
- Γöé Γöé Γöé Γöé attributes. Γöé
- Γöé Γöé Γöé Γöé The renamed Γöé
- Γöé Γöé Γöé Γöé segments are Γöé
- Γöé Γöé Γöé Γöé not placed in Γöé
- Γöé Γöé Γöé Γöé the default Γöé
- Γöé Γöé Γöé Γöé data group. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ntname" Γöé Specify name Γöé Use the Γöé "/Ntname" Γöé
- Γöé Γöé of default Γöé default name Γöé Γöé
- Γöé Γöé text segment. Γöé CODE32. Γöé Use the name Γöé
- Γöé Γöé Γöé Γöé nameCODE32. Γöé
- Γöé Γöé Γöé Γöé You can then Γöé
- Γöé Γöé Γöé Γöé give the Γöé
- Γöé Γöé Γöé Γöé segment Γöé
- Γöé Γöé Γöé Γöé special Γöé
- Γöé Γöé Γöé Γöé attributes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/O[Γö╝Γöé-]" Γöé Turn on opti- Γöé "/O-" Γöé "/O[Γö╝]" Γöé
- Γöé Γöé mization. Γöé Γöé Γöé
- Γöé Γöé Γöé Do not opti- Γöé Optimize Γöé
- Γöé Γöé Γöé mize code. Γöé code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Oi[Γö╝Γöé-ΓöévaluΓöé]Control Γöé "/Oi-" Γöé "/Oi[Γö╝]" Γöé
- Γöé Γöé inlining of Γöé Γöé Γöé
- Γöé Γöé user code. Γöé Do not inline Γöé Inline all Γöé
- Γöé Γöé Γöé any user code. Γöé user func- Γöé
- Γöé Γöé Γöé Γöé tions quali- Γöé
- Γöé Γöé Γöé NOTE: When Γöé fied with the Γöé
- Γöé Γöé Γöé "/O[Γö╝]" is Γöé :font Γöé
- Γöé Γöé Γöé specified, Γöé facename=CouriΓöér
- Γöé Γöé Γöé "/OiΓö╝" becomes Γöé size=15x12._InΓöéine:font
- Γöé Γöé Γöé the default. Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γöé Γöé Γöé Γöé keyword. Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé "/Oivalue" Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé Inline all Γöé
- Γöé Γöé Γöé Γöé user func- Γöé
- Γöé Γöé Γöé Γöé tions quali- Γöé
- Γöé Γöé Γöé Γöé fied with the Γöé
- Γöé Γöé Γöé Γöé :font Γöé
- Γöé Γöé Γöé Γöé facename=CouriΓöér
- Γöé Γöé Γöé Γöé size=15x12._InΓöéine:font
- Γöé Γöé Γöé Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γöé Γöé Γöé Γöé keyword or Γöé
- Γöé Γöé Γöé Γöé that are Γöé
- Γöé Γöé Γöé Γöé smaller than Γöé
- Γöé Γöé Γöé Γöé value in Γöé
- Γöé Γöé Γöé Γöé abstract code Γöé
- Γöé Γöé Γöé Γöé units. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Ol[Γö╝Γöé-]" Γöé Control use of Γöé "/Ol-" Γöé "/Ol[Γö╝]" Γöé
- Γöé Γöé intermediate Γöé Do not pass Γöé Pass code Γöé
- Γöé Γöé code linker. Γöé code through Γöé through the Γöé
- Γöé Γöé Γöé the interme- Γöé intermediate Γöé
- Γöé Γöé Γöé diate linker. Γöé linker before Γöé
- Γöé Γöé Γöé Γöé generating an Γöé
- Γöé Γöé Γöé Γöé object file. Γöé
- Γöé Γöé Γöé Γöé See -- Γöé
- Γöé Γöé Γöé Γöé Heading Γöé
- Γöé Γöé Γöé Γöé 'ICLINK' Γöé
- Γöé Γöé Γöé Γöé unknown -- Γöé
- Γöé Γöé Γöé Γöé for more Γöé
- Γöé Γöé Γöé Γöé information Γöé
- Γöé Γöé Γöé Γöé on the inter- Γöé
- Γöé Γöé Γöé Γöé mediate code Γöé
- Γöé Γöé Γöé Γöé linker. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/ReΓöé/Rn" Γöé Control exe- Γöé "/Re" Γöé "/Rn" Γöé
- Γöé Γöé cutable run- Γöé Γöé Γöé
- Γöé Γöé time Γöé Generate exe- Γöé Generate exe- Γöé
- Γöé Γöé environment. Γöé cutable code Γöé cutable code Γöé
- Γöé Γöé Γöé that runs in a Γöé that can be Γöé
- Γöé Γöé Γöé C/C:font Γöé used as a Γöé
- Γöé Γöé Γöé facename=CourieΓöé subsystem Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:foΓöétwithout a Γöé
- Γöé Γöé Γöé facename=defaulΓöé runtime envi- Γöé
- Γöé Γöé Γöé size=0x0.:font Γöé ronment. Γöé
- Γöé Γöé Γöé facename=CourieΓöé Γöé
- Γöé Γöé Γöé size=15x12.Γö╝:foΓöét Γöé
- Γöé Γöé Γöé facename=defaulΓöé Γöé
- Γöé Γöé Γöé size=0x0. for Γöé Γöé
- Γöé Γöé Γöé OS/2 runtime Γöé Γöé
- Γöé Γöé Γöé environment. Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Related Information
-
- o Using the /Ge Option
- o Linkage Keywords
- o inf.#pragma linkage
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.9.1. Using the /Ge Option ΓòÉΓòÉΓòÉ
-
- The C/C++ for OS/2 libraries provide two initialization routines, one for
- executable modules and one for DLLs. For each object file, the compiler must
- include a reference to the appropriate initialization routine. The name of this
- routine is then passed to the linker when the file is linked. Use the /Ge
- option at compile time to tell the compiler which routine to reference.
-
- The /Ge- option causes the compiler to generate a reference to _dllentry for
- every module compiled. The /Ge+ option generates a reference to _exeentry only
- if a main function is found in the source. If no main function is included, no
- linking reference is generated.
-
- If you want to create a library of objects that can be linked into either an
- executable file or a DLL, use the /Ge+ option when you compile. Typically,
- none of these objects would contain a reference to main.
-
- If one of the objects did contain a reference to main, you can override the /Ge
- option when you link your files. Create a source file that defines the routine
- already referenced in your object file. In the same file, add a dummy statement
- that references the correct initialization routine. Then compile this file and
- link it with your other object files.
-
- For example, if you compiled myprog.obj using the /Ge+ option, and want to link
- it to create a DLL, your extra source file would contain statements like the
- following:
-
- int _exeentry = 1;
- extern int _dllentry;
-
- int main(void)
- {
- int x;
- .
- .
- .
- x = _dllentry;
- .
- .
- .
- }
- The reference to _exeentry in myprog.obj is resolved by this file, and this
- file's reference to _dllentry causes the linker to link in the correct
- initialization routine.
-
- Related Information
-
- o Code Generation Options
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 6.10. Other Options ΓòÉΓòÉΓòÉ
-
- Use these options to control linker parameters, logo display, default char
- type, and other C/C++ for OS/2 options.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Other Options Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé OPTION Γöé DESCRIPTION Γöé DEFAULT Γöé CHANGING Γöé
- Γöé Γöé Γöé Γöé DEFAULT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/B"options""Γöé Specify param- Γöé "/B""" Γöé "/B"options"" Γöé
- Γöé Γöé eters to be Γöé Γöé Γöé
- Γöé Γöé passed to Γöé Pass no param- Γöé Pass options Γöé
- Γöé Γöé linker. Γöé eters to the Γöé string to the Γöé
- Γöé Γöé Γöé linker. Γöé linker as Γöé
- Γöé Γöé See the OS/2 Γöé Γöé parameters. Γöé
- Γöé Γöé 2.0 Develop- Γöé Γöé Γöé
- Γöé Γöé er's Toolkit Γöé Γöé Γöé
- Γöé Γöé Tools Refer- Γöé Γöé Γöé
- Γöé Γöé ence for Γöé Γöé Γöé
- Γöé Γöé information Γöé Γöé Γöé
- Γöé Γöé about the Γöé Γöé Γöé
- Γöé Γöé options you Γöé Γöé Γöé
- Γöé Γöé can pass to Γöé Γöé Γöé
- Γöé Γöé the OS/2 Γöé Γöé Γöé
- Γöé Γöé linker. Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/C[Γö╝Γöé-]" Γöé Perform Γöé "/C-" Γöé "/C[Γö╝]" Γöé
- Γöé Γöé compile only, Γöé Γöé Γöé
- Γöé Γöé or compile and Γöé Perform Γöé Perform Γöé
- Γöé Γöé link. Γöé compile and Γöé compile only, Γöé
- Γöé Γöé Γöé link. Γöé no link. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Hnum" Γöé Set signif- Γöé "/H255" Γöé "/H"num Γöé
- Γöé Γöé icant length Γöé Γöé Γöé
- Γöé Γöé of external Γöé Set the first Γöé Set the first Γöé
- Γöé Γöé names. Γöé 255 characters Γöé num charac- Γöé
- Γöé Γöé Γöé of external Γöé ters of Γöé
- Γöé Γöé Γöé names to be Γöé external Γöé
- Γöé Γöé Γöé significant. Γöé names to be Γöé
- Γöé Γöé Γöé Γöé significant. Γöé
- Γöé Γöé Γöé Γöé The value of Γöé
- Γöé Γöé Γöé Γöé num must be Γöé
- Γöé Γöé Γöé Γöé between 6 and Γöé
- Γöé Γöé Γöé Γöé 255 inclusive Γöé
- Γöé Γöé Γöé Γöé for C files, Γöé
- Γöé Γöé Γöé Γöé and between Γöé
- Γöé Γöé Γöé Γöé 10 and 255 Γöé
- Γöé Γöé Γöé Γöé inclusive for Γöé
- Γöé Γöé Γöé Γöé C:font Γöé
- Γöé Γöé Γöé Γöé facename=CouriΓöér
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fΓöént
- Γöé Γöé Γöé Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0.:fontΓöé
- Γöé Γöé Γöé Γöé facename=CouriΓöér
- Γöé Γöé Γöé Γöé size=15x12.Γö╝:fΓöént
- Γöé Γöé Γöé Γöé facename=defauΓöét
- Γöé Γöé Γöé Γöé size=0x0. Γöé
- Γöé Γöé Γöé Γöé files. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/J[Γö╝Γöé-]" Γöé Set default Γöé "/J[Γö╝]" Γöé "/J-" Γöé
- Γöé Γöé "char" type. Γöé Γöé Γöé
- Γöé Γöé Γöé Set unspeci- Γöé Set unspeci- Γöé
- Γöé Γöé Γöé fied "char" Γöé fied "char" Γöé
- Γöé Γöé Γöé variables to Γöé variables to Γöé
- Γöé Γöé Γöé "unsigned Γöé "signed Γöé
- Γöé Γöé Γöé char". Γöé char". Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/Q[Γö╝Γöé-]" Γöé Display com- Γöé "/Q-" Γöé "/Q[Γö╝]" Γöé
- Γöé Γöé piler logo Γöé Γöé Γöé
- Γöé Γöé when invoking Γöé Display logo Γöé Do not Γöé
- Γöé Γöé compiler. Γöé on "stderr". Γöé display logo. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "/V"string"" Γöé Include a Γöé "/V""" Γöé "/V"string"" Γöé
- Γöé Γöé version string Γöé Γöé Γöé
- Γöé Γöé in the object Γöé Set no version Γöé Set version Γöé
- Γöé Γöé and executable Γöé string. Γöé string to Γöé
- Γöé Γöé files. Γöé Γöé string. The Γöé
- Γöé Γöé Γöé Γöé length of the Γöé
- Γöé Γöé Γöé Γöé string can be Γöé
- Γöé Γöé Γöé Γöé up to 256 Γöé
- Γöé Γöé Γöé Γöé characters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Examples of Other Options
-
- Related Information
-
- o inf.#pragma chars
- o Specifying Compiler Options
-
-
- ΓòÉΓòÉΓòÉ 7. C/C++ for OS/2 Return Codes and Messages ΓòÉΓòÉΓòÉ
-
- These panels contains information about the compile-time messages and should
- not be used as programming interface information.
-
- For every compilation job or job step, the compiler generates a return code
- that indicates to the operating system the degree of success or failure it
- achieved. The meanings of the codes are:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Return Codes from Compilation of a C Program Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé RETURN Γöé Γöé
- Γöé CODE Γöé MEANING Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé 0 Γöé No error detected; compilation completed; suc- Γöé
- Γöé Γöé cessful execution anticipated. Γöé
- Γöé Γöé OR Γöé
- Γöé Γöé Possible error (warning) detected; compilation Γöé
- Γöé Γöé completed; successful execution probable. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé 12 Γöé Error detected; compilation may have been com- Γöé
- Γöé Γöé pleted; successful execution impossible. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé 16 Γöé Severe error detected; compilation terminated Γöé
- Γöé Γöé abnormally; successful execution impossible. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé 20 Γöé Fatal error detected; compilation terminated Γöé
- Γöé Γöé abnormally and abruptly; successful execution Γöé
- Γöé Γöé impossible. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 7.1. Compiler Messages ΓòÉΓòÉΓòÉ
-
-
- Message Format: filename.ext(line:col): ss EDCnnnn: text
-
- where:
-
- filename.ext - file name (with extension) where the error occurred
- line - line where the error occurred
- col - column where the error occurred
- ss - error severity:
- 00 - informational
- 10 - warning
- 30 - error
- 40 - severe error
- 50 - fatal error
- nnnn - error message number
- text - message text, which may contain substitution
- text indicated by &n
-
- Note: The message text is prefixed with the severity string (for example,
- warning), not with the severity number.
-
- Messages other than those in the 4000 range are prefixed with the name of the
- file and the line and column number where the message was generated.
-
- For messages in the 4000 range, the file name and line number where the error
- occurred follow the message text. The severity of errors for these messages is
- determined dynamically as the error occurs. If the error is unrecognized by the
- compiler, it is prefaced by unknown error. If one of these messages is
- generated, contact your IBM Service representative.
-
- In migration mode (using the /Sm option or the #pragma langlvl(mig)
- directive), error checking is less strict in some cases. Informational or
- warning messages are generated where error messages would be generated in any
- other mode.
-
- There are four messages that are generated if the message files cannot be
- accessed. They are:
-
- Cannot find the message.
-
- Cannot access the message file.
-
- The message file format is not valid.
-
- Cannot find the message file.
- If one of these messages is generated, ensure that
-
- o The DPATH variable is set in your CONFIG.SYS file
- o The message files are in a directory in the DPATH
- o The DPATH allows read access to the directories specified
- o The file system is functioning properly
- o The message files are not corrupted.
- Reinstall the message files if any have been corrupted. Reboot the system.
-
- If the problem persists, contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.2. EDC0001 ΓòÉΓòÉΓòÉ
-
- Internal compiler error at procedure &1.
-
- An error occurred during compilation.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.3. EDC0002 ΓòÉΓòÉΓòÉ
-
- Unexpected compiler error #&1&2 occurred.
-
- An error occurred from which the compiler was not able to recover.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.4. EDC0003 ΓòÉΓòÉΓòÉ
-
- Compilation aborted by user.
-
- Ctrl-Break or Ctrl-C was pressed to stop the compiler.
-
- Recovery: None.
-
-
- ΓòÉΓòÉΓòÉ 7.5. EDC0041 ΓòÉΓòÉΓòÉ
-
- Identifier &1 must be declared prior to use.
-
- A C identifier must be declared before it is used in an expression.
-
- Recovery: Declare an identifier of that name in the current scope or in a
- higher scope.
-
-
- ΓòÉΓòÉΓòÉ 7.6. EDC0042 ΓòÉΓòÉΓòÉ
-
- A declaration must declare a variable, a tag, or enum members.
-
- A data type cannot be followed by a semicolon or an enum tag without the list
- of enum constants.
-
- Recovery: Add a variable name to the data type or provide the list of enum
- constants to complete the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.7. EDC0043 ΓòÉΓòÉΓòÉ
-
- A type must be specified in the declaration of the object &1.
-
- A declaration must always specify the type of the object declared or the return
- type of the function declared. A missing type (an object name followed by a
- semicolon) does not default to int.
-
- Recovery: Declare the object or function with a type.
-
-
- ΓòÉΓòÉΓòÉ 7.8. EDC0044 ΓòÉΓòÉΓòÉ
-
- An incomplete struct or union tag cannot be used in a declaration.
-
- Only pointer declarations can include incomplete types. A struct or union tag
- is undefined when the list describing the name and type of its members has not
- been specified.
-
- Recovery: Define the tag before it is used in the declaration of an identifier
- or complete the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.9. EDC0045 ΓòÉΓòÉΓòÉ
-
- The enum constants must be specified when the enum tag is declared.
-
- When an enumeration tag is declared, the list of the enumeration constants must
- be included in the declaration.
-
- Recovery: Add the list of enumeration constants in the enum tag declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.10. EDC0047 ΓòÉΓòÉΓòÉ
-
- External objects cannot be initialized in a block.
-
- Recovery: Initialize the external object in the external declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.11. EDC0050 ΓòÉΓòÉΓòÉ
-
- A C reserved word cannot appear in a #pragma directive.
-
- Recovery: Replace the reserved word by the name of a function or variable.
-
-
- ΓòÉΓòÉΓòÉ 7.12. EDC0060 ΓòÉΓòÉΓòÉ
-
- Width of bit-field &1 must be less than or equal to 32 bits.
-
- Recovery: Define the bit-field again so that it does not exceed 32 bits.
-
-
- ΓòÉΓòÉΓòÉ 7.13. EDC0061 ΓòÉΓòÉΓòÉ
-
- Bit-field &1 must have type signed int or unsigned int.
-
- Recovery: Define the bit-field again so that it has type signed int or unsigned
- int.
-
-
- ΓòÉΓòÉΓòÉ 7.14. EDC0062 ΓòÉΓòÉΓòÉ
-
- A bit-field with a zero width must be unnamed.
-
- Recovery: Redefine the bit-field so that it has a width greater than zero or
- remove the name of the bit-field.
-
-
- ΓòÉΓòÉΓòÉ 7.15. EDC0063 ΓòÉΓòÉΓòÉ
-
- Width of bit-field &1 must be a constant expression.
-
- Recovery: Replace the expression that specifies the width of the bit-field by a
- constant expression.
-
-
- ΓòÉΓòÉΓòÉ 7.16. EDC0064 ΓòÉΓòÉΓòÉ
-
- Width of bit-field &1 must be positive.
-
- Recovery: Replace the constant expression that specifies the width of the
- bit-field by a positive value.
-
-
- ΓòÉΓòÉΓòÉ 7.17. EDC0065 ΓòÉΓòÉΓòÉ
-
- Width of bit-field &1 must be a constant integral expression.
-
- Recovery: Replace the constant expression that specifies the width of the
- bit-field by a constant integral expression.
-
-
- ΓòÉΓòÉΓòÉ 7.18. EDC0067 ΓòÉΓòÉΓòÉ
-
- A struct or union member cannot be declared with a storage class.
-
- A storage class specifier was found in the declaration of a struct or union
- member. Members automatically take on the same storage class as their parent
- structure or union.
-
- Recovery: Remove the storage class specifier from the member of the struct or
- union.
-
-
- ΓòÉΓòÉΓòÉ 7.19. EDC0068 ΓòÉΓòÉΓòÉ
-
- The &1 definition must specify a member list.
-
- The declaration of a struct or a union that includes an empty member list
- enclosed between braces is not a valid struct or union definition.
-
- Recovery: Specify the members of the struct or union in the definition or
- remove the empty braces to make it a simple struct or union tag declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.20. EDC0069 ΓòÉΓòÉΓòÉ
-
- A member declaration must specify a name.
-
- A struct or union member declaration must specify a name. A type cannot be
- followed by a semicolon.
-
- Recovery: Declare the member with a name.
-
-
- ΓòÉΓòÉΓòÉ 7.21. EDC0080 ΓòÉΓòÉΓòÉ
-
- An object cannot be cast to an aggregate, union or function type.
-
- An attempt was made to cast an operand to an aggregate, union or function type.
-
- Recovery: Use pointers instead of aggregate, union or function objects. Cast
- the new pointer operand to a pointer to the desired struct, union or function
- type.
-
-
- ΓòÉΓòÉΓòÉ 7.22. EDC0081 ΓòÉΓòÉΓòÉ
-
- A struct or union cannot be cast to another data type.
-
- Recovery: Use a pointer to the struct or union as the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.23. EDC0082 ΓòÉΓòÉΓòÉ
-
- The data conversion is not valid.
-
- The statement contains an expression that converts data to a type that is not
- valid. See the SAA CPI C Reference for the table of correct data conversions.
-
- Recovery: Check the type declaration of the indicated operand and the type of
- the conversion. Ensure the conversion is correct.
-
-
- ΓòÉΓòÉΓòÉ 7.24. EDC0083 ΓòÉΓòÉΓòÉ
-
- Only casts to arithmetic types are allowed in an arithmetic constant
- expression.
-
- In an arithmetic constant expression, casts must be to arithmetic types. Valid
- arithmetic types include: char, signed and unsigned int, enum, float, double,
- and long double.
-
- Recovery: Remove the cast operator or change the cast to an arithmetic one.
-
-
- ΓòÉΓòÉΓòÉ 7.25. EDC0096 ΓòÉΓòÉΓòÉ
-
- The subscript must be a constant integral expression.
-
- Recovery: Replace the expression that specifies the array subscript by a
- constant integral expression.
-
-
- ΓòÉΓòÉΓòÉ 7.26. EDC0097 ΓòÉΓòÉΓòÉ
-
- Pointers to void and pointers to function are not assignment compatible.
-
- Recovery: Ensure that your function declarations are correct.
-
-
- ΓòÉΓòÉΓòÉ 7.27. EDC0098 ΓòÉΓòÉΓòÉ
-
- Pointers to void and pointers to function cannot be compared.
-
- Recovery: Check the logic of the comparison.
-
-
- ΓòÉΓòÉΓòÉ 7.28. EDC0099 ΓòÉΓòÉΓòÉ
-
- A pointer to incomplete type cannot be subscripted.
-
- Recovery: Define the type before you reference it.
-
-
- ΓòÉΓòÉΓòÉ 7.29. EDC0100 ΓòÉΓòÉΓòÉ
-
- Operand of bitwise complement must have integral type.
-
- The operand of the bitwise complement operator does not have an integral type.
- Valid integral types include: signed and unsigned char; signed and unsigned
- short, long, and int; and enum.
-
- Recovery: Change the type of the operand, or use a different operand.
-
-
- ΓòÉΓòÉΓòÉ 7.30. EDC0101 ΓòÉΓòÉΓòÉ
-
- Operand of unary minus operator must have arithmetic type.
-
- The operand of the unary minus operator (-) does not have an arithmetic type.
- Valid arithmetic types include: signed and unsigned char; signed and unsigned
- short, long, and int; enum, float, double, and long double.
-
- Recovery: Change the type of the operand, or use a different operand.
-
-
- ΓòÉΓòÉΓòÉ 7.31. EDC0102 ΓòÉΓòÉΓòÉ
-
- Operand of logical negation must have scalar type.
-
- The operand of the logical negation operator (!) does not have a scalar type.
- Valid scalar types include: signed and unsigned char; signed and unsigned
- short, long, and int; enum, float, double, long double, and pointers.
-
- Recovery: Change the type of the operand, or use a different operand.
-
-
- ΓòÉΓòÉΓòÉ 7.32. EDC0104 ΓòÉΓòÉΓòÉ
-
- Only pointers to compatible types can be subtracted.
-
- The expression must contain pointers to compatible data types. See the SAA CPI
- C Reference for the rules on compatible types.
-
- Recovery: Ensure that the pointers point to compatible data types.
-
-
- ΓòÉΓòÉΓòÉ 7.33. EDC0105 ΓòÉΓòÉΓòÉ
-
- Operand of address operator must be a function or an lvalue.
-
- The operand of the address operator (unary &) is not valid. The operand must be
- either a function designator or an lvalue that designates an object that is not
- a bit-field and is not declared with register storage class.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.34. EDC0106 ΓòÉΓòÉΓòÉ
-
- The sizeof operator cannot be used with a function, void or bit-field.
-
- The operand of the sizeof operator is not valid. The sizeof operator cannot be
- applied to an expression that has a function type or an incomplete type, to the
- parenthesized name of such a type, or to an lvalue that designates a bit-field
- object.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.35. EDC0107 ΓòÉΓòÉΓòÉ
-
- Operand of indirection operator must be a pointer.
-
- The operand of the indirection operator (unary *) is not a pointer.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.36. EDC0108 ΓòÉΓòÉΓòÉ
-
- Operand of arrow operator must be a pointer to a struct or union.
-
- The left hand operand of the arrow operator (->) must have type "pointer to
- structure" or "pointer to union".
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.37. EDC0109 ΓòÉΓòÉΓòÉ
-
- The subscript must be an integral expression.
-
- The subscript expression must have integral type. Valid integral types include:
- char, signed and unsigned int, and enum.
-
- Recovery: Change the subscript expression to have an integral type.
-
-
- ΓòÉΓòÉΓòÉ 7.38. EDC0110 ΓòÉΓòÉΓòÉ
-
- Operand of dot operator must be a struct or a union.
-
- The left hand operand of the dot (.) operator is not of type struct or union.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.39. EDC0111 ΓòÉΓòÉΓòÉ
-
- Identifier &1 must be a member of the struct or union.
-
- The specified member does not belong to the structure or union given. One of
- the following has occurred:
-
- 1. The right hand operand of the dot (.) operator is not a member of the
- structure or union specified on the left hand side of the operator.
-
- 2. The right hand operand of the arrow (->) operator is not a member of the
- structure or union pointed to by the pointer on the left hand side of the
- operator.
-
- Recovery: Change the identifier.
-
-
- ΓòÉΓòÉΓòÉ 7.40. EDC0112 ΓòÉΓòÉΓòÉ
-
- The expression must be a function designator.
-
- The expression is followed by an argument list but does not evaluate to a
- function designator.
-
- Recovery: Change the expression to be a function or a pointer to a function.
-
-
- ΓòÉΓòÉΓòÉ 7.41. EDC0113 ΓòÉΓòÉΓòÉ
-
- Operand must have integral type.
-
- The operand of the bitwise operators or modulus (%) operator must have integral
- type. Valid integral types include: char, signed and unsigned int, and enum.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.42. EDC0114 ΓòÉΓòÉΓòÉ
-
- Operand must be a modifiable lvalue.
-
- See the SAA CPI C Reference for a description of lvalue.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.43. EDC0115 ΓòÉΓòÉΓòÉ
-
- A struct or union can be assigned only to a compatible type.
-
- Two structures have compatible types if both have been declared with the same
- structure tag. Two unions have compatible types if both have been declared
- with the same union tag. However, tags are scope sensitive. Even if two tag
- names and their member lists are identical, if their definitions are located in
- different scopes, the types associated with these tags are different.
-
- Recovery: Make sure that the structures or unions used in the assignment have
- been declared with the same tag in the same scope.
-
-
- ΓòÉΓòÉΓòÉ 7.44. EDC0116 ΓòÉΓòÉΓòÉ
-
- Identifier &1 cannot be redeclared as an enum tag.
-
- In the declaration, the object is declared to be an enum tag. The object was
- previously declared to the tag of a struct or union type.
-
- Recovery: Change the name of the tag.
-
-
- ΓòÉΓòÉΓòÉ 7.45. EDC0117 ΓòÉΓòÉΓòÉ
-
- The operation between these types is not valid.
-
- The identifiers on the left hand side and the right hand side of the operator
- have types that do not respect the restrictions of the operator. The operation
- specified in the expression cannot be performed. See the SAA CPI C Reference
- for the list of operator restrictions.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.46. EDC0118 ΓòÉΓòÉΓòÉ
-
- The divisor for the modulus or division operator cannot be zero.
-
- The value of the divisor expression cannot be zero.
-
- Recovery: Change the expression used as the divisor.
-
-
- ΓòÉΓòÉΓòÉ 7.47. EDC0119 ΓòÉΓòÉΓòÉ
-
- The void pointer must be cast prior to this operation.
-
- A void pointer must be cast to a data type before it is used in this operation.
-
- Recovery: Cast the pointer to a type other than void prior to this operation.
-
-
- ΓòÉΓòÉΓòÉ 7.48. EDC0120 ΓòÉΓòÉΓòÉ
-
- Operand of unary plus operator must have arithmetic type.
-
- The operand of the unary plus operator (+) does not have an arithmetic type.
- Valid arithmetic types include: signed and unsigned char; signed and unsigned
- short, long, and int; enum, float, double, and long double.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.49. EDC0121 ΓòÉΓòÉΓòÉ
-
- Operand must have scalar type.
-
- The operand for this operation does not have scalar type. Valid scalar types
- include: signed and unsigned char; signed and unsigned short, long, and int;
- enum, float, double, long double, and pointers.
-
- Recovery: Change the type of the operand, or use a different operand.
-
-
- ΓòÉΓòÉΓòÉ 7.50. EDC0122 ΓòÉΓòÉΓòÉ
-
- Operand must have arithmetic type.
-
- The operand of this operation does not have arithmetic type. Valid arithmetic
- types include: signed and unsigned char; signed and unsigned short, long, and
- int; enum, float, double, and long double.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.51. EDC0123 ΓòÉΓòÉΓòÉ
-
- If one operand is void, the other must be void.
-
- If one operand in the conditional expression has type void, the other operand
- must also have type void.
-
- Recovery: Make the operands compatible.
-
-
- ΓòÉΓòÉΓòÉ 7.52. EDC0125 ΓòÉΓòÉΓòÉ
-
- Operands of the conditional operator must have compatible types.
-
- If one operand of the conditional expression has type struct or union, the
- other operand must be a struct or union declared using the same tag in the same
- scope. Two structures have compatible types if both have been declared with the
- same structure tag. Two unions are have compatible types if both have been
- declared with the same union tag. However, tags are scope sensitive. Even if
- two tag names and their member lists are identical, if their definitions are
- located in different scopes, the types associated with these tags are
- different.
-
- Recovery: Make sure that the structures or unions used in the conditional
- expression have been declared/defined with the same tag (in the same scope).
-
-
- ΓòÉΓòÉΓòÉ 7.53. EDC0126 ΓòÉΓòÉΓòÉ
-
- If one operand is a pointer, the other must also be a pointer.
-
- If one operand of either the relational or the equality operator is a pointer,
- the other operand must be either a pointer to the same qualified or unqualified
- type, a NULL pointer, or a pointer to void.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.54. EDC0127 ΓòÉΓòÉΓòÉ
-
- If the operands are pointers, they must point to compatible types.
-
- If one operand of either the relational or the equality operator is a pointer,
- the other operand must be either a pointer to the same qualified or unqualified
- type, a NULL pointer, or a pointer to void.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.55. EDC0128 ΓòÉΓòÉΓòÉ
-
- Two pointers cannot be added.
-
- The addition operator requires that either both operands have arithmetic type
- or, if one of the operands is a pointer, the other one must have integral type.
- Valid integral types include: char, signed and unsigned int, and enum. Valid
- arithmetic types include: the integral types plus float, double, long double,
- and bit fields.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.56. EDC0129 ΓòÉΓòÉΓòÉ
-
- The offsetof macro cannot be used with an incomplete struct or union.
-
- A structure or union is incomplete when the definition of its tag has not been
- specified. A struct or union tag is undefined when the list describing the
- name and type of its members has not been specified.
-
- Recovery: Define the tag before using it with the offsetof macro.
-
-
- ΓòÉΓòÉΓòÉ 7.57. EDC0130 ΓòÉΓòÉΓòÉ
-
- The operation cannot be performed on an incomplete struct or union.
-
- The definition of the operand must be completed prior to this operations. A
- structure or union type is completed when the definition of its tag is
- specified. A struct or union tag is defined when the list describing the name
- and type of its members is specified.
-
- Recovery: Define the tag before using it in an expression.
-
-
- ΓòÉΓòÉΓòÉ 7.58. EDC0131 ΓòÉΓòÉΓòÉ
-
- Subtraction between void pointers is not allowed.
-
- Recovery: Cast the pointers to a type other than void or do not subtract them.
-
-
- ΓòÉΓòÉΓòÉ 7.59. EDC0132 ΓòÉΓòÉΓòÉ
-
- A pointer to void cannot be subscripted.
-
- The subscript operator requires a pointer to a valid address.
-
- Recovery: Cast the pointer to a type other than void before using it with the
- subscript operator.
-
-
- ΓòÉΓòÉΓòÉ 7.60. EDC0133 ΓòÉΓòÉΓòÉ
-
- An identifier can not be declared in a cast or sizeof expression.
-
- Only abstract declarators can appear in cast or sizeof expressions.
-
- Recovery: Remove the identifier from the cast or sizeof expression and replace
- it with an abstract declarator.
-
-
- ΓòÉΓòÉΓòÉ 7.61. EDC0134 ΓòÉΓòÉΓòÉ
-
- The sizeof operator cannot be used with an incomplete struct.
-
- A struct is incomplete when the definition of its tag has not been specified.
- A struct tag is undefined when the list describing the name and type of its
- members has not been specified.
-
- Recovery: Define the tag before using it with the sizeof operator.
-
-
- ΓòÉΓòÉΓòÉ 7.62. EDC0135 ΓòÉΓòÉΓòÉ
-
- The sizeof operator cannot be used with an incomplete union.
-
- A union is incomplete when the definition of its tag has not been specified. A
- union tag is undefined when the list describing the name and type of its
- members has not been specified.
-
- Recovery: Define the tag before using it with the sizeof operator.
-
-
- ΓòÉΓòÉΓòÉ 7.63. EDC0136 ΓòÉΓòÉΓòÉ
-
- The sizeof operator cannot be used with arrays of unknown size.
-
- Recovery: Make sure the array and its size have been declared before using it
- with the sizeof operator.
-
-
- ΓòÉΓòÉΓòÉ 7.64. EDC0137 ΓòÉΓòÉΓòÉ
-
- The indirection operator cannot be applied to a pointer to an incomplete struct
- or union.
-
- Except for pointers, it is not valid to declare an object of incomplete
- structure or union type. A structure or union is incomplete when the
- definition of its tag has not been specified. A struct or union tag is
- undefined when the list describing the name and type of its members has not
- been specified.
-
- Recovery: Define the tag before using it in the declaration of an identifier.
-
-
- ΓòÉΓòÉΓòÉ 7.65. EDC0138 ΓòÉΓòÉΓòÉ
-
- The indirection operator cannot be applied to a void pointer.
-
- The indirection operator requires a pointer to a valid address.
-
- Recovery: Cast the pointer to a type other than void before using it with the
- indirection operator.
-
-
- ΓòÉΓòÉΓòÉ 7.66. EDC0139 ΓòÉΓòÉΓòÉ
-
- A translation unit must contain at least one external declaration.
-
- A translation unit that does not contain any external declaration will not be
- linked to. Normally it will not affect the execution of the executable program.
-
- Recovery: Make sure this is what was intended or change the appropriate
- declarations to the external ones.
-
-
- ΓòÉΓòÉΓòÉ 7.67. EDC0140 ΓòÉΓòÉΓòÉ
-
- Operand has type &1.
-
- An error has occurred due to conflicting operands. This message states the
- type of the operand used in the expression.
-
- Recovery: No recovery is necessary if this result was intended. Change the type
- of the operand if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.68. EDC0141 ΓòÉΓòÉΓòÉ
-
- Prototype has type &1.
-
- An error has occurred due to conflicting function declarations. This message
- states the type of the prototype declaration.
-
- Recovery: No recovery is necessary if this result was intended. Change the type
- of the prototype if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.69. EDC0142 ΓòÉΓòÉΓòÉ
-
- Previous declaration has type &1.
-
- An error has occurred due to conflicting identifier declarations. This message
- states the type of the identifier in the current declaration.
-
- Recovery: No recovery is necessary if this result was intended. Change the
- declarations to the same type if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.70. EDC0143 ΓòÉΓòÉΓòÉ
-
- The post- and pre- increment and decrement operators cannot be applied to void
- pointers.
-
- Pointers to void cannot be incremented or decremented.
-
- Recovery: Cast the pointer to a type other than void before using it with any
- one of the increment or decrement operators.
-
-
- ΓòÉΓòÉΓòÉ 7.71. EDC0144 ΓòÉΓòÉΓòÉ
-
- The address operator cannot be used with arrays of unknown size.
-
- Recovery: Make sure the array and its size have been declared before using it
- with the address operator.
-
-
- ΓòÉΓòÉΓòÉ 7.72. EDC0145 ΓòÉΓòÉΓòÉ
-
- Redeclaration has type &1.
-
- An error has occurred because of conflicting declarations. This message states
- the type of the identifier in the redeclarations.
-
- Recovery: No recovery is necessary if this result was intended. Change the
- types in the declarations to be compatible, if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.73. EDC0146 ΓòÉΓòÉΓòÉ
-
- Function has return type &1.
-
- Recovery: No recovery is necessary if this result was intended. Change the
- return type if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.74. EDC0147 ΓòÉΓòÉΓòÉ
-
- Argument has type &1.
-
- The argument type in the function call conflicts with the parameter in the
- function prototype. This message states the type of the argument.
-
- Recovery: No recovery is necessary if this result was intended. Change the
- argument types to be compatible, if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.75. EDC0148 ΓòÉΓòÉΓòÉ
-
- Expression has type &1.
-
- Recovery: Informational message. No recovery is necessary if this result was
- intended.
-
-
- ΓòÉΓòÉΓòÉ 7.76. EDC0149 ΓòÉΓòÉΓòÉ
-
- Operation not allowed with enum that is not defined.
-
- The sizeof or cast operator cannot be used with enum that is not defined.
-
- Recovery: Declare the enum.
-
-
- ΓòÉΓòÉΓòÉ 7.77. EDC0150 ΓòÉΓòÉΓòÉ
-
- The number of initializers cannot be greater than the number of elements.
-
- Too many initializers were found in the initializer list for the indicated
- declaration.
-
- Recovery: Check the number of initializers. Check the closing brace at the end
- of the initializer list to ensure that it has been positioned correctly.
-
-
- ΓòÉΓòÉΓòÉ 7.78. EDC0151 ΓòÉΓòÉΓòÉ
-
- The initializer must be a constant expression.
-
- The initializers for identifiers of static storage duration, or for identifiers
- of an array, structure, or union type must be constant expressions.
-
- Recovery: Remove the initialization or change the indicated initializer to a
- constant expression.
-
-
- ΓòÉΓòÉΓòÉ 7.79. EDC0152 ΓòÉΓòÉΓòÉ
-
- A register array may only be used as the operand to sizeof.
-
- The only operator that may be applied to a register array is sizeof.
-
- Recovery: Remove the register keyword from the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.80. EDC0153 ΓòÉΓòÉΓòÉ
-
- An initializer for a static identifier cannot have the automatic storage class.
-
- The initializer cannot have an automatic storage class if the identifier being
- initialized has a static storage class.
-
- Recovery: Either change the storage class in the identifier declaration or
- change the initializer.
-
-
- ΓòÉΓòÉΓòÉ 7.81. EDC0166 ΓòÉΓòÉΓòÉ
-
- A non-lvalue array cannot be subscripted.
-
- Subscript operator cannot be used with a non-lvalue array.
-
- Recovery: Change the array to an lvalue one.
-
-
- ΓòÉΓòÉΓòÉ 7.82. EDC0167 ΓòÉΓòÉΓòÉ
-
- A non-lvalue array cannot be used in this context.
-
- The location of a non-lvalue array may not be referenced.
-
- Recovery: Change the array to an lvalue one.
-
-
- ΓòÉΓòÉΓòÉ 7.83. EDC0168 ΓòÉΓòÉΓòÉ
-
- Invalid operation on a function pointer.
-
- Subscript operator, additive operator, and pre- and post-increment and
- decrement operators cannot be used with an operand of type pointer to function.
-
- Recovery: Change the operator or the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.84. EDC0170 ΓòÉΓòÉΓòÉ
-
- A function cannot be initialized.
-
- An attempt was made to assign an initial value to a function identifier.
-
- Recovery: Remove the assignment operator and the initializer.
-
-
- ΓòÉΓòÉΓòÉ 7.85. EDC0171 ΓòÉΓòÉΓòÉ
-
- A function cannot return a function.
-
- A function cannot have a return type of function.
-
- Recovery: Return a pointer to the function or specify a different return type.
-
-
- ΓòÉΓòÉΓòÉ 7.86. EDC0172 ΓòÉΓòÉΓòÉ
-
- Function &1 cannot have a storage class of auto or register.
-
- Recovery: Remove the storage class specifier for the function identifier, or
- change it to either extern or static.
-
-
- ΓòÉΓòÉΓòÉ 7.87. EDC0173 ΓòÉΓòÉΓòÉ
-
- A function cannot be a member of a struct or union.
-
- Recovery: Use a pointer to the function or remove the function from the member
- list.
-
-
- ΓòÉΓòÉΓòÉ 7.88. EDC0174 ΓòÉΓòÉΓòÉ
-
- A function cannot return a const qualified type.
-
- Recovery: Remove the const qualifier or return a pointer to the const qualified
- type.
-
-
- ΓòÉΓòÉΓòÉ 7.89. EDC0175 ΓòÉΓòÉΓòÉ
-
- A function cannot return a volatile qualified type.
-
- Recovery: Remove the volatile qualifier or return a pointer to the volatile
- qualified type.
-
-
- ΓòÉΓòÉΓòÉ 7.90. EDC0176 ΓòÉΓòÉΓòÉ
-
- Return type must be compatible with declaration of function &1.
-
- The return statement of the function tries to return a structure or a union
- type that is not compatible with the return type specified in the function
- declaration/definition. The type of a structure or union is represented by its
- tag. Two structures have compatible types if both have been declared with the
- same structure tag. Two unions are have compatible types if both have been
- declared with the same union tag. However, tags are scope sensitive. Even if
- two tag names and their member lists are identical, if their definitions are
- located in different scopes, the types associated with these tags are
- different.
-
- Recovery: Make sure that the same tag (in the same scope) is used in the
- function declaration/definition, as well as in the declaration/definition of
- the value specified on the return statement,
-
-
- ΓòÉΓòÉΓòÉ 7.91. EDC0177 ΓòÉΓòÉΓòÉ
-
- A function declared to return void cannot return a value.
-
- When a function is declared to have a void return type, the return statement of
- the function cannot return any value. An attempt was made to return a value in
- a function that was declared/defined with a void return type.
-
- Recovery: Change the declaration to specify the return type or do not return a
- value.
-
-
- ΓòÉΓòÉΓòÉ 7.92. EDC0178 ΓòÉΓòÉΓòÉ
-
- A function cannot return an array.
-
- Recovery: Return a pointer to the array or specify a different return type.
-
-
- ΓòÉΓòÉΓòÉ 7.93. EDC0179 ΓòÉΓòÉΓòÉ
-
- The function &1 cannot be redefined.
-
- It is not valid to define a function more than once. Do not confuse function
- definitions and function declarations. A declaration describes the return type
- of the function. A definition is a declaration followed by the code that is to
- be executed when the function is called (the code portion is called the
- function body). Only one definition per function is allowed.
-
- Recovery: Remove all extra definitions or change the name of the function.
-
-
- ΓòÉΓòÉΓòÉ 7.94. EDC0180 ΓòÉΓòÉΓòÉ
-
- The static function &1 is referenced but is not defined in this file.
-
- A static function was declared and referenced in this file. The definition of
- the function was not found before the end of the file. When a function is
- declared to be static, the function definition must appear in the same file.
-
- Recovery: Define the function or remove the static storage class.
-
-
- ΓòÉΓòÉΓòÉ 7.95. EDC0181 ΓòÉΓòÉΓòÉ
-
- The struct, union, or enum tag &1 cannot be redefined.
-
- A struct or union tag is defined when it is declared with the list describing
- the name and type of its members. An enum tag is defined when it is declared
- with the list of its enumeration constants. It is invalid to define a struct,
- union, or enum tag more than once in the same scope.
-
- Recovery: Remove all extra definitions or rename the tag.
-
-
- ΓòÉΓòÉΓòÉ 7.96. EDC0182 ΓòÉΓòÉΓòÉ
-
- A function cannot be an element of an array.
-
- Recovery: Use a pointer to the function, or change the type of the element.
-
-
- ΓòÉΓòÉΓòÉ 7.97. EDC0183 ΓòÉΓòÉΓòÉ
-
- An argument cannot be an incomplete struct or union.
-
- The argument has an incomplete struct or union type. A structure or union is
- incomplete when the definition of the tag (i.e. when the number and the type of
- its members) has not been specified. It is not valid to pass arguments of
- incomplete type to a function.
-
- Recovery: Use a pointer to the incomplete type or define the type before using
- it.
-
-
- ΓòÉΓòÉΓòÉ 7.98. EDC0184 ΓòÉΓòÉΓòÉ
-
- An argument cannot have type void.
-
- The indicated parameter has type void. You cannot pass a parameter of type
- void on a function call.
-
- Recovery: Use a pointer to void or cast the type of the argument.
-
-
- ΓòÉΓòÉΓòÉ 7.99. EDC0185 ΓòÉΓòÉΓòÉ
-
- Function &1 has not been prototyped prior to use.
-
- A prototype declaration of the function specifying the number and type of the
- parameters was not found before the function was called. Errors may occur if
- the function call does not respect the function definition.
-
- Recovery: Include a prototype declaration of the function before calling it.
-
-
- ΓòÉΓòÉΓòÉ 7.100. EDC0187 ΓòÉΓòÉΓòÉ
-
- The declaration or definition of the function is not valid.
-
- The compiler cannot read the declaration. It assumes that it was an invalid
- function declaration. The return type or the parameters may have been
- specified incorrectly.
-
- Recovery: Check for incorrect spelling or missing parentheses.
-
-
- ΓòÉΓòÉΓòÉ 7.101. EDC0189 ΓòÉΓòÉΓòÉ
-
- The return type of the function main must have type int.
-
- Recovery: Change the return type of function main to int.
-
-
- ΓòÉΓòÉΓòÉ 7.102. EDC0190 ΓòÉΓòÉΓòÉ
-
- A switch expression must have integral type.
-
- The controlling expression in a switch statement must have integral type.
- Valid integral type include: char, signed and unsigned int, and enum.
-
- Recovery: Change the expression.
-
-
- ΓòÉΓòÉΓòÉ 7.103. EDC0191 ΓòÉΓòÉΓòÉ
-
- A case label must be a constant integral expression.
-
- The expression in the case statement must be a constant integral expression.
- Valid integral expressions are: char, signed and unsigned int, and enum.
-
- Recovery: Change the expression.
-
-
- ΓòÉΓòÉΓòÉ 7.104. EDC0192 ΓòÉΓòÉΓòÉ
-
- The case label cannot be a duplicate of the case label on line &1.
-
- Two case labels in the same switch statement cannot evaluate to the same
- integer value.
-
- Recovery: Change one of the labels.
-
-
- ΓòÉΓòÉΓòÉ 7.105. EDC0193 ΓòÉΓòÉΓòÉ
-
- A default case label cannot be placed outside a switch statement.
-
- Recovery: Remove the default case label, or place it inside a switch statement.
- Check for misplaced braces on a previous switch statement.
-
-
- ΓòÉΓòÉΓòÉ 7.106. EDC0194 ΓòÉΓòÉΓòÉ
-
- A switch statement cannot contain more than one default statement.
-
- Recovery: Remove one of the default statements.
-
-
- ΓòÉΓòÉΓòÉ 7.107. EDC0195 ΓòÉΓòÉΓòÉ
-
- A case statement cannot be placed outside a switch statement.
-
- Recovery: Remove the case statement, or place it within a switch statement
- group. Check for misplaced braces on the previous switch statement.
-
-
- ΓòÉΓòÉΓòÉ 7.108. EDC0196 ΓòÉΓòÉΓòÉ
-
- The case label evaluates to integer value &1.
-
- An error occurred due to conflicting case labels. This message states the value
- of the case labels.
-
- Recovery: Change the case label if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.109. EDC0200 ΓòÉΓòÉΓòÉ
-
- A break statement cannot be placed outside a while, do, for or switch
- statement.
-
- Recovery: Remove the break statement or place it inside a while, do, for or
- switch statement. Check for misplaced braces on a previous statement.
-
-
- ΓòÉΓòÉΓòÉ 7.110. EDC0201 ΓòÉΓòÉΓòÉ
-
- A continue statement cannot be placed outside a while, do or for loop.
-
- Recovery: Remove the continue statement or place it inside a while, do or for
- loop. Check for misplaced braces on a previous loop.
-
-
- ΓòÉΓòÉΓòÉ 7.111. EDC0220 ΓòÉΓòÉΓòÉ
-
- Only arrays and pointers to object types can be subscripted.
-
- An attempt was made to subscript an identifier that was not an array or a
- pointer to an object type.
-
- Recovery: Remove the subscripts or change the identifier.
-
-
- ΓòÉΓòÉΓòÉ 7.112. EDC0221 ΓòÉΓòÉΓòÉ
-
- Array size must be a positive constant integral expression.
-
- The array was declared with an invalid size. If compilation continues, the
- compiler will assume that the array has size 1.
-
- Recovery: Make the array size a positive constant integral expression.
-
-
- ΓòÉΓòÉΓòÉ 7.113. EDC0222 ΓòÉΓòÉΓòÉ
-
- Arrays cannot be redeclared with a different size.
-
- Recovery: Make the size consistent with the previous declaration or remove one
- of the array declarations.
-
-
- ΓòÉΓòÉΓòÉ 7.114. EDC0223 ΓòÉΓòÉΓòÉ
-
- All array dimensions except the first must be specified.
-
- Only the first dimension of an initialized array may be unspecified. All the
- other dimensions must be specified on the declaration.
-
- Recovery: Specify all the other dimensions in the array declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.115. EDC0224 ΓòÉΓòÉΓòÉ
-
- All dimensions must be specified for array definitions.
-
- All the dimensions of arrays of automatic or static storage class must be
- specified on the declaration. If the declaration of the automatic or static
- array provides an initialization, the first dimension may be unspecified
- because the initialization will determine the size needed.
-
- Recovery: Specify all of the dimensions in the array declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.116. EDC0225 ΓòÉΓòÉΓòÉ
-
- Arrays that are members must have all dimensions specified.
-
- Arrays that are struct or union members must have all dimensions specified in
- the array declaration.
-
- Recovery: Specify all of the dimensions in the array declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.117. EDC0226 ΓòÉΓòÉΓòÉ
-
- The parameter lists of the function pointers are not compatible.
-
- If one operand of either the relational or the equality operator is a pointer,
- the other operand must be either a pointer to the same qualified or unqualified
- type, a NULL pointer, or a pointer to void.
-
- Recovery: Make sure that the parameter lists of the function pointers are
- compatible.
-
-
- ΓòÉΓòÉΓòÉ 7.118. EDC0227 ΓòÉΓòÉΓòÉ
-
- The return types of the function pointers are not compatible.
-
- If one operand of either the relational or the equality operator is a pointer,
- the other operand must be either a pointer to the same qualified or unqualified
- type, a NULL pointer, or a pointer to void.
-
- Recovery: Make sure that the return types of the function pointers are
- compatible.
-
-
- ΓòÉΓòÉΓòÉ 7.119. EDC0240 ΓòÉΓòÉΓòÉ
-
- Octal constant is too big for character representation.
-
- Octal character constants specified in an escape sequence exceeded the decimal
- value of 255, or the octal equivalent of 377.
-
- Recovery: Change the octal escape sequence so that the value does not exceed
- the maximum value.
-
-
- ΓòÉΓòÉΓòÉ 7.120. EDC0241 ΓòÉΓòÉΓòÉ
-
- Hex constant is too big for character representation.
-
- Hexadecimal character constants specified in an escape sequence exceeded the
- decimal value of 255, or the hexadecimal equivalent of FF.
-
- Recovery: Change the hexadecimal escape sequence so that the value does not
- exceed the maximum value.
-
-
- ΓòÉΓòÉΓòÉ 7.121. EDC0242 ΓòÉΓòÉΓòÉ
-
- Nesting cannot exceed the maximum limit &1.
-
- The internal compiler limit of &1 nested #include files was exceeded.
-
- Recovery: Remove the nesting by putting all of the #include files at the same
- level, or reduce it such that the maximum nesting level is not exceeded.
-
-
- ΓòÉΓòÉΓòÉ 7.122. EDC0244 ΓòÉΓòÉΓòÉ
-
- External name &1 has been truncated to &2.
-
- The external object has a name &1 which exceeds the limit and has been
- truncated to the name &2.
-
- Recovery: Change the name if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.123. EDC0247 ΓòÉΓòÉΓòÉ
-
- Virtual storage exceeded.
-
- The compiler ran out of memory trying to compile the file. This sometimes
- happens with large files or programs with large functions. Note that very large
- programs limit the amount of optimization that can be done.
-
- Recovery: Shut down any large processes that are running, make sure your swap
- path is large enough, turn off optimization, and redefine your virtual storage
- to a larger size. You can also divide the file into several small sections or
- shorten the function.
-
-
- ΓòÉΓòÉΓòÉ 7.124. EDC0248 ΓòÉΓòÉΓòÉ
-
- External name &1 cannot be redefined.
-
- An external name cannot be redefined. External names can have up to 255
- significant characters, and can be upper or lowercase. Because you can limit
- the number of significant characters using the /H option, the compiler may
- recognize two names as identical although they are not. For example, when you
- specify /H3, the identifiers ABCD and ABCE are considered identical because
- only the first three letters are significant.
-
- Recovery: Remove one of the definitions, change one of the names, or change the
- number specified on the /H option.
-
-
- ΓòÉΓòÉΓòÉ 7.125. EDC0249 ΓòÉΓòÉΓòÉ
-
- The number of errors exceeds the limit.
-
- The number of errors has exceeded the number specified on the /N option.
-
- Recovery: Fix the errors or increase the error limit on the /N option.
-
-
- ΓòÉΓòÉΓòÉ 7.126. EDC0250 ΓòÉΓòÉΓòÉ
-
- The maximum number of errors for one line has been exceeded.
-
- The compiler is unable to specify the location of each error in the listing
- because there are too many errors on one line.
-
- Recovery: Correct the errors or split the source line into multiple lines.
-
-
- ΓòÉΓòÉΓòÉ 7.127. EDC0260 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple sign type specifiers.
-
- A declaration can specify a signed or unsigned type, but not both.
-
- Recovery: Keep only one sign type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.128. EDC0261 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple length type specifiers.
-
- A declaration can specify a long or short type, but not both.
-
- Recovery: Keep only one length type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.129. EDC0262 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple type specifiers.
-
- A declaration can specify only one data type specifier. Valid specifiers
- include: char, int, float and double.
-
- Recovery: Keep only one type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.130. EDC0263 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple linkage specifiers.
-
- A declaration can specify only one linkage type. Valid linkage types include:
- _System, _Optlink, _Far16 _Cdecl, _Far16 _Pascal, and _Far16 _Fastcall.
-
- Recovery: Use only one linkage type.
-
-
- ΓòÉΓòÉΓòÉ 7.131. EDC0265 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple storage class specifiers.
-
- A declaration can specify only one storage class. Valid storage classes
- include: auto, static, extern, register and typedef.
-
- Recovery: Keep only one storage class specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.132. EDC0266 ΓòÉΓòÉΓòÉ
-
- The sign type specifier cannot be used with float or double.
-
- A sign type specifiers signed and unsigned cannot be used with type float or
- double.
-
- Recovery: Ensure that the appropriate type is used, and remove the sign type
- specifier from the declaration. Use type long double if a larger identifier is
- required.
-
-
- ΓòÉΓòÉΓòÉ 7.133. EDC0267 ΓòÉΓòÉΓòÉ
-
- The short type specifier cannot be used with float or double.
-
- Recovery: Ensure that the appropriate type specifier is used, and remove the
- short type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.134. EDC0268 ΓòÉΓòÉΓòÉ
-
- The long type specifier cannot be used with float.
-
- Recovery: Remove the long type specifier or use double instead of float.
-
-
- ΓòÉΓòÉΓòÉ 7.135. EDC0269 ΓòÉΓòÉΓòÉ
-
- The long or short type specifier cannot be used with char.
-
- Recovery: Remove the length type specifier. Use type int or short int if a
- larger identifier is required.
-
-
- ΓòÉΓòÉΓòÉ 7.136. EDC0270 ΓòÉΓòÉΓòÉ
-
- The long or short type specifier cannot be used with void.
-
- No other type specifier can be used with type void.
-
- Recovery: Remove the length type specifier or the void.
-
-
- ΓòÉΓòÉΓòÉ 7.137. EDC0271 ΓòÉΓòÉΓòÉ
-
- The sign type specifier cannot be used with void.
-
- The sign type specifiers signed and unsigned cannot be used with void.
-
- Recovery: Remove the sign type specifier or the void.
-
-
- ΓòÉΓòÉΓòÉ 7.138. EDC0272 ΓòÉΓòÉΓòÉ
-
- The long or short type specifier cannot be used with struct, union or enum.
-
- No other type specifiers can be used with struct, union or enum.
-
- Recovery: Remove the length type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.139. EDC0273 ΓòÉΓòÉΓòÉ
-
- The sign type specifier cannot be used with struct, union or enum.
-
- The sign type specifiers signed and unsigned cannot be used with struct, union
- or enum.
-
- Recovery: Remove the sign type specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.140. EDC0274 ΓòÉΓòÉΓòÉ
-
- The length type specifier cannot be used for variables declared with a typedef.
-
- No other type specifiers can be used for variables declared with a typedef.
-
- Recovery: Remove the length type specifier or the typedef.
-
-
- ΓòÉΓòÉΓòÉ 7.141. EDC0275 ΓòÉΓòÉΓòÉ
-
- The sign type specifier cannot be used for variables declared with a typedef.
-
- Recovery: Remove the sign type specifier or the typedef.
-
-
- ΓòÉΓòÉΓòÉ 7.142. EDC0277 ΓòÉΓòÉΓòÉ
-
- _Packed can only qualify a struct or union.
-
- Recovery: Remove the _Packed specifier from the declaration/definition, or
- ensure it qualifies a struct or union.
-
-
- ΓòÉΓòÉΓòÉ 7.143. EDC0278 ΓòÉΓòÉΓòÉ
-
- Declaration cannot specify multiple &1 specifiers.
-
- Recovery: Ensure that only one &1 specifier is used.
-
-
- ΓòÉΓòÉΓòÉ 7.144. EDC0279 ΓòÉΓòÉΓòÉ
-
- _Seg16 can only qualify a pointer type.
-
- Recovery: Remove the _Seg16 specifier from the declaration/definition, or
- ensure it qualifies a pointer.
-
-
- ΓòÉΓòÉΓòÉ 7.145. EDC0280 ΓòÉΓòÉΓòÉ
-
- The predefined macro &1 cannot be redefined.
-
- The macro &1 is predefined. You cannot redefine predefined macros.
-
- Recovery: Remove the redefine statement.
-
-
- ΓòÉΓòÉΓòÉ 7.146. EDC0281 ΓòÉΓòÉΓòÉ
-
- The identifier &1 cannot be redeclared.
-
- Only external objects can be redeclared.
-
- Recovery: Delete or change the name of the extra declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.147. EDC0282 ΓòÉΓòÉΓòÉ
-
- The struct member &1 cannot be redeclared.
-
- You cannot redeclare the same struct member. If you redeclare the structure
- itself, you must use the same tag.
-
- Recovery: Delete or change the name of the extra declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.148. EDC0283 ΓòÉΓòÉΓòÉ
-
- The tag &1 cannot be redefined as a tag of another type.
-
- The tag is already associated with another struct, union or enum type.
-
- Recovery: Delete or rename the tag.
-
-
- ΓòÉΓòÉΓòÉ 7.149. EDC0284 ΓòÉΓòÉΓòÉ
-
- The label &1 cannot be redefined.
-
- The label has already been defined in the function (a label of the same name
- followed by a colon and a section of code already appeared in the same
- function). It is not valid to redefine a label.
-
- Recovery: Change the name of one label.
-
-
- ΓòÉΓòÉΓòÉ 7.150. EDC0285 ΓòÉΓòÉΓòÉ
-
- #undef cannot be used with the predefined macro &1.
-
- You cannot undefine predefined macros.
-
- Recovery: Delete the #undef directive.
-
-
- ΓòÉΓòÉΓòÉ 7.151. EDC0286 ΓòÉΓòÉΓòÉ
-
- The redeclaration cannot specify a different storage class.
-
- The redeclaration, including type qualifiers (const, volatile), must be
- identical to the first declaration. Redeclaring basic types: The type (which
- includes the type specifiers and the length and sign adjectives) and the type
- qualifiers (const, volatile) must be the same. Redeclaring functions: The
- return type with its type qualifiers has to be the same. If the function has
- been prototyped, the prototyped redeclarations must have an identical parameter
- list (the number and type of the parameters must be the same). Redeclaring
- pointers: They have to point at the same type (including the type qualifiers).
- Redeclaring arrays: Their members must be of the same type (including the type
- qualifiers). The array size must be the same. Redeclaring enumerations,
- structures, and unions: They must have the same tag.
-
- Recovery: Ensure that the storage class of the subsequent declarations match
- the original declaration or remove one of the declarations.
-
-
- ΓòÉΓòÉΓòÉ 7.152. EDC0287 ΓòÉΓòÉΓòÉ
-
- The goto label is not defined in function &1.
-
- The goto label is referenced but not defined in the function. The label
- definition (label followed by a colon and a section of code) must appear in the
- same function that references the label.
-
- Recovery: Define the goto label in the function or remove the reference.
-
-
- ΓòÉΓòÉΓòÉ 7.153. EDC0288 ΓòÉΓòÉΓòÉ
-
- The void type can only be used with functions and pointers.
-
- The type void can only be used as the return type or parameter list of a
- function, or with a pointer indicating the type to which it is pointed. No
- other object can be of type void.
-
- Recovery: Ensure that the declaration uses type void correctly.
-
-
- ΓòÉΓòÉΓòÉ 7.154. EDC0289 ΓòÉΓòÉΓòÉ
-
- The typedef name &1 cannot be redefined.
-
- Redefinitions of typedef names are not allowed even if the definitions occur at
- file scope with identical type specifiers.
-
- Recovery: Remove identical definitions or, for a new definition, rename the
- typedef.
-
-
- ΓòÉΓòÉΓòÉ 7.155. EDC0290 ΓòÉΓòÉΓòÉ
-
- The auto storage class cannot be used with external identifier &1.
-
- Identifiers may only be declared with auto storage class if they are declared
- inside a block.
-
- Recovery: Remove the auto storage class specifier or change the scope of the
- identifier so that it is no longer at file scope.
-
-
- ΓòÉΓòÉΓòÉ 7.156. EDC0291 ΓòÉΓòÉΓòÉ
-
- The register storage class cannot be used with external identifier &1.
-
- Identifiers may only be declared with register storage class if they are
- declared inside a block.
-
- Recovery: Remove the register storage class specifier or change the scope of
- the identifier so that it is no longer at file scope.
-
-
- ΓòÉΓòÉΓòÉ 7.157. EDC0292 ΓòÉΓòÉΓòÉ
-
- The block scope declaration of object &1 must be compatible with its external
- declaration.
-
- This block scope redeclaration of the external object is incompatible with the
- previous external declaration.
-
- Recovery: Ensure that the block scope declaration is identical with the file
- scope declaration, or remove one of the declarations.
-
-
- ΓòÉΓòÉΓòÉ 7.158. EDC0293 ΓòÉΓòÉΓòÉ
-
- The static storage class cannot be used with functions declared at block scope.
-
- Recovery: Place the declaration of the static function at file scope, or remove
- the storage class specifier.
-
-
- ΓòÉΓòÉΓòÉ 7.159. EDC0294 ΓòÉΓòÉΓòÉ
-
- The typedef storage class cannot be used on function definitions.
-
- The typedef storage class can only be used with function declarations to
- declare a function type. A typedef name cannot carry the information of a
- function definition, it cannot specify the part of code to be executed when a
- function is called.
-
- Recovery: Remove the typedef storage class.
-
-
- ΓòÉΓòÉΓòÉ 7.160. EDC0297 ΓòÉΓòÉΓòÉ
-
- Only functions or typedefs of functions can be given a linkage type.
-
- You have applied either #pragma linkage or a linkage keyword to an identifier
- which does not correspond to a function type or a typedef of a function.
-
- Recovery: If the error applies to an identifier used on a #pragma linkage
- directive, then change the name specified on the #pragma linkage directive or
- remove the directive. If the error applies to an identifier used with a
- linkage keyword, then remove the keyword.
-
-
- ΓòÉΓòÉΓòÉ 7.161. EDC0298 ΓòÉΓòÉΓòÉ
-
- A #pragma &1 directive was previously specified for the object &2.
-
- More than one #pragma linkage directive was specified for the same object.
-
- Recovery: Remove the extra #pragma linkage directives.
-
-
- ΓòÉΓòÉΓòÉ 7.162. EDC0299 ΓòÉΓòÉΓòÉ
-
- A map name was previously given to the object &1.
-
- An object can map to only one name. See -- Reference prag370 not found -- for
- more information on #pragma map.
-
- Recovery: Remove the extra #pragma map directives.
-
-
- ΓòÉΓòÉΓòÉ 7.163. EDC0300 ΓòÉΓòÉΓòÉ
-
- The floating point constant is not valid.
-
- See the SAA CPI C Reference for a description of a floating-point constant.
-
- Recovery: Ensure that the floating-point constant does not contain any
- characters that are not valid.
-
-
- ΓòÉΓòÉΓòÉ 7.164. EDC0301 ΓòÉΓòÉΓòÉ
-
- A const qualified object cannot be modified.
-
- The value of a const cannot be changed. Increment/decrement can only be
- performed on objects that are not constants.
-
- Recovery: Either do not declare the object with the const type qualifier, or do
- not use the object in an increment/decrement operation.
-
-
- ΓòÉΓòÉΓòÉ 7.165. EDC0302 ΓòÉΓòÉΓòÉ
-
- An enum constant must be a constant integral expression.
-
- If an enum constant is initialized in the definition of an enum tag, the value
- that the constant is initialized to must be an integral expression.
-
- Recovery: Remove the initial value, or ensure that the initial value is an
- integral constant expression.
-
-
- ΓòÉΓòÉΓòÉ 7.166. EDC0303 ΓòÉΓòÉΓòÉ
-
- Only function names can be specified in a #pragma &1 directive.
-
- Recovery: Make sure that the spelling of the function name is correct and that
- the function name has been declared before you use it in this directive.
-
-
- ΓòÉΓòÉΓòÉ 7.167. EDC0307 ΓòÉΓòÉΓòÉ
-
- The floating-point constant is too large and is converted to an infinity.
-
- The magnitude of the floating-point constant specified is too large. The number
- is converted into positive or negative infinity, depending on the sign of the
- number.
-
- Recovery: Make sure this is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.168. EDC0308 ΓòÉΓòÉΓòÉ
-
- An enum constant must be an integral constant expression that has a value
- representable as an int.
-
- If an enum constant is initialized in the definition of an enum tag, the value
- that the constant is initialized to must be an integral expression that has a
- value representable as an int.
-
- Recovery: Remove the initial value, or ensure that the initial value is an
- integral constant expression that has a value representable as an int.
-
-
- ΓòÉΓòÉΓòÉ 7.169. EDC0309 ΓòÉΓòÉΓòÉ
-
- A linkage type must appear to the left of the identifier to which it applies.
-
- Linkage keywords must appear immediately to the left of the identifier they
- qualify. For example,
-
- int _System foo();
-
- Recovery: Move the linkage keyword to the left of the identifier.
-
-
- ΓòÉΓòÉΓòÉ 7.170. EDC0320 ΓòÉΓòÉΓòÉ
-
- Redeclaration cannot specify fewer parameters than the previous declaration.
-
- The prototyped redeclaration of the function is not correct. The redeclaration
- contains fewer parameters than the previous declaration.
-
- Recovery: Make the redeclaration consistent with the original declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.171. EDC0321 ΓòÉΓòÉΓòÉ
-
- Redeclaration cannot specify the additional parameter &1.
-
- The prototyped redeclaration of the function is not correct. The function
- redeclaration contains more parameters than the previous declaration.
-
- Recovery: Make the redeclaration consistent with the original declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.172. EDC0322 ΓòÉΓòÉΓòÉ
-
- Type of the parameter &1 cannot conflict with previous declaration of function
- &2.
-
- The type of this parameter is incompatible with the type of the corresponding
- parameter in the previous declaration of the function.
-
- Recovery: Ensure that the subsequent declaration or function call matches the
- prototype in both the number and type of parameters. If the parameter in the
- prototype is an incomplete struct or union tag, declare the incomplete tag at
- file scope before the function is prototyped.
-
-
- ΓòÉΓòÉΓòÉ 7.173. EDC0323 ΓòÉΓòÉΓòÉ
-
- Redeclaration cannot specify fewer parameters before ellipsis than the previous
- declaration.
-
- The prototyped redeclaration of the function is not correct. Fewer parameters
- appear before the ellipsis in this function redeclaration than the previous
- declaration.
-
- Recovery: Make sure that the redeclaration is consistent with the previous
- declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.174. EDC0324 ΓòÉΓòÉΓòÉ
-
- The void type specifier cannot be used with other type specifiers.
-
- When void is used in the parameter list of a prototyped function declaration,
- it indicates that the function does not expect any parameters. Therefore, if
- void is used in a prototyped declaration, it must be the only type descriptor
- in the parameter list and must not appear more than once in the list.
-
- Recovery: If the function does not require any parameters, use void only once
- in the parameter list. If the function requires parameters, remove void from
- the parameter prototype list.
-
-
- ΓòÉΓòÉΓòÉ 7.175. EDC0325 ΓòÉΓòÉΓòÉ
-
- The type of the parameters must be specified in a prototype.
-
- A prototype specifies the number and the type of the parameters that a function
- requires. A prototype that does not specify the type of the parameters is not
- correct, for example,
-
- fred(a,b);
-
- Recovery: Give the type of the parameters in the function prototype.
-
-
- ΓòÉΓòÉΓòÉ 7.176. EDC0326 ΓòÉΓòÉΓòÉ
-
- The only storage class that can be used with parameters is register.
-
- Recovery: Remove the storage class specified in the parameter declaration or
- use the register storage class.
-
-
- ΓòÉΓòÉΓòÉ 7.177. EDC0327 ΓòÉΓòÉΓòÉ
-
- Redeclarations and function calls must be compatible with prototype.
-
- The number or the type of the parameters (or both) on the call does not agree
- with the specification given in the function prototyped declaration.
-
- Recovery: Make the call consistent with the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.178. EDC0328 ΓòÉΓòÉΓòÉ
-
- The function call cannot have more arguments than the prototype specifies.
-
- The function call is not valid. There are more arguments in this function call
- than there were parameters specified in the function declaration.
-
- Recovery: Make the call consistent with the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.179. EDC0329 ΓòÉΓòÉΓòÉ
-
- Object &1 must be specified in the parameter list for function &2.
-
- For function definitions that do not use the prototype style, a list of
- parameter names usually appears between the parentheses following the function
- name. A list of declarations that indicates the type of the parameters
- follows. In this case, the declaration of an object that was not listed
- between the parentheses was found in the parameter declaration list.
-
- Recovery: Make sure that the declaration list only specified parameters that
- appear between the parentheses of the function.
-
-
- ΓòÉΓòÉΓòÉ 7.180. EDC0330 ΓòÉΓòÉΓòÉ
-
- A parameter cannot be declared when function &1 parentheses are empty.
-
- For function definitions that do no use the prototype style, a list of
- parameter names usually appears between parentheses following the function
- name. A list of declarations that indicates the type of the parameters
- follows. In this case, objects are declared in the parameter declaration list
- but no parameter appeared between the function parentheses.
-
- Recovery: Make sure that the declaration list only specifies parameters that
- were listed between the function parentheses.
-
-
- ΓòÉΓòÉΓòÉ 7.181. EDC0331 ΓòÉΓòÉΓòÉ
-
- Parentheses must appear in the declaration of function &1.
-
- The syntax of the declaration is not correct. The compiler assumes it is the
- declaration of a function in which the parentheses surrounding the parameters
- are missing.
-
- Recovery: Check the syntax of the declaration. Make sure the object name and
- type are properly specified. Check for incorrect spelling or missing
- parentheses.
-
-
- ΓòÉΓòÉΓòÉ 7.182. EDC0332 ΓòÉΓòÉΓòÉ
-
- The function call cannot have fewer arguments than the prototype specifies.
-
- The function call is not valid. There are fewer arguments in this function
- call than there were parameters specified in the function declaration.
-
- Recovery: Make the call consistent with the declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.183. EDC0333 ΓòÉΓòÉΓòÉ
-
- The parameters in the definition of the function &1 must be named.
-
- For function definitions, all the parameters in the parameter list must be
- named. It is invalid to specify only the parameter's type in a function
- definition head.
-
- Recovery: Name the parameters in the parameter list.
-
-
- ΓòÉΓòÉΓòÉ 7.184. EDC0334 ΓòÉΓòÉΓòÉ
-
- External identifier &1 cannot be initialized more than once.
-
- Recovery: Check the previous declarations of the object. Make sure that only
- one declaration specifies an initializer.
-
-
- ΓòÉΓòÉΓòÉ 7.185. EDC0335 ΓòÉΓòÉΓòÉ
-
- The declarations of the function &1 must be consistent in their use of the
- ellipsis.
-
- If an ellipsis is used in a function declaration, the ellipsis must be present
- in all the function redeclarations. If no ellipsis is used in a function
- declaration, the following redeclarations cannot specify an ellipsis. Any
- redeclaration that does not use the ellipsis consistently is not correct.
-
- Recovery: Make the redeclaration consistent with the previous declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.186. EDC0336 ΓòÉΓòÉΓòÉ
-
- Declaration of function &1 cannot specify more parameters than previous
- declaration.
-
- The prototyped redeclaration of the function is not correct. There are more
- parameters in the function redeclaration than there were in the previous
- declaration.
-
- Recovery: Make the redeclaration consistent with the previous declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.187. EDC0337 ΓòÉΓòÉΓòÉ
-
- Declaration list cannot appear when parameters in parentheses are prototyped.
-
- For function definitions that do not use the prototype style, a list of
- parameter names usually appears between parentheses following the function
- name. A list of declarations that indicates the type of parameters follows.
- In this case, the parameters between the parentheses are prototyped. These two
- styles of declaration cannot be mixed.
-
- Recovery: Remove either the function declaration list or the type given to the
- parameters in the function parentheses.
-
-
- ΓòÉΓòÉΓòÉ 7.188. EDC0338 ΓòÉΓòÉΓòÉ
-
- Prototype &1 must contain widened types if prototype and nonprototype
- declarations are mixed.
-
- Nonprototype function declarations, popularly known as K&R prototypes, only
- specify the function return type. The function parentheses are empty; no
- information about the parameters is given.
-
- Nonprototype function definitions specify a list of parameter names appearing
- between the function parentheses followed by a list of declarations (located
- between the parentheses and the opening left brace of the function) that
- indicates the type of the parameters. A nonprototype function definition is
- also known as a K&R function definition.
-
- A prototype function declaration or definition specifies the type and the
- number of the parameters in the parameter declaration list that appears inside
- the function parenthesis. A prototype function declaration is better known as
- an ANSI prototype, and a prototype function definition is better known as an
- ANSI function definition.
-
- When the nonprototype function declarations/definitions are mixed with
- prototype declarations, the type of each prototype parameter must be compatible
- with the type that results from the application of the default argument
- promotions.
-
- Most types are already compatible with their default argument promotions. The
- only ones that are not are char, short, and float. Their promoted versions
- are, respectively, int, int, and double.
-
- This message can occur in several situations. The most common is when mixing
- ANSI prototypes with K&R function definitions. If a function is defined using
- a K&R-style header, then its prototype, if present, must specify widened
- versions of the parameter types. Here is an example.
-
- int function( short );
- int function( x )
- short x;
- { }
-
- This is invalid because the function has a K&R-style definition and the
- prototype does not specify the widened version of the parameter. To be correct,
- the prototype should be
-
- int function( int );
-
- because int is the widened version of short.
-
- Another possible solution is to change the function definition to use ANSI
- syntax. This particular example would be changed to
-
- int function( short );
- int function( short x )
- { }
-
- This second solution is preferable, but either solution is equally valid.
-
- Recovery: Give a promoted type to the parameter in the prototype function
- declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.189. EDC0339 ΓòÉΓòÉΓòÉ
-
- The function cannot be redeclared with a different linkage type.
-
- The redeclaration of this function cannot have a different linkage type than
- the previous declaration. The function could have been given a linkage type
- through a #pragma linkage directive, a typedef, or in a previous declaration.
-
- Recovery: Ensure that the linkage type of any subsequent declarations matches
- the original declaration or remove one of the declarations.
-
-
- ΓòÉΓòÉΓòÉ 7.190. EDC0347 ΓòÉΓòÉΓòÉ
-
- Syntax error: possible missing &1 or &2?
-
- A syntax error has occurred. This message lists the tokens that the parser
- expected and did not find.
-
- Recovery: Correct the syntax error and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.191. EDC0348 ΓòÉΓòÉΓòÉ
-
- Syntax error: possible missing &1?
-
- A syntax error has occurred. This message lists the tokens that the parser
- expected and did not find.
-
- Recovery: Correct the syntax error and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.192. EDC0349 ΓòÉΓòÉΓòÉ
-
- Unexpected text &1 ignored.
-
- A syntax error has occurred. This message lists the tokens that were discarded
- by the parser when it tried to recover from the syntax error.
-
- Recovery: Correct the syntax error and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.193. EDC0350 ΓòÉΓòÉΓòÉ
-
- Syntax error.
-
- See the SAA CPI C Reference for a complete description of C syntax rules.
-
- Recovery: Correct the syntax error and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.194. EDC0356 ΓòÉΓòÉΓòÉ
-
- A constant expression can not contain a comma operator.
-
- Recovery: Modify the constant expression to remove the comma operator.
-
-
- ΓòÉΓòÉΓòÉ 7.195. EDC0370 ΓòÉΓòÉΓòÉ
-
- Operand of offsetof macro must be a struct or a union.
-
- The first operand of the offsetof macro must be a structure or union type.
-
- Recovery: Change the operand.
-
-
- ΓòÉΓòÉΓòÉ 7.196. EDC0371 ΓòÉΓòÉΓòÉ
-
- The dot operator cannot be applied to an incomplete struct or union.
-
- A structure or union is incomplete when the definition of its tag has not been
- specified. A struct or union tag is undefined when the list describing the
- name and type of its members has not been specified.
-
- Recovery: Give a definition of the tag before the operator is applied to the
- structure.
-
-
- ΓòÉΓòÉΓòÉ 7.197. EDC0372 ΓòÉΓòÉΓòÉ
-
- The arrow operator cannot be applied to an incomplete struct or union.
-
- A structure or union is incomplete when the definition of its tag has not been
- specified. A struct or union tag is undefined when the list describing the
- name and type of its members has not been specified.
-
- Recovery: Give a definition of the tag before the operator is applied to the
- structure.
-
-
- ΓòÉΓòÉΓòÉ 7.198. EDC0397 ΓòÉΓòÉΓòÉ
-
- Macro parameter list is not complete. Either the parameters are not fully
- specified or &1 is missing.
-
- Recovery: Complete the specification of the macro parameter list.
-
-
- ΓòÉΓòÉΓòÉ 7.199. EDC0399 ΓòÉΓòÉΓòÉ
-
- A character constant must contain at least one character.
-
- Recovery: Put at least one character inside the pair of single quotation marks.
-
-
- ΓòÉΓòÉΓòÉ 7.200. EDC0400 ΓòÉΓòÉΓòÉ
-
- String literals must end before the source line unless the continuation symbol
- is used.
-
- String literals must end before the end of the source line. You can construct
- literals which are longer than one line by using the line continuation sequence
- (backslash (\) at the end of the line) or by using the concatenation of
- adjacent string literals.
-
- Recovery: Either end the string with a quotation mark or use the continuation
- sequence.
-
-
- ΓòÉΓòÉΓòÉ 7.201. EDC0401 ΓòÉΓòÉΓòÉ
-
- The character is not valid.
-
- A character not in the C source character set has been encountered.
-
- Recovery: Remove the character. Check the syntax.
-
-
- ΓòÉΓòÉΓòÉ 7.202. EDC0402 ΓòÉΓòÉΓòÉ
-
- Parameter list cannot specify fewer parameters than required by macro
- definition.
-
- Fewer parameters than required have been specified on a macro invocation.
-
- Recovery: Make the number of parameters consistent with the macro definition.
-
-
- ΓòÉΓòÉΓòÉ 7.203. EDC0403 ΓòÉΓòÉΓòÉ
-
- The #line directive must specify a string literal or a new-line character.
-
- The integer value in the #line directive must be followed by a string literal
- or the end of the line.
-
- Recovery: Correct the #line directive.
-
-
- ΓòÉΓòÉΓòÉ 7.204. EDC0404 ΓòÉΓòÉΓòÉ
-
- End of file was reached before end of comment that started on line &1.
-
- A comment that was not terminated has been detected. The beginning of the
- comment was on the specified line.
-
- Recovery: End the comment before the file ends.
-
-
- ΓòÉΓòÉΓòÉ 7.205. EDC0405 ΓòÉΓòÉΓòÉ
-
- A new-line character is required.
-
- A character sequence was encountered when the preprocessor required a new-line
- character.
-
-
- ΓòÉΓòÉΓòÉ 7.206. EDC0406 ΓòÉΓòÉΓòÉ
-
- Preprocessing token # must be followed by a parameter.
-
- The # preprocessor operator may only be applied to a macro parameter.
-
- Recovery: Place a parameter after the # token, or remove the token.
-
-
- ΓòÉΓòÉΓòÉ 7.207. EDC0407 ΓòÉΓòÉΓòÉ
-
- The #include directive is not valid.
-
- The #include file specifier is missing or invalid.
-
- Recovery: Check the spelling and syntax of the #include file path.
-
-
- ΓòÉΓòÉΓòÉ 7.208. EDC0408 ΓòÉΓòÉΓòÉ
-
- A #if, #elif, #ifdef or #ifndef block must end with a #endif.
-
- Recovery: End the conditional preprocessor statements with a #endif.
-
-
- ΓòÉΓòÉΓòÉ 7.209. EDC0409 ΓòÉΓòÉΓòÉ
-
- A macro name on &1 directive is expected.
-
- Recovery: Make sure that a macro name follows the #define, #undef, #ifdef, or
- #ifndef preprocessor directive.
-
-
- ΓòÉΓòÉΓòÉ 7.210. EDC0410 ΓòÉΓòÉΓòÉ
-
- A #elif can only appear within a #if, #elif, #ifdef or #ifndef block.
-
- Recovery: Delete the #elif statement, or place it within a conditional
- preprocessor block. Check for misplaced braces.
-
-
- ΓòÉΓòÉΓòÉ 7.211. EDC0411 ΓòÉΓòÉΓòÉ
-
- A #else can only appear within a #if, #elif, #ifdef or #ifndef block.
-
- Recovery: Delete the #else statement, or place it within a conditional
- preprocessor block. Check for misplaced braces.
-
-
- ΓòÉΓòÉΓòÉ 7.212. EDC0412 ΓòÉΓòÉΓòÉ
-
- A #endif must follow a #if, #elif, #ifdef or #ifndef block.
-
- Recovery: Delete the #endif statement, or place it after a conditional
- preprocessor block.
-
-
- ΓòÉΓòÉΓòÉ 7.213. EDC0413 ΓòÉΓòÉΓòÉ
-
- #elif cannot follow #else.
-
- The #elif directive may not follow a #else directive within a #if, #elif,
- #ifdef or #ifndef block.
-
- Recovery: Remove the #elif or the #else.
-
-
- ΓòÉΓòÉΓòÉ 7.214. EDC0414 ΓòÉΓòÉΓòÉ
-
- End of file is not expected.
-
- The end of the source file has been encountered prematurely.
-
- Recovery: Check for misplaced braces.
-
-
- ΓòÉΓòÉΓòÉ 7.215. EDC0415 ΓòÉΓòÉΓòÉ
-
- Text is too long.
-
- The specified token is too long to be processed. This condition arises when a
- numeric literal with many leading zeros or a floating point literal with many
- trailing digits in the fraction is coded.
-
- Recovery: Create a shorter token.
-
-
- ΓòÉΓòÉΓòÉ 7.216. EDC0416 ΓòÉΓòÉΓòÉ
-
- The integer constant suffix is not valid.
-
- The suffix of the specified constant is not valid.
-
-
- ΓòÉΓòÉΓòÉ 7.217. EDC0417 ΓòÉΓòÉΓòÉ
-
- Integer constant is out of range.
-
- The specified constant is too large to be represented by an unsigned long int.
-
- Recovery: The constant integer must have a value less than 4294967296.
-
-
- ΓòÉΓòÉΓòÉ 7.218. EDC0418 ΓòÉΓòÉΓòÉ
-
- Escape character &1 is not valid and is ignored.
-
- An escape sequence that is not valid has been encountered in a string literal
- or a character literal. It is replaced by the character following the
- backslash (\).
-
- Recovery: Change or remove the escape sequence.
-
-
- ΓòÉΓòÉΓòÉ 7.219. EDC0419 ΓòÉΓòÉΓòÉ
-
- A character literal must end before the end of a line.
-
- Character literals must be terminated before the end of the source line.
-
- Recovery: End the character literal before the end of the line. Check for
- misplaced quotation marks.
-
-
- ΓòÉΓòÉΓòÉ 7.220. EDC0420 ΓòÉΓòÉΓòÉ
-
- The ## operator cannot appear first or last in the macro replacement list.
-
- The ## preprocessor operator must not appear first or last in the macro
- replacement list.
-
-
- ΓòÉΓòÉΓòÉ 7.221. EDC0421 ΓòÉΓòÉΓòÉ
-
- The macro parameter list is incorrect.
-
- The macro parameter list must be empty, a single identifier, or a list of
- identifiers separated by commas.
-
- Recovery: Correct the parameter list.
-
-
- ΓòÉΓòÉΓòÉ 7.222. EDC0422 ΓòÉΓòÉΓòÉ
-
- Parameter &1 cannot be redefined in the macro parameter list.
-
- The identifiers in the macro parameter list must be distinct.
-
- Recovery: Change the identifier name in the parameter list.
-
-
- ΓòÉΓòÉΓòÉ 7.223. EDC0423 ΓòÉΓòÉΓòÉ
-
- Macro name &1 cannot be redefined.
-
- A macro may be #defined multiple time only if the definitions are identical
- except for white space.
-
- Recovery: change the macro definition to be identical to the preceding one, or
- remove it.
-
-
- ΓòÉΓòÉΓòÉ 7.224. EDC0424 ΓòÉΓòÉΓòÉ
-
- The expression on the #if or #elif directive is not a valid constant
- expression.
-
- Recovery: Replace the expression that controls #if or #elif by a constant
- integral expression.
-
-
- ΓòÉΓòÉΓòÉ 7.225. EDC0425 ΓòÉΓòÉΓòÉ
-
- Parameter list cannot specify more parameters than required by macro
- definition.
-
- The number of arguments specified on a macro invocation exceeds the number of
- parameters for the macro.
-
- Recovery: Make the number of arguments consistent with the macro definition.
-
-
- ΓòÉΓòÉΓòÉ 7.226. EDC0426 ΓòÉΓòÉΓòÉ
-
- The #error text is too long.
-
- The text specified for the #error directive is too long to be processed. Like
- a string literal, the upper limit allowed for #error text is 4096.
-
- Recovery: Specify a shorter message.
-
-
- ΓòÉΓòÉΓòÉ 7.227. EDC0427 ΓòÉΓòÉΓòÉ
-
- #error &1.
-
- This is the message issued by the #error directive.
-
- Recovery: Because this is a user-created message, the recovery depends on the
- nature of the error.
-
-
- ΓòÉΓòÉΓòÉ 7.228. EDC0428 ΓòÉΓòÉΓòÉ
-
- A preprocessing directive must end before the end of a line.
-
- The end of line has been encountered while scanning a preprocessing directive.
-
-
- ΓòÉΓòÉΓòÉ 7.229. EDC0429 ΓòÉΓòÉΓòÉ
-
- String literal cannot exceed maximum length of 4096.
-
- A string constant of length greater than 4096 characters was encountered.
-
- Recovery: Specify a shorter string literal.
-
-
- ΓòÉΓòÉΓòÉ 7.230. EDC0430 ΓòÉΓòÉΓòÉ
-
- The preprocessing directive &1 is invalid.
-
- An unrecognized preprocessing directive has been encountered.
-
- Recovery: Check the spelling and syntax or remove the invalid directive.
-
-
- ΓòÉΓòÉΓòÉ 7.231. EDC0431 ΓòÉΓòÉΓòÉ
-
- The end of a #include file was encountered before the end of the comment.
-
- Recovery: End the comment before ending the #include file. Check for misplaced
- or missing punctuation.
-
-
- ΓòÉΓòÉΓòÉ 7.232. EDC0432 ΓòÉΓòÉΓòÉ
-
- The end of file was encountered immediately after a continuation line.
-
- Recovery: Remove the continuation character from the last line of the file, or
- add code after the continuation character.
-
-
- ΓòÉΓòÉΓòÉ 7.233. EDC0433 ΓòÉΓòÉΓòÉ
-
- #line value too large.
-
- Recovery: Make sure that the #line value does not exceed the maximum value
- (32767) for short integers.
-
-
- ΓòÉΓòÉΓòÉ 7.234. EDC0434 ΓòÉΓòÉΓòÉ
-
- &1 value must contain only decimal digits.
-
- A non-numeric character was encountered in the &1 value.
-
- Recovery: Check the syntax of the value given.
-
-
- ΓòÉΓòÉΓòÉ 7.235. EDC0435 ΓòÉΓòÉΓòÉ
-
- A valid wide character must not have 0x00 as its second byte.
-
- Recovery: Change the value of the second byte of the wide character.
-
-
- ΓòÉΓòÉΓòÉ 7.236. EDC0437 ΓòÉΓòÉΓòÉ
-
- A character string literal cannot be concatenated with a wide string literal.
-
- A string that has a prefix L cannot be concatenated with a string that is not
- prefixed.
-
- Recovery: Check the syntax of the value given.
-
-
- ΓòÉΓòÉΓòÉ 7.237. EDC0438 ΓòÉΓòÉΓòÉ
-
- An error was detected in #pragma &1.
-
- For a description of the syntax for #pragma directives, see the SAA CPI C
- Reference and -- Reference prag370 not found -- of this book.
-
- Recovery: Check the syntax of the #pragma directive.
-
-
- ΓòÉΓòÉΓòÉ 7.238. EDC0439 ΓòÉΓòÉΓòÉ
-
- Option &1 on #pragma &2 is not supported.
-
- For a list of all valid options for #pragma directives, see the SAA CPI C
- Reference and -- Reference prag370 not found -- of this book.
-
- Recovery: Make sure the #pragma syntax and options are correct.
-
-
- ΓòÉΓòÉΓòÉ 7.239. EDC0441 ΓòÉΓòÉΓòÉ
-
- #pragma &1 is unrecognized and is ignored.
-
- An unrecognized #pragma directive was encountered. See the SAA CPI C Reference
- and -- Reference prag370 not found -- of this book for the valid #pragmas
- available.
-
- Recovery: Change or remove the #pragma directive.
-
-
- ΓòÉΓòÉΓòÉ 7.240. EDC0442 ΓòÉΓòÉΓòÉ
-
- Option on #pragma &1 is out of range.
-
- The specified #pragma option is not within the range of the valid values. See
- the SAA CPI C Reference and -- Reference prag370 not found -- of this book for
- more information on the #pragma directives.
-
- Recovery: Change the option or remove the #pragma directive.
-
-
- ΓòÉΓòÉΓòÉ 7.241. EDC0443 ΓòÉΓòÉΓòÉ
-
- #pragma &1 must appear on the first directive before any C code.
-
- Recovery: Make sure the indicated #pragma appears on the first directive and
- before any C code.
-
-
- ΓòÉΓòÉΓòÉ 7.242. EDC0444 ΓòÉΓòÉΓòÉ
-
- The #pragma &1 must appear only once and before any C code.
-
- Recovery: Remove all but one of the specified #pragma directive and place the
- #pragma directive before any C code.
-
-
- ΓòÉΓòÉΓòÉ 7.243. EDC0449 ΓòÉΓòÉΓòÉ
-
- A new-line is not expected before the end of the preprocessing directive.
-
- A new-line was encountered before the preprocessor directive was complete.
-
- Recovery: Make sure the preprocessor directive ends before the end of the line.
-
-
- ΓòÉΓòÉΓòÉ 7.244. EDC0450 ΓòÉΓòÉΓòÉ
-
- Option &1 ignored because option &2 specified.
-
- The use of the second option indicated means the first has no effect. For
- example, the /P option causes the /O option to be ignored because no code will
- be generated.
-
- Recovery: Remove one of the options.
-
-
- ΓòÉΓòÉΓòÉ 7.245. EDC0451 ΓòÉΓòÉΓòÉ
-
- The &1 option has not been completely specified.
-
- Refer to Specifying Compiler Options for information on specifying compile-time
- options.
-
- Recovery: Complete or remove the option.
-
-
- ΓòÉΓòÉΓòÉ 7.246. EDC0452 ΓòÉΓòÉΓòÉ
-
- Suboption &2 of &1 is not valid.
-
- An incorrect suboption of the specified compiler option has been given. See
- Specifying Compiler Options for more information on compiler options.
-
- Recovery: Change or remove the incorrect suboption.
-
-
- ΓòÉΓòÉΓòÉ 7.247. EDC0455 ΓòÉΓòÉΓòÉ
-
- Suboption &2 of &1 is out of range.
-
- A suboption of the specified compiler option is not within the range of valid
- values. See Specifying Compiler Options for more information on compiler
- options.
-
- Recovery: Change or remove the suboption.
-
-
- ΓòÉΓòÉΓòÉ 7.248. EDC0456 ΓòÉΓòÉΓòÉ
-
- Suboptions &2 and &3 of option &1 conflict.
-
- Conflicting suboptions of the indicated compiler option have been specified.
-
- Recovery: Remove one of the conflicting suboptions.
-
-
- ΓòÉΓòÉΓòÉ 7.249. EDC0460 ΓòÉΓòÉΓòÉ
-
- Macro name &1 must not begin with a numeric character on &2 option.
-
- Macro names must begin with an alphabetic character or an underscore.
-
- Recovery: Change the macro name.
-
-
- ΓòÉΓòÉΓòÉ 7.250. EDC0461 ΓòÉΓòÉΓòÉ
-
- &1 cannot be defined as a macro on the &2 option.
-
- Recovery: Remove the macro definition.
-
-
- ΓòÉΓòÉΓòÉ 7.251. EDC0462 ΓòÉΓòÉΓòÉ
-
- Macro definition on the &1 option is not valid.
-
- Recovery: Remove the macro definition or change the macro name.
-
-
- ΓòÉΓòÉΓòÉ 7.252. EDC0463 ΓòÉΓòÉΓòÉ
-
- Option &1 is not valid.
-
- An incorrect compiler option has been encountered. See Specifying Compiler
- Options for valid compiler options.
-
- Recovery: Change or remove the option.
-
-
- ΓòÉΓòÉΓòÉ 7.253. EDC0464 ΓòÉΓòÉΓòÉ
-
- Character constant has more than four bytes.
-
- A character constant can only have up to four bytes.
-
- Option: /Kb
-
- Recovery: Change the character constant to contain four bytes or less.
-
-
- ΓòÉΓòÉΓòÉ 7.254. EDC0465 ΓòÉΓòÉΓòÉ
-
- Unable to open the default file for &1 output.
-
- The intermediate file (with a .I extension) could not be opened when the /P
- option was specified. The directory may be full.
-
- Recovery: Delete some files from the directory to free some space.
-
-
- ΓòÉΓòÉΓòÉ 7.255. EDC0468 ΓòÉΓòÉΓòÉ
-
- Macro name &1 on &2 option is already defined.
-
- On the /D option a macro may be defined multiple times only if the definitions
- are identical except for white space.
-
- Recovery: Remove all but one of the indicated macro definitions, make them all
- identical, or change the name of the macro.
-
-
- ΓòÉΓòÉΓòÉ 7.256. EDC0469 ΓòÉΓòÉΓòÉ
-
- Macro name &1 has been truncated to &2 on the &3 option.
-
- The length of the macro name on the /D option is greater than the maximum
- allowed. The name has been truncated.
-
- Recovery: Change the macro name if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.257. EDC0470 ΓòÉΓòÉΓòÉ
-
- Macro name &1 contains characters not valid on the &2 option.
-
- Macro names can contain only alphanumeric characters and the underscore
- character.
-
- Recovery: Change the macro name.
-
-
- ΓòÉΓòÉΓòÉ 7.258. EDC0472 ΓòÉΓòÉΓòÉ
-
- Local options following filename have been ignored.
-
- In the icc command, local compiler options must be specified before the file
- name they will affect. Only global options can be placed anywhere on the
- command line.
-
- Recovery: Remove the local options following the file name or place them in
- front of the file name.
-
-
- ΓòÉΓòÉΓòÉ 7.259. EDC0473 ΓòÉΓòÉΓòÉ
-
- Missing source or object file.
-
- Recovery: Specify a source or object file.
-
-
- ΓòÉΓòÉΓòÉ 7.260. EDC0475 ΓòÉΓòÉΓòÉ
-
- Option &1 ignored because option &2 is not specified.
-
- The second option must be specified for the first to have an effect. For
- example, to use the /Le option, you must also specify /Lf.
-
- Recovery: Specify the second option, or remove the first.
-
-
- ΓòÉΓòÉΓòÉ 7.261. EDC0476 ΓòÉΓòÉΓòÉ
-
- /U cannot be used with the predefined macro &1.
-
- You cannot undefine predefined macros.
-
- Recovery: Delete the /U option or change the macro name.
-
-
- ΓòÉΓòÉΓòÉ 7.262. EDC0479 ΓòÉΓòÉΓòÉ
-
- Option /Ge- specified, but no module definition (.DEF) file provided.
-
- Recovery: Provide a module definition (.DEF) file.
-
-
- ΓòÉΓòÉΓòÉ 7.263. EDC0480 ΓòÉΓòÉΓòÉ
-
- Option &1 requires that &2 be specified.
-
- Recovery: Specify option &2 on the command line.
-
-
- ΓòÉΓòÉΓòÉ 7.264. EDC0501 ΓòÉΓòÉΓòÉ
-
- Unable to open ucode listing file DUMMY UCODE.
-
- Not able to open ucode listing file DUMMY UCODE.
-
-
- ΓòÉΓòÉΓòÉ 7.265. EDC0503 ΓòÉΓòÉΓòÉ
-
- Unable to open listing file &1.
-
- The source listing file could not be opened.
-
- Recovery: Make sure enough disk space is available.
-
-
- ΓòÉΓòÉΓòÉ 7.266. EDC0504 ΓòÉΓòÉΓòÉ
-
- Unable to find #include file &1.
-
- The file specified on the #include directive could not be found.
-
- Recovery: Ensure the #include file name and the search path are correct.
-
-
- ΓòÉΓòÉΓòÉ 7.267. EDC0506 ΓòÉΓòÉΓòÉ
-
- Unable to find source file &1.
-
- Make sure that the name of the files specified on the command line (when the
- compile command is issued) corresponds to an existing C file.
-
-
- ΓòÉΓòÉΓòÉ 7.268. EDC0517 ΓòÉΓòÉΓòÉ
-
- &1 value must be an integer constant.
-
- Recovery: Change the value to an integer constant.
-
-
- ΓòÉΓòÉΓòÉ 7.269. EDC0550 ΓòÉΓòÉΓòÉ
-
- Macro parameter list must end before the end of the line.
-
- The list of parameters for a macro on a #define directive did not end before
- the end of the line.
-
- Recovery: End the parameter list before the end of the line. Check that all
- required continuation lines have been coded.
-
-
- ΓòÉΓòÉΓòÉ 7.270. EDC0551 ΓòÉΓòÉΓòÉ
-
- The #include file header cannot be empty.
-
- The #include file header specified is empty.
-
- Recovery: Remove the #include directive or ensure that the header is not empty.
-
-
- ΓòÉΓòÉΓòÉ 7.271. EDC0630 ΓòÉΓòÉΓòÉ
-
- Error in allocating memory for intermediate files.
-
- Recovery: Make sure enough memory is available.
-
-
- ΓòÉΓòÉΓòÉ 7.272. EDC0631 ΓòÉΓòÉΓòÉ
-
- Error in allocating disk space for intermediate files.
-
- Recovery: Make sure there is enough disk space in the TMP directory. Delete
- some files from the TMP directory and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.273. EDC0632 ΓòÉΓòÉΓòÉ
-
- Error in opening intermediate files.
-
- Recovery: Make sure there is enough disk space and memory available.
-
-
- ΓòÉΓòÉΓòÉ 7.274. EDC0633 ΓòÉΓòÉΓòÉ
-
- Error in closing intermediate files.
-
- Recovery: Restart the system, and compile again. If this problem persists,
- contact your IBM Service representative.
-
-
- ΓòÉΓòÉΓòÉ 7.275. EDC0634 ΓòÉΓòÉΓòÉ
-
- Error in creating name for intermediate files.
-
- Recovery: Restart the system and compile again. If the problem persists,
- contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.276. EDC0635 ΓòÉΓòÉΓòÉ
-
- Error in writing to intermediate files.
-
- Recovery: Make sure there is enough disk space and memory available in the TMP
- directory.
-
-
- ΓòÉΓòÉΓòÉ 7.277. EDC0636 ΓòÉΓòÉΓòÉ
-
- Unable to execute &1.
-
- Recovery: Make sure the executable file is in the current directory or is
- specified in your PATH, and that there is enough memory available.
-
-
- ΓòÉΓòÉΓòÉ 7.278. EDC0637 ΓòÉΓòÉΓòÉ
-
- Unable to open linker response file &1.
-
- Recovery: Make sure there is enough disk space available in the TMP directory.
-
-
- ΓòÉΓòÉΓòÉ 7.279. EDC0638 ΓòÉΓòÉΓòÉ
-
- Error in reading from intermediate files.
-
- Recovery: Restart the system and compile again. If the problem persists,
- contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.280. EDC0639 ΓòÉΓòÉΓòÉ
-
- Unidentified error in using intermediate files.
-
- Recovery: Restart the system and compile again. If the problem persists,
- contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.281. EDC0640 ΓòÉΓòÉΓòÉ
-
- Excess text &1 ignored on &2 option.
-
- Extraneous text not used by the option, has been ignored.
-
- Recovery: Remove extraneous text.
-
-
- ΓòÉΓòÉΓòÉ 7.282. EDC0641 ΓòÉΓòÉΓòÉ
-
- An object declared as compatible with 16-bit applications is larger than 64K.
-
- The /Gt compiler option or #pragma seg16 directive was used with a data object
- declared as larger than 64K.
-
- Recovery: Change the data object so that it is less than 64K in size or remove
- the /Gt option and/or the #pragma seg16 directive.
-
-
- ΓòÉΓòÉΓòÉ 7.283. EDC0642 ΓòÉΓòÉΓòÉ
-
- #pragma data_seg is ignored for object &1 because #pragma seg16 specified.
-
- Recovery: Remove the conflicting #pragma data_seg for the object.
-
-
- ΓòÉΓòÉΓòÉ 7.284. EDC0643 ΓòÉΓòÉΓòÉ
-
- Obsolete C/2 #pragma &1 is no longer supported.
-
- A C/2 #pragma directive that is no longer supported was specified.
-
- Recovery: Remove the C/2 #pragma directive and use a valid #pragma directive or
- compiler option in its place.
-
-
- ΓòÉΓòÉΓòÉ 7.285. EDC0644 ΓòÉΓòÉΓòÉ
-
- A _fastcall function cannot be defined in a 32-bit program.
-
- A function declared with the _fastcall linkage type, for example, int _Far16
- _Fastcall foo(); is defined in this compilation unit. The C/C++ for OS/2
- compiles programs to be run in 32-bit mode and functions which support _cdecl
- and _pascal calling conventions.
-
- Recovery: Use a different linkage type for the function, or move the function
- to a different file and compile it with a 16-bit compiler.
-
-
- ΓòÉΓòÉΓòÉ 7.286. EDC0645 ΓòÉΓòÉΓòÉ
-
- The operation between these types is not valid.
-
- The identifiers on the left hand side and the right hand side of the operator
- have types that do not respect the restrictions of the operator. The operation
- specified in the expression cannot be performed. See the SAA CPI C Reference
- for the list of operator restrictions.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.287. EDC0646 ΓòÉΓòÉΓòÉ
-
- Return type must be compatible with declaration of function &1.
-
- The return statement of the function is trying to return a type which is not
- compatible with the function's declaration.
-
- Recovery: Make sure that the value you are returning from the function is
- correct, or cast the value to the appropriate type before returning it.
-
-
- ΓòÉΓòÉΓòÉ 7.288. EDC0647 ΓòÉΓòÉΓòÉ
-
- Type of the parameter &1 cannot conflict with previous declaration of function
- &2.
-
- The type of this parameter is incompatible with the type of the corresponding
- parameter in the previous declaration of the function.
-
- Recovery: Ensure that the subsequent declaration or function call matches the
- prototype in both the number and type of parameters.
-
-
- ΓòÉΓòÉΓòÉ 7.289. EDC0648 ΓòÉΓòÉΓòÉ
-
- If the operands are pointers, they must point to compatible types.
-
- If one operand of either the relational or the equality operator is a pointer,
- the other operand must be either a pointer to the same qualified or unqualified
- type, a NULL pointer, or a pointer to void.
-
- Recovery: Change the operands.
-
-
- ΓòÉΓòÉΓòÉ 7.290. EDC0649 ΓòÉΓòÉΓòÉ
-
- User segment &1 has already been declared.
-
- The user segment has already been specified as a different type of segment.
- Data segments and text segments must have distinct names.
-
- Recovery: Change the name of the segment.
-
-
- ΓòÉΓòÉΓòÉ 7.291. EDC0650 ΓòÉΓòÉΓòÉ
-
- The maximum number of user defined segments has been exceeded.
-
- Recovery: Reduce the number of text and data segments in the program.
-
-
- ΓòÉΓòÉΓòÉ 7.292. EDC0651 ΓòÉΓòÉΓòÉ
-
- A 16-bit function may not have a structure or union as a parameter.
-
- Passing a structure or union by value to a 16-bit function is not allowed.
-
- Recovery: Change the parameter to a pointer to a structure or union.
-
-
- ΓòÉΓòÉΓòÉ 7.293. EDC0800 ΓòÉΓòÉΓòÉ
-
- Parameter &1 is not referenced.
-
- The identified variable has been declared in a function parameter list, but
- never referenced within the function body.
-
- Option: /Kp
-
- Recovery: Remove the parameter declaration if it is not needed.
-
-
- ΓòÉΓòÉΓòÉ 7.294. EDC0801 ΓòÉΓòÉΓòÉ
-
- Automatic variable &1 is not referenced.
-
- The identified variable has been declared at block scope, but never referenced.
-
- Option: /Kb
-
- Recovery: Remove the variable declaration if it is not needed.
-
-
- ΓòÉΓòÉΓòÉ 7.295. EDC0802 ΓòÉΓòÉΓòÉ
-
- Static variable &1 is not referenced.
-
- The identified static variable has been declared, but never referenced.
-
- Option: /Kb or /Kx
-
- Recovery: Remove the variable declaration if it is not needed.
-
-
- ΓòÉΓòÉΓòÉ 7.296. EDC0803 ΓòÉΓòÉΓòÉ
-
- External variable &1 is not referenced.
-
- The identified variable has been declared either at file scope or extern at
- block scope, and was never referenced.
-
- Option: /Kb or /Kx
-
- Recovery: Remove the variable declaration if it is not needed.
-
-
- ΓòÉΓòÉΓòÉ 7.297. EDC0804 ΓòÉΓòÉΓòÉ
-
- Function &1 is not referenced.
-
- The identified function has been declared, but never referenced.
-
- Option: /Kb or /Kx
-
- Recovery: Remove the function declaration if the function is not needed.
-
-
- ΓòÉΓòÉΓòÉ 7.298. EDC0805 ΓòÉΓòÉΓòÉ
-
- Automatic variable &1 is set but not referenced.
-
- The identified variable has been declared and initialized, but never
- referenced.
-
- Option: /Kb
-
- Recovery: Remove the variable declaration and initialization if they are not
- needed.
-
-
- ΓòÉΓòÉΓòÉ 7.299. EDC0806 ΓòÉΓòÉΓòÉ
-
- Static variable &1 is set but not referenced.
-
- The identified variable has been declared and initialized, but never
- referenced.
-
- Option: /Kb or /Kx
-
- Recovery: Remove the variable declaration and initialization if they are not
- needed.
-
-
- ΓòÉΓòÉΓòÉ 7.300. EDC0807 ΓòÉΓòÉΓòÉ
-
- Variable &1 may not have been set before first reference.
-
- The compiler encountered an attempt to access the value of the identified
- variable before the variable was explicitly initialized.
-
- Option: /Kb or /Ki
-
- Recovery: Make sure the variable is explicitly initialized before its value is
- accessed.
-
-
- ΓòÉΓòÉΓòÉ 7.301. EDC0808 ΓòÉΓòÉΓòÉ
-
- Variable &1 was not explicitly initialized.
-
- If not explicitly initialized, variables with storage class auto or register
- contain indeterminate values.
-
- Option: /Ki
-
- Recovery: Initialize the variable.
-
-
- ΓòÉΓòÉΓòÉ 7.302. EDC0809 ΓòÉΓòÉΓòÉ
-
- &1 redefinition hides earlier one.
-
- A typedef was defined at an inner scope with the same name as a previous
- typedef definition made at an outer level. The inner scope definition
- overrides the earlier one.
-
- Option: /Kb
-
- Recovery: Make sure this is what was intended or use different names for the
- two typedefs.
-
-
- ΓòÉΓòÉΓòÉ 7.303. EDC0810 ΓòÉΓòÉΓòÉ
-
- External variable &1 is set but not referenced.
-
- The identified variable has been declared and initialized, but never
- referenced.
-
- Option: /Kx
-
- Recovery: Remove the variable declaration and initialization if they are not
- needed.
-
-
- ΓòÉΓòÉΓòÉ 7.304. EDC0811 ΓòÉΓòÉΓòÉ
-
- Statement has no effect.
-
- The statement does not cause any storage to be changed or functions to be
- called.
-
- Option: /Kb
-
- Recovery: Change or delete the statement.
-
-
- ΓòÉΓòÉΓòÉ 7.305. EDC0812 ΓòÉΓòÉΓòÉ
-
- Expression has no effect.
-
- An expression with no effect has been discovered where expressions with side
- effects are usually expected.
-
- Option: /Kb
-
- Recovery: Change or delete the expression.
-
-
- ΓòÉΓòÉΓòÉ 7.306. EDC0813 ΓòÉΓòÉΓòÉ
-
- if-statement is empty.
-
- The statement body for an if statement has been found to contain no executable
- code.
-
- Option: /Kb
-
- Recovery: Change the statement body to contain executable code or delete the if
- statement.
-
-
- ΓòÉΓòÉΓòÉ 7.307. EDC0814 ΓòÉΓòÉΓòÉ
-
- else-statement is empty.
-
- The statement body for an else statement has been found to contain no
- executable code.
-
- Option: /Kb
-
- Recovery: Change the statement body to contain executable code or delete the
- else statement.
-
-
- ΓòÉΓòÉΓòÉ 7.308. EDC0815 ΓòÉΓòÉΓòÉ
-
- Loop body is empty.
-
- The statement body for a loop statement has been found to contain no executable
- code.
-
- Option: /Kb
-
- Recovery: Change the statement body to contain executable code or remove the
- loop statement.
-
-
- ΓòÉΓòÉΓòÉ 7.309. EDC0816 ΓòÉΓòÉΓòÉ
-
- Assignment found in a control expression.
-
- The control expression for a switch, if, for, or while statement contains an
- unparenthesized assignment statement. A common programming problem is the
- substitution of an assignment statement (i = 3) for what should be a comparison
- statement (i == 3).
-
- Option: /Kb
-
- Recovery: Verify whether the statement should be an assignment or a comparison.
-
-
- ΓòÉΓòÉΓòÉ 7.310. EDC0817 ΓòÉΓòÉΓòÉ
-
- Type conversion may result in lost precision.
-
- The required type conversion may cause lost precision. See the SAA CPI C
- Reference for more information on type conversions.
-
- Option: /Ka
-
- Recovery: If precision is important in the operation, eliminate the type
- conversion.
-
-
- ΓòÉΓòÉΓòÉ 7.311. EDC0818 ΓòÉΓòÉΓòÉ
-
- Pointer type conversion found.
-
- Conversion of pointer types may change the pointer values.
-
- Option: /Ka
-
- Recovery: None, if the conversion was intended. Otherwise, declare the pointer
- to void instead of to another type, and the cast it.
-
-
- ΓòÉΓòÉΓòÉ 7.312. EDC0819 ΓòÉΓòÉΓòÉ
-
- Bitwise operator applied to a signed type.
-
- Bitwise operators may change the value of a signed type by shifting the bit
- used to indicate the sign of the value.
-
- Option: /Ko
-
- Recovery: Change the operand to an unsigned type or remove the bitwise
- operation.
-
-
- ΓòÉΓòÉΓòÉ 7.313. EDC0820 ΓòÉΓòÉΓòÉ
-
- Right shift operator applied to a signed type.
-
- A right shift operator may change the value of a signed type by shifting the
- bit used to indicate the sign of the value.
-
- Option: /Ko
-
- Recovery: Change the operand to an unsigned type or remove the shift operation.
-
-
- ΓòÉΓòÉΓòÉ 7.314. EDC0821 ΓòÉΓòÉΓòÉ
-
- Relational expression is always true.
-
- The control expression of a switch, if, for, or while statement has a constant
- value, and the result is always true. This may not be effective code.
-
- Option: /Kb
-
- Recovery: Verify if this result was intended. Change the control expression if
- necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.315. EDC0822 ΓòÉΓòÉΓòÉ
-
- Relational expression is always false.
-
- The control expression of a switch, if, for, or while statement has a constant
- value, and the result is always false. This may not be effective code.
-
- Option: /Kb
-
- Recovery: Verify if this result was intended. Change the control expression if
- necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.316. EDC0823 ΓòÉΓòÉΓòÉ
-
- Expression contains division by zero.
-
- An expression containing division by zero was found.
-
- Option: /Kb
-
- Recovery: Eliminate the division by zero if it was not intended.
-
-
- ΓòÉΓòÉΓòÉ 7.317. EDC0824 ΓòÉΓòÉΓòÉ
-
- Expression contains modulus by zero.
-
- An expression containing modulus by zero was found.
-
- Option: /Kb
-
- Recovery: Eliminate the division by zero if it was not intended.
-
-
- ΓòÉΓòÉΓòÉ 7.318. EDC0825 ΓòÉΓòÉΓòÉ
-
- Code cannot be reached.
-
- A statement has been found after an unconditional transfer of control, such as
- a goto, and there is no label on the statement, so the statement cannot be
- executed.
-
- Option: /Kb
-
- Recovery: If the statement should be executed, make the transfer of control
- conditional, or label the statement. If not, remove the statement.
-
-
- ΓòÉΓòÉΓòÉ 7.319. EDC0826 ΓòÉΓòÉΓòÉ
-
- Execution fall-through within a switch statement.
-
- A case label has been encountered that was not preceded by either a break or
- return statement.
-
- Option: /Kb
-
- Recovery: Precede the case label with a break or return statement.
-
-
- ΓòÉΓòÉΓòÉ 7.320. EDC0827 ΓòÉΓòÉΓòÉ
-
- Nonprototype function declaration encountered.
-
- A nonprototype function declaration was found. For example,
-
- int addnum();
- Function declarations should include the return type of the function and the
- types of its parameters. Calls to nonprototype functions get no type checking
- or type conversions on parameters.
-
- Option: /Kb
-
- Recovery: Change the nonprototype declarations to prototype declarations like
- the following:
-
- int addnum(int, int);
-
-
- ΓòÉΓòÉΓòÉ 7.321. EDC0828 ΓòÉΓòÉΓòÉ
-
- The return type of the function main should have type int, not void.
-
- If main is declared to return void, the exit code from the program will be
- indeterminate.
-
- Option: /Kb
-
-
- ΓòÉΓòÉΓòÉ 7.322. EDC0830 ΓòÉΓòÉΓòÉ
-
- Value is not a member of the enumeration.
-
- Variables of type enum are not expected to be used in situations other than
- assignment and comparison, and can only be assigned proper members of their
- enumeration, either directly, from function return values, or from another
- variable of the same type.
-
- Option: /Ke
-
- Recovery: Make sure operations involving variables of type enum are valid.
-
-
- ΓòÉΓòÉΓòÉ 7.323. EDC0831 ΓòÉΓòÉΓòÉ
-
- Case label is not a member of the enumeration.
-
- In a switch statement where the switch control expression is an enum, the case
- label values must be members of the enumeration.
-
- Option: /Ke
-
- Recovery: Make sure the case label is a member of the enumeration.
-
-
- ΓòÉΓòÉΓòÉ 7.324. EDC0832 ΓòÉΓòÉΓòÉ
-
- Unstructured goto statement encountered.
-
- The target label of a goto statement should not be located in an inner block
- such as a loop.
-
- Option: /Kg
-
- Recovery: Make sure the target label of the goto statement is not located in an
- inner block.
-
-
- ΓòÉΓòÉΓòÉ 7.325. EDC0833 ΓòÉΓòÉΓòÉ
-
- Implicit return statement encountered.
-
- C allows you to return from a function call without specifying a return
- statement. However, if you want the function to return a value, you must
- include a return statement.
-
- Option: /Kb
-
- Recovery: Add a return statement to the called function if you want it to
- return a value.
-
-
- ΓòÉΓòÉΓòÉ 7.326. EDC0834 ΓòÉΓòÉΓòÉ
-
- Missing function return value.
-
- The function was declared to return a value, and a return statement with no
- value has been encountered. If you do not include a return statement in the
- function, the function will return to the caller with an indeterminate value.
-
- Option: /Kb
-
- Recovery: Add a return value to the return statement.
-
-
- ΓòÉΓòÉΓòÉ 7.327. EDC0835 ΓòÉΓòÉΓòÉ
-
- Structure or union remapping will be performed for this copy operation.
-
- A struct or union assignment has been encountered which requires an implicit
- pack or unpack operation. This form of assignment is often less efficient that
- those assignments that have identical pack characteristics.
-
- Option: /Kb
-
- Recovery: Revise the statements to avoid unnecessary pack and unpack
- operations.
-
-
- ΓòÉΓòÉΓòÉ 7.328. EDC0836 ΓòÉΓòÉΓòÉ
-
- The same #pragma &1 directive was previously specified for the object &2.
-
- The function was already declared using the same #pragma linkage directive.
-
- Option: /Kc
-
- Recovery: Remove one of the #pragma linkage directives.
-
-
- ΓòÉΓòÉΓòÉ 7.329. EDC0837 ΓòÉΓòÉΓòÉ
-
- goto statement encountered.
-
- A goto statement was found.
-
- Option: /Kg
-
- Recovery: No recovery necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.330. EDC0838 ΓòÉΓòÉΓòÉ
-
- Comparison is not valid because the numeric constant is out of range.
-
- A comparison between a variable and a constant that does not lie in the
- variable's range of possible values has been detected.
-
- Option: /Kb
-
- Recovery: Delete the comparison, or use a constant that lies in the variable's
- range of possible values.
-
-
- ΓòÉΓòÉΓòÉ 7.331. EDC0839 ΓòÉΓòÉΓòÉ
-
- Unary minus applied to an unsigned type.
-
- An unsigned type cannot have a sign.
-
- Option: /Kb
-
- Recovery: Remove the unary minus or change the type to be signed.
-
-
- ΓòÉΓòÉΓòÉ 7.332. EDC0841 ΓòÉΓòÉΓòÉ
-
- File &1 has already been #included.
-
- The file specified was included by a previous #include directive.
-
- Option: /Kc
-
- Recovery: Remove one of the #include directives.
-
-
- ΓòÉΓòÉΓòÉ 7.333. EDC0842 ΓòÉΓòÉΓòÉ
-
- Macro name &1 on #undef not defined.
-
- The specified macro name has never been defined or has already been removed by
- a previous #undef directive.
-
- Option: /Kc
-
- Recovery: Define the macro name, or remove the #undef directive.
-
-
- ΓòÉΓòÉΓòÉ 7.334. EDC0843 ΓòÉΓòÉΓòÉ
-
- Macro name &1 on #define is also an identifier.
-
- The specified macro definition will override an existing identifier definition.
-
- Option: /Kc
-
- Recovery: Rename or remove the macro or the identifier.
-
-
- ΓòÉΓòÉΓòÉ 7.335. EDC0844 ΓòÉΓòÉΓòÉ
-
- Macro name &1 on #define is also a keyword.
-
- The specified macro definition will override an existing keyword definition.
-
- Option: /Kc
-
- Recovery: Rename the macro or remove the definition.
-
-
- ΓòÉΓòÉΓòÉ 7.336. EDC0845 ΓòÉΓòÉΓòÉ
-
- Identifier &1 assigned default value of 0.
-
- The indicated identifier in a #if or #elif expression was assigned the default
- value of zero. The identifier may have been intended to be expanded as a
- macro.
-
- Option: /Kc
-
- Recovery: Assign the identifier a value if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.337. EDC0846 ΓòÉΓòÉΓòÉ
-
- Expanding trigraph &1 in string literal.
-
- A trigraph has been expanded in a string literal. This may not be the intended
- behavior.
-
- Option: /Kc
-
- Recovery: Make sure this is the intended behavior. If not, use escape
- sequences to represent characters, for example '\?' for the character '?'.
-
-
- ΓòÉΓòÉΓòÉ 7.338. EDC0847 ΓòÉΓòÉΓòÉ
-
- Expanding trigraph &1 in character literal.
-
- A trigraph has been expanded in a character literal. This may not be the
- intended behavior.
-
- Option: /Kc
-
- Recovery: Make sure this is the intended behavior. If not, use escape
- sequences to represent characters, for example '\?' for the character '?'.
-
-
- ΓòÉΓòÉΓòÉ 7.339. EDC0848 ΓòÉΓòÉΓòÉ
-
- Some program text not scanned due to &1 option.
-
- The setting of the margins and/or sequence options has resulted in some program
- text not being scanned.
-
- Option: /Kc
-
- Recovery: Reset the margins and/or sequence options if necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.340. EDC0851 ΓòÉΓòÉΓòÉ
-
- #include found file &1.
-
- This message indicates the actual file found for the #include directive.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.341. EDC0852 ΓòÉΓòÉΓòÉ
-
- #undef undefining macro name &1.
-
- This message traces the execution of the #undef directive.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.342. EDC0853 ΓòÉΓòÉΓòÉ
-
- Macro name &1 on #define has a previous identical definition.
-
- The macro has already been identically defined. This may indicate that a file
- has been #included more than once.
-
- Option: /Kt
-
- Recovery: Remove one of the definitions or rename one of the macros.
-
-
- ΓòÉΓòÉΓòÉ 7.343. EDC0854 ΓòÉΓòÉΓòÉ
-
- #line directive changing line to &1 and file to &2.
-
- This message traces the execution of the #line directive.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.344. EDC0855 ΓòÉΓòÉΓòÉ
-
- &1 condition evaluates to &2.
-
- This message traces the evaluation of the test condition of a #if, #ifdef, or
- #elif directive.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.345. EDC0856 ΓòÉΓòÉΓòÉ
-
- defined(&1) evaluates to &2.
-
- This message traces the evaluation of the defined(&1) construct on a #if or
- #elif expression.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.346. EDC0857 ΓòÉΓòÉΓòÉ
-
- Begin skipping tokens.
-
- This message traces the execution of conditional compilation directives, for
- example indicating that code is skipped after a #if with a condition that
- evaluates to false.
-
- Option: /Kt
-
- Recovery: Make sure the appropriate tokens were skipped.
-
-
- ΓòÉΓòÉΓòÉ 7.347. EDC0858 ΓòÉΓòÉΓòÉ
-
- Stop skipping tokens.
-
- This message traces the execution of conditional compilation directives, for
- example, indicating that a #endif marked the end of a block of skipped code.
-
- Option: /Kt
-
- Recovery: Make sure the appropriate tokens were skipped.
-
-
- ΓòÉΓòÉΓòÉ 7.348. EDC0859 ΓòÉΓòÉΓòÉ
-
- &1 nesting level is &2.
-
- This message traces the nesting level of conditional compilation directives.
-
- Option: /Kt
-
- Recovery: No recovery necessary if the result is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.349. EDC0860 ΓòÉΓòÉΓòÉ
-
- String literals concatenated.
-
- This message traces the concatenation of two string literals.
-
- Option: /Kt
-
- Recovery: Make sure the concatenation is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.350. EDC0861 ΓòÉΓòÉΓòÉ
-
- Optional brace encountered.
-
- An optional brace was found.
-
- Option: /Ki
-
- Recovery: No recovery necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.351. EDC0862 ΓòÉΓòÉΓòÉ
-
- Matching optional brace encountered.
-
- A matching optional brace was found.
-
- Option: /Ki
-
- Recovery: No recovery necessary.
-
-
- ΓòÉΓòÉΓòÉ 7.352. EDC0863 ΓòÉΓòÉΓòÉ
-
- Incompletely bracketed initializer encountered, &1 left brace(s) assumed.
-
- An initializer for an aggregate type was missing a left brace or braces. The
- compiler assumes the brace is meant to be there.
-
- Option: /Ki
-
- Recovery: Make sure this is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.353. EDC0864 ΓòÉΓòÉΓòÉ
-
- Incompletely bracketed initializer encountered, &1 right brace(s) assumed.
-
- An initializer for an aggregate type was missing a right brace or braces. The
- compiler assumes the brace is meant to be there.
-
- Option: /Ki
-
- Recovery: Make sure this is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.354. EDC0866 ΓòÉΓòÉΓòÉ
-
- Constant arithmetic folding results in an infinity.
-
- Floating-point constant arithmetic folding results in an infinity.
-
- Option: /Kb
-
- Recovery: Make sure this is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.355. EDC0867 ΓòÉΓòÉΓòÉ
-
- Constant arithmetic folding results in a NaN.
-
- Floating-point constant arithmetic folding results in a NaN.
-
- Option: /Kb
-
- Recovery: Make sure this is what was intended.
-
-
- ΓòÉΓòÉΓòÉ 7.356. EDC0868 ΓòÉΓòÉΓòÉ
-
- The incomplete struct or union tag &1 was introduced in a parameter list.
-
- The incomplete struct or union tag introduced in the parameter list will not be
- compatible with subsequent uses of the tag.
-
- Option: /Kb
-
- Recovery: Declare the incomplete struct or union tag at file scope before the
- function declaration.
-
-
- ΓòÉΓòÉΓòÉ 7.357. EDC0869 ΓòÉΓòÉΓòÉ
-
- The incomplete struct or union tag &1 was not completed before going out of
- scope.
-
- An incomplete struct or union tag introduced at block scope was not completed
- before the end of the scope.
-
- Option: /Kb
-
- Recovery: Provide a complete declaration for the struct or union tag.
-
-
- ΓòÉΓòÉΓòÉ 7.358. EDC0870 ΓòÉΓòÉΓòÉ
-
- #line directive changing line to &1.
-
- This message traces the execution of the #line directive.
-
- Option: /Kt
-
-
- ΓòÉΓòÉΓòÉ 7.359. EDC0900 ΓòÉΓòÉΓòÉ
-
- Unable to open &1.
-
- Recovery: Ensure file exists.
-
-
- ΓòÉΓòÉΓòÉ 7.360. EDC0902 ΓòÉΓòÉΓòÉ
-
- Unable to write to &1.
-
- Recovery: Make sure that the disk drive is not in an error mode and that there
- is enough disk space left.
-
-
- ΓòÉΓòÉΓòÉ 7.361. EDC4004 ΓòÉΓòÉΓòÉ
-
- Not enough memory is available.
-
- The compiler can not obtain the necessary virtual storage or memory.
-
- Recovery: Any of the following may help:
-
- o Shut down large processes.
- o Ensure your swap path is large enough.
- o Redefine your virtual disk, if you are using one.
- o Reboot.
- o Obtain more RAM and/or disk space.
-
-
- ΓòÉΓòÉΓòÉ 7.362. EDC4005 ΓòÉΓòÉΓòÉ
-
- Error occurred in an intermediate file.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.363. EDC4007 ΓòÉΓòÉΓòÉ
-
- An addressing mode combination is not valid.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.364. EDC4008 ΓòÉΓòÉΓòÉ
-
- An unsupported data type was encountered.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.365. EDC4010 ΓòÉΓòÉΓòÉ
-
- An unexpected dependent register was encountered.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.366. EDC4011 ΓòÉΓòÉΓòÉ
-
- Error occurred while opening assembly file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.367. EDC4012 ΓòÉΓòÉΓòÉ
-
- Error occurred while writing assembly file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.368. EDC4013 ΓòÉΓòÉΓòÉ
-
- Error occurred while closing assembly file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.369. EDC4014 ΓòÉΓòÉΓòÉ
-
- Error occurred while opening object file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.370. EDC4015 ΓòÉΓòÉΓòÉ
-
- Error occurred while in writing object file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.371. EDC4016 ΓòÉΓòÉΓòÉ
-
- Error occurred while closing object file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The target directory of the assembler or object file is writable
- o These directories exist and have enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.372. EDC4017 ΓòÉΓòÉΓòÉ
-
- Expression contains division by zero.
-
- The optimizer identified an expression containing division by zero.
-
- Recovery: Eliminate the division by zero if it was not intended.
-
-
- ΓòÉΓòÉΓòÉ 7.373. EDC4018 ΓòÉΓòÉΓòÉ
-
- Too many debug options were specified.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.374. EDC4019 ΓòÉΓòÉΓòÉ
-
- Error occurred while opening intermediate files.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The directory exists and has enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.375. EDC4020 ΓòÉΓòÉΓòÉ
-
- Error occurred while writing to intermediate file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The directory exists and has enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.376. EDC4021 ΓòÉΓòÉΓòÉ
-
- Error occurred while reading from intermediate file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The directory exists and has enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.377. EDC4022 ΓòÉΓòÉΓòÉ
-
- Error occurred while closing intermediate file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o The TMP directory is set to a writable disk
- o The directory exists and has enough available space
- o No other processes are modifying the directory or file
- o The file system is functioning properly
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.378. EDC4023 ΓòÉΓòÉΓòÉ
-
- Error occurred while creating name.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.379. EDC4024 ΓòÉΓòÉΓòÉ
-
- Expression contains modulo by zero.
-
- The optimizer identified an expression containing modulo by zero.
-
- Recovery: Eliminate the modulo by zero if it was not intended.
-
-
- ΓòÉΓòÉΓòÉ 7.380. EDC4026 ΓòÉΓòÉΓòÉ
-
- Data definitions require more 16-bit segments than are allowed.
-
- The data declared requires more 16-bit segments than the maximum 242 available.
-
- Recovery: Break the program down into several smaller programs, or use less
- data.
-
-
- ΓòÉΓòÉΓòÉ 7.381. EDC4027 ΓòÉΓòÉΓòÉ
-
- The text associated with a #pragma comment user is too long.
-
- The text of the #pragma comment user directive exceeds the limit of 255
- characters.
-
- Recovery: Shorten the text of the comment, or use multiple #pragma comment user
- directives.
-
-
- ΓòÉΓòÉΓòÉ 7.382. EDC4028 ΓòÉΓòÉΓòÉ
-
- The path or file name for output file &2 is not valid.
-
- The path or file name given has not been specified correctly.
-
- Recovery: Check the spelling and syntax of the path or file name and change the
- name accordingly.
-
-
- ΓòÉΓòÉΓòÉ 7.383. EDC4029 ΓòÉΓòÉΓòÉ
-
- Open access denied for output file &2.
-
- The file system will not allow the specified file to be opened. You may be
- trying to write to a readonly disk.
-
- Recovery: Direct output to a writable disk.
-
-
- ΓòÉΓòÉΓòÉ 7.384. EDC4030 ΓòÉΓòÉΓòÉ
-
- Cannot open output file &2.
-
- An operating system or compiler error has occurred.
-
- Recovery: See the Recovery for message EDC4014.
-
-
- ΓòÉΓòÉΓòÉ 7.385. EDC4031 ΓòÉΓòÉΓòÉ
-
- Cannot open output file &2. The file is already open.
-
- Another process has already opened the file.
-
- Recovery: Close the file and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.386. EDC4032 ΓòÉΓòÉΓòÉ
-
- Cannot write to the output file. The disk is full.
-
- Recovery: Delete some files to make some space on the disk.
-
-
- ΓòÉΓòÉΓòÉ 7.387. EDC4033 ΓòÉΓòÉΓòÉ
-
- Precondition violated.
-
- An internal compiler error has occurred.
-
- Recovery:See your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.388. EDC4034 ΓòÉΓòÉΓòÉ
-
- The command line passed to the Back End is not correct.
-
- An internal compiler error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.389. EDC4035 ΓòÉΓòÉΓòÉ
-
- Error occurred while opening source file.
-
- An operating system or compiler error has occurred.
-
- Recovery: Ensure that:
-
- o No other processes are modifying the directory or file
- o The virtual disk for the directory, if you are using one, is large enough.
- Try rebooting. If the problem persists, contact your IBM Service
- Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.390. EDC4036 ΓòÉΓòÉΓòÉ
-
- The path or file name for source file &2 is not valid.
-
- The path or file name given has not been specified correctly.
-
- Recovery:Check the spelling and syntax of the path or file name and change the
- name accordingly.
-
-
- ΓòÉΓòÉΓòÉ 7.391. EDC4037 ΓòÉΓòÉΓòÉ
-
- Open access denied for source file &2.
-
- The file system will not allow the specified file to be opened. because of an
- OS/2 file system error. Recovery: Try rebooting. If the problem persists,
- contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 7.392. EDC4038 ΓòÉΓòÉΓòÉ
-
- Cannot open source file &2.
-
- An operating system or compiler error has occurred.
-
- Recovery:See the Recovery for message EDC4035.
-
-
- ΓòÉΓòÉΓòÉ 7.393. EDC4039 ΓòÉΓòÉΓòÉ
-
- Cannot open source file &2. The file is already open.
-
- Another process has already opened the file.
-
- Recovery:Close the file and compile again.
-
-
- ΓòÉΓòÉΓòÉ 7.394. EDC4040 ΓòÉΓòÉΓòÉ
-
- Assembler listing line is too long for successful assembly.
-
- The line in the assembler listing is too long to be assembled.
-
- Recovery:Try using shorter variable and function names.
-
-
- ΓòÉΓòÉΓòÉ 7.395. EDC4041 ΓòÉΓòÉΓòÉ
-
- Error occurred while closing source file.
-
- An operating system or compiler error has occurred.
-
- Recovery:See the Recovery for message EDC4035.
-
-
- ΓòÉΓòÉΓòÉ 7.396. EDC4042 ΓòÉΓòÉΓòÉ
-
- Cannot use __parmdwords in a non SYSTEM linkage function.
-
- The __parmdwords function can only be called from a function that uses system
- linkage.
-
- Recovery:Change the linkage type of the function using the /Ms compiler option
- or the _System keyword, or remove the call to __parmdwords.
-
-
- ΓòÉΓòÉΓòÉ 8. Run-Time Return Codes and Messages ΓòÉΓòÉΓòÉ
-
- This section contains information about the run-time messages and should not be
- used as programming interface information.
-
- The value of the return code from a run-time error is set in one of the
- following ways:
-
- o By the initialization or termination routines of the C/C++ for OS/2 runtime
- library or by the C program management routines
- o By the return statement in your main program
- o By calling the exit or abort functions from your C program (or _exit or from
- the migration libraries)
- o By calling the DosExit API.
-
- It is possible to pass a return code from a C program to the program that
- invoked it. For example, if the C program is invoked by the operating system,
- a return code can be passed either for examination in a subsequent program, if
- running of that program is conditional upon the value of the code returned, or
- merely to indicate conditions that were encountered during running.
-
- The return code generated by a C/C++ for OS/2 program can be expected to be
- within the valid range of the int type. The range of values may be smaller if
- the return code is checked inside a batch .CMD file. See the OS/2 2.0
- documentation for the acceptable range of return codes.
-
- Unless an error is detected that prevents the program management functions of
- the C/C++ for OS/2 from operating correctly, the return code is always
- returned to the caller of the program.
-
- If your program did not specify a value for the return code either by an
- explicit return statement or by an exit statement, the return value is
- undefined.
-
- Related Information
-
- o Run-Time Messages
- o return
- o -- Reference abort not found --
- o -- Reference exit not found --
- o -- Reference usexit not found --
-
-
- ΓòÉΓòÉΓòÉ 8.1. Run-Time Messages ΓòÉΓòÉΓòÉ
-
- These are messages you see while your C/C++ for OS/2 program is running.
- Run-time messages are produced in one of three ways:
-
- o Through a call to the perror or strerror function
- o In a machine-state dump when the exception handler terminates a program
- o Through a call to a debug memory management function.
-
- In extreme circumstances, when a run-time library function fails, an INTERNAL
- LIBRARY ERROR message is displayed along with the name of the library function
- that has failed. Make sure you have correctly installed the compiler. If the
- problem persists, contact your IBM service representative.
-
- The panels following this one list the error messages associated with errno
- values, in the format shown below. You can use the perror and strerror library
- functions to print these messages. The errno value does not prefix the
- message. Not all error messages are associated with an errno value.
-
- Note: While the integer value of errno is not to be used as programming
- interface information, you can use the macro values defined in <errno.h> as a
- programming interface.
-
- Message Format: EDCnnnn : text
-
- where:
-
- nnnn - error message number
- text - message text, which may contain substitution
- text indicated by &n
-
- Related Information
-
- o -- Reference perror not found --
- o -- Reference strerro not found --
- o -- Reference errnoh not found --
- o Run-Time Return Codes and Messages
-
-
- ΓòÉΓòÉΓòÉ 8.2. EDC5000 ΓòÉΓòÉΓòÉ
-
- Errno is 0.
-
- No error occurred.
-
-
- ΓòÉΓòÉΓòÉ 8.3. EDC5001 ΓòÉΓòÉΓòÉ
-
- Domain error.
-
- errno Value:EDOM
-
- A parameter used is beyond the allowable domain of the function.
-
- Recovery:Check the domain of the function and change the parameter.
-
-
- ΓòÉΓòÉΓòÉ 8.4. EDC5002 ΓòÉΓòÉΓòÉ
-
- Range error.
-
- errno Value:ERANGE
-
- The value computed is outside the allowable range of the function.
-
- Recovery:Check the range of the function and ensure your values work within it.
-
-
- ΓòÉΓòÉΓòÉ 8.5. EDC5003 ΓòÉΓòÉΓòÉ
-
- The file type parameter is not correct.
-
- errno Value:EBADMODE
-
- Recovery:Change the parameter to a valid file type.
-
-
- ΓòÉΓòÉΓòÉ 8.6. EDC5004 ΓòÉΓòÉΓòÉ
-
- The file name is "", a null pointer, or an invalid DDNAME.
-
- errno Value:EBADNAME
-
- The file name or DDNAME was not specified correctly.
-
- Recovery: Use the correct file name or DDNAME.
-
-
- ΓòÉΓòÉΓòÉ 8.7. EDC5005 ΓòÉΓòÉΓòÉ
-
- Temporary memory files cannot be reopened.
-
- errno Value:EISTEMPMEM
-
- Recovery:Use a normal memory file or a temporary disk file.
-
-
- ΓòÉΓòÉΓòÉ 8.8. EDC5006 ΓòÉΓòÉΓòÉ
-
- The file sharing mode specified is not correct.
-
- errno Value:EBADSHARE
-
- Valid sharing modes are NONE, ALL, and READ.
-
- Recovery:Specify a valid sharing mode.
-
-
- ΓòÉΓòÉΓòÉ 8.9. EDC5007 ΓòÉΓòÉΓòÉ
-
- The buffering mode specified is not correct.
-
- errno Value:EBUFMODE
-
- The buffer mode was not correct. Valid buffering modes are IOLBF, IOFBF, and
- IONBF.
-
- Recovery:Specify a valid buffering mode.
-
-
- ΓòÉΓòÉΓòÉ 8.10. EDC5008 ΓòÉΓòÉΓòÉ
-
- A previous error occurred on the stream.
-
- errno Value:EERRSET
-
- A previous fatal error occurred on the stream and this is the first opportunity
- to report it.
-
- Recovery:Close the stream and retry the operation.
-
-
- ΓòÉΓòÉΓòÉ 8.11. EDC5009 ΓòÉΓòÉΓòÉ
-
- The file is open.
-
- errno Value:EISOPEN
-
- The operation is not permitted on the file because a process has the file open
- in an incorrect sharing mode.
-
- Recovery:Close the file and retry the operation, or ensure the sharing modes
- are consistent.
-
-
- ΓòÉΓòÉΓòÉ 8.12. EDC5010 ΓòÉΓòÉΓòÉ
-
- Cannot find the file.
-
- errno Value:ENOTEXIST
-
- The file specified cannot be found. Either the file name was not correctly
- specified, or the file has not been created.
-
- Recovery:Ensure the file name is correctly specified or create the file.
-
-
- ΓòÉΓòÉΓòÉ 8.13. EDC5011 ΓòÉΓòÉΓòÉ
-
- This operation must be done before any reads, writes or repositions.
-
- errno Value:ENOTINIT
-
- Recovery:Correct the program logic.
-
-
- ΓòÉΓòÉΓòÉ 8.14. EDC5012 ΓòÉΓòÉΓòÉ
-
- The stream pointer is NULL.
-
- errno Value:ENULLFCB
-
- The stream pointer must point to a valid stream.
-
- Recovery:Ensure the stream pointer points to a valid stream, and reopen the
- stream.
-
-
- ΓòÉΓòÉΓòÉ 8.15. EDC5013 ΓòÉΓòÉΓòÉ
-
- Not enough memory is available to complete the operation.
-
- errno Value:EOUTOFMEM
-
- Recovery:Ensure that memory is being freed when it is no longer used, and that
- memory swapping is allowed. Use the _heapmin function to release unused memory
- from the heap. Stop large programs from running while the current application
- is being run.
-
-
- ΓòÉΓòÉΓòÉ 8.16. EDC5014 ΓòÉΓòÉΓòÉ
-
- The specified buffer size is too small.
-
- errno Value:ESMALLBF
-
- Recovery:Specify a larger buffer for the file.
-
-
- ΓòÉΓòÉΓòÉ 8.17. EDC5016 ΓòÉΓòÉΓòÉ
-
- The file already exists.
-
- errno Value:EEXIST
-
- An attempt was made to rename a file to an already existing file name.
-
- Recovery:Change the name of the existing file or of the new file.
-
-
- ΓòÉΓòÉΓòÉ 8.18. EDC5017 ΓòÉΓòÉΓòÉ
-
- A unique file name cannot be generated.
-
- errno Value:ENOGEN
-
- A call to tmpnam or _tempnam failed because all unique file names have been
- used.
-
- Recovery:Close at least one temporary file.
-
-
- ΓòÉΓòÉΓòÉ 8.19. EDC5019 ΓòÉΓòÉΓòÉ
-
- The seek operation is not valid for this stream.
-
- errno Value:ENOSEEK
-
- The stream is connected to a device that does not permit the seek operation.
-
- Recovery:Remove the seek operation or point the stream to a different device.
-
-
- ΓòÉΓòÉΓòÉ 8.20. EDC5020 ΓòÉΓòÉΓòÉ
-
- The file position is not valid.
-
- errno Value:EBADPOS
-
- The file position is not valid for a file positioning function.
-
- Recovery:Rewind the file or call fflush to clear any characters put back to the
- stream, and retry the operation.
-
-
- ΓòÉΓòÉΓòÉ 8.21. EDC5022 ΓòÉΓòÉΓòÉ
-
- Attempted to seek to an invalid file position.
-
- errno Value:EBADSEEK
-
- The combination of starting point and offset values specified for the fseek
- function is not valid for the file, or an attempt was made to seek beyond the
- beginning of a binary or text file.
-
- Recovery:Ensure the values specified for fseek are valid.
-
-
- ΓòÉΓòÉΓòÉ 8.22. EDC5023 ΓòÉΓòÉΓòÉ
-
- The file or directory specified cannot be found.
-
- errno Value:ENOENT
-
- Recovery:Ensure the path name and file name are specified correctly. Create the
- file or directory if necessary.
-
-
- ΓòÉΓòÉΓòÉ 8.23. EDC5024 ΓòÉΓòÉΓòÉ
-
- The file or directory specified is read-only.
-
- errno Value:EACCESS
-
- The path name specifies a file or directory that cannot be written to.
-
- Recovery: Change the file name if necessary or remove the read-only attribute
- from the file or directory.
-
-
- ΓòÉΓòÉΓòÉ 8.24. EDC5025 ΓòÉΓòÉΓòÉ
-
- Too many files are open.
-
- errno Value:EMFILE
-
- The file specified cannot be opened to change its modification time because too
- many files are open.
-
- Recovery:Close some files.
-
-
- ΓòÉΓòÉΓòÉ 8.25. EDC5026 ΓòÉΓòÉΓòÉ
-
- The command processor cannot be found.
-
- errno Value:ENOCMD
-
- The command processor specified by the COMSPEC environment variable cannot be
- found, and CMD.EXE cannot be found in any of the directories specified by the
- PATH environment variable.
-
- Recovery:Ensure that the COMSPEC variable specifies a valid path and file name
- for the command processor, and/or that CMD.EXE exists in one of the directories
- specified by PATH.
-
-
- ΓòÉΓòÉΓòÉ 8.26. EDC5028 ΓòÉΓòÉΓòÉ
-
- A read operation cannot immediately follow a write operation.
-
- errno Value:EGETANDPUT
-
- Recovery:Flush the stream or use one of the repositioning functions before
- doing a read operation.
-
-
- ΓòÉΓòÉΓòÉ 8.27. EDC5029 ΓòÉΓòÉΓòÉ
-
- Attempted to read past end-of-file.
-
- errno Value:EPASTEOF
-
- Recovery:Reposition the file before reading.
-
-
- ΓòÉΓòÉΓòÉ 8.28. EDC5030 ΓòÉΓòÉΓòÉ
-
- The file is not open for reading.
-
- errno Value:ENOTREAD
-
- Recovery:Close the file and reopen it in a mode that permits reading.
-
-
- ΓòÉΓòÉΓòÉ 8.29. EDC5031 ΓòÉΓòÉΓòÉ
-
- Too many consecutive calls to ungetc.
-
- errno Value:ETOOMANYUNGETC
-
- The ungetc function is not guaranteed to work for consecutive calls.
-
- Recovery:Read the last ungetc character, or use one of the repositioning
- functions to clear the buffer.
-
-
- ΓòÉΓòÉΓòÉ 8.30. EDC5032 ΓòÉΓòÉΓòÉ
-
- Cannot put EOF character back to the stream.
-
- errno Value:EUNGETEOF
-
- The EOF character is not a valid parameter to ungetc or ungetch.
-
- Recovery:Eliminate the ungetc or ungetch operation.
-
-
- ΓòÉΓòÉΓòÉ 8.31. EDC5033 ΓòÉΓòÉΓòÉ
-
- Cannot put a character back to the stream immediately following a write
- operation on that stream.
-
- errno Value:EPUTUNGET
-
- The ungetc or ungetch. function cannot be used immediately following a write
- operation.
-
- Recovery:Flush the stream or use one of the repositioning functions before
- using the unget operation.
-
-
- ΓòÉΓòÉΓòÉ 8.32. EDC5034 ΓòÉΓòÉΓòÉ
-
- The process identifier specified for the child process is not valid.
-
- errno Value:ECHILD
-
- The child process does not exist, or the process identifier is not correct.
-
- Recovery:Make sure that the process identifier for the child process to be
- waited on is correct.
-
-
- ΓòÉΓòÉΓòÉ 8.33. EDC5035 ΓòÉΓòÉΓòÉ
-
- The child process ended abnormally.
-
- errno Value:EINTR
-
- A trap, an unintercepted DosKill call or exception, or a hardware error
- occurred.
-
- Recovery:Check the code in the child process.
-
-
- ΓòÉΓòÉΓòÉ 8.34. EDC5036 ΓòÉΓòÉΓòÉ
-
- The action code specified is not correct.
-
- errno Value:EINVAL
-
- Valid action codes for _cwait are WAIT_CHILD and WAIT_GRANDCHILD.
-
- Recovery:Specify a valid action code.
-
-
- ΓòÉΓòÉΓòÉ 8.35. EDC5037 ΓòÉΓòÉΓòÉ
-
- Cannot run the specified file.
-
- errno Value:ENOEXEC
-
- The executable format of the file is not valid, or the file is not an
- executable file.
-
- Recovery:Ensure the file specified is a valid excutable file.
-
-
- ΓòÉΓòÉΓòÉ 8.36. EDC5038 ΓòÉΓòÉΓòÉ
-
- Cannot start another process.
-
- errno Value:EAGAIN
-
- Another process cannot be created because it will exceed the maximum number of
- processes allowed by OS/2.
-
- Recovery:Close some of the other processes running.
-
-
- ΓòÉΓòÉΓòÉ 8.37. EDC5039 ΓòÉΓòÉΓòÉ
-
- The stream specified is the wrong type for the operation.
-
- errno Value:EBADTYPE
-
- Recovery:Use the correct type of stream for the operation required.
-
-
- ΓòÉΓòÉΓòÉ 8.38. EDC5040 ΓòÉΓòÉΓòÉ
-
- The file is not opened for writing.
-
- errno Value:ENOTWRITE
-
- The file may be opened in read mode.
-
- Recovery:Reopen the file with a file mode that allows the write operation.
-
-
- ΓòÉΓòÉΓòÉ 8.39. EDC5041 ΓòÉΓòÉΓòÉ
-
- A write operation cannot immediately follow a read operation.
-
- errno Value:EPUTANDGET
-
- Recovery:Flush the stream or use one of the repositioning functions before
- doing the write operation.
-
-
- ΓòÉΓòÉΓòÉ 8.40. EDC5042 ΓòÉΓòÉΓòÉ
-
- The specified buffer size is too large.
-
- errno Value:ELARGEBF
-
- The size of the buffer must be in the range of a long int.
-
- Recovery:Specify a smaller buffer size.
-
-
- ΓòÉΓòÉΓòÉ 8.41. EDC5043 ΓòÉΓòÉΓòÉ
-
- The file handle parameter is not valid.
-
- errno Value:EBADF
-
- The file handle passed to _fstat must be recognized by the OS/2 system.
-
- Recovery:Specify a valid file handle.
-
-
- ΓòÉΓòÉΓòÉ 8.42. EDC5044 ΓòÉΓòÉΓòÉ
-
- Cannot rename a file to a different device.
-
- errno Value:EXDEV
-
- A file cannot be renamed to a different drive or device.
-
- Recovery:Rename the file to a different name or copy the file to the new device
- and then rename it.
-
-
- ΓòÉΓòÉΓòÉ 8.43. EDC5045 ΓòÉΓòÉΓòÉ
-
- There is no space left on the device.
-
- errno Value:ENOSPC
-
- There is not enough free space on the device to complete the requested
- operation.
-
- Recovery: Remove any files that are not needed from the device and try the
- operation again.
-
-
- ΓòÉΓòÉΓòÉ 8.44. EDC5046 ΓòÉΓòÉΓòÉ
-
- An unrecognized exception occurred in a math routine. The control word has
- probably been changed.
-
- errno Value:EMATH
-
-
- ΓòÉΓòÉΓòÉ 8.45. EDC5047 ΓòÉΓòÉΓòÉ
-
- The DLL specified cannot be found.
-
- errno Value:EMODNAME
-
- The DLL may not exist, or may not be specified in the LIBPATH environment
- variable.
-
- Recovery:Ensure the name is correct and is specified in the LIBPATH variable.
-
-
- ΓòÉΓòÉΓòÉ 8.46. EDC5049 ΓòÉΓòÉΓòÉ
-
- The value specified for BLKSIZE or LRECL is too large.
-
- errno Value:EMAXATTR
-
- See fopen for the range of valid values for BLKSIZE and LRECL.
-
- Recovery:Specify valid values for BLKSIZE and LRECL.
-
-
- ΓòÉΓòÉΓòÉ 8.47. EDC5050 ΓòÉΓòÉΓòÉ
-
- Error in reading the C Locale Description (.CLD) file.
-
- errno Value:EREADERROR
-
- The .CLD file specified in your DPATH variable may be damaged or have an
- incorrect format.
-
- Recovery:Ensure the DPATH variable points to a valid .CLD file. If the file is
- damaged, reinstall it.
-
-
- ΓòÉΓòÉΓòÉ 8.48. EDC5051 ΓòÉΓòÉΓòÉ
-
- The value specified for blksize or lrecl conflicts with a previously set value.
-
- errno Value:EBADATTR
-
- The values for blksize and lrecl may have been set by both a ddname and by
- fopen.
-
- Recovery:Ensure the values for blksize and lrecl are consistent.
-
-
- ΓòÉΓòÉΓòÉ 8.49. EDC5060 ΓòÉΓòÉΓòÉ
-
- OS/2 returned error code &1.
-
- errno Value:EOS2ERR
-
- An operating system call returned the error code given.
-
- Recovery:Refer to the OS/2 documentation under the error code given.
-
-
- ΓòÉΓòÉΓòÉ 8.50. EDC5098 ΓòÉΓòÉΓòÉ
-
- The floating-point conversion code is not linked in.
-
- An attempt was made to print a non-floating-point variable using a
- floating-point format specifier.
-
- Recovery:Ensure the correct format specifier is used for the type of variable
- to be printed.
-
-
- ΓòÉΓòÉΓòÉ 8.51. EDC5099 ΓòÉΓòÉΓòÉ
-
- Internal library error in function: &1, line: &2.
-
- An internal library error has occurred.
-
- Recovery:Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 8.52. EDC5100 ΓòÉΓòÉΓòÉ
-
- Not enough storage is available to complete initialization.
-
- Recovery:Stop large programs from running while the current application is
- being run.
-
-
- ΓòÉΓòÉΓòÉ 8.53. EDC5101 ΓòÉΓòÉΓòÉ
-
- Assertion failed: &1, file: &2, line: &3.
-
- This is the message generated by the assert macro.
-
- Recovery:Correct the error that caused the assertion to fail.
-
-
- ΓòÉΓòÉΓòÉ 8.54. Exception Messages ΓòÉΓòÉΓòÉ
-
- EDC5101 to EDC5145 are generated when an unhandled or incorrectly handled
- exception occurs, and are displayed in the resulting machine-state dump.
- Exceptions are explained in more detail in the OS/2 documentation. For more
- information on these messages, see For more information on these messages, see
- the section on exception handling in the IBM C/C++ for OS/2 Programming Guide.
-
-
- ΓòÉΓòÉΓòÉ 8.55. EDC5102 ΓòÉΓòÉΓòÉ
-
- Integer Division by Zero exception occurred at EIP = &1 on thread &2.
-
- An Integer Division by Zero exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.56. EDC5103 ΓòÉΓòÉΓòÉ
-
- Invalid Opcode exception occurred at EIP = &1 on thread &2.
-
- An Invalid Opcode exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.57. EDC5104 ΓòÉΓòÉΓòÉ
-
- General Protection Fault exception occurred at EIP = &1 on thread &2.
-
- A General Protection Fault exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.58. EDC5106 ΓòÉΓòÉΓòÉ
-
- Guard Page Allocation Failure exception occurred at EIP = &1 on thread &2.
-
- The compiler has run out of stack space.
-
- Recovery:Allocate more stack space and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.59. EDC5107 ΓòÉΓòÉΓòÉ
-
- Process terminated by SIGBREAK.
-
- The SIGBREAK signal will end the process.
-
-
- ΓòÉΓòÉΓòÉ 8.60. EDC5108 ΓòÉΓòÉΓòÉ
-
- Process terminated by SIGINT.
-
- The SIGINT signal will end the process.
-
-
- ΓòÉΓòÉΓòÉ 8.61. EDC5109 ΓòÉΓòÉΓòÉ
-
- Process terminated by SIGTERM.
-
- The SIGTERM signal will end the process.
-
-
- ΓòÉΓòÉΓòÉ 8.62. EDC5110 ΓòÉΓòÉΓòÉ
-
- Overflow exception occurred at EIP = &1 on thread &2.
-
- An Overflow exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.63. EDC5111 ΓòÉΓòÉΓòÉ
-
- Bound exception occurred at EIP = &1 on thread &2.
-
- A Bound exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.64. EDC5112 ΓòÉΓòÉΓòÉ
-
- Exception number 0x&2 occurred at EIP = &1 on thread &2.
-
- The exception identified by the number given occurred at the location
- indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.65. EDC5113 ΓòÉΓòÉΓòÉ
-
- Exception was marked as noncontinuable.
-
- The operating system will not allow the exception to be continued. This is an
- informational message that may accompany an initial exception message.
-
-
- ΓòÉΓòÉΓòÉ 8.66. EDC5114 ΓòÉΓòÉΓòÉ
-
- Exception occurred handling a prior exception.
-
- The exception occurred inside the exception handler. This is an informational
- message that may accompany an initial exception message.
-
-
- ΓòÉΓòÉΓòÉ 8.67. EDC5115 ΓòÉΓòÉΓòÉ
-
- Process terminating.
-
- Confirmational message generated by the exception handler. This is an
- informational message that may accompany an initial exception message.
-
-
- ΓòÉΓòÉΓòÉ 8.68. EDC5116 ΓòÉΓòÉΓòÉ
-
- Register dump at point of exception:
-
- This message indicates a machine-dump was performed. The machine state follows
- and may consist of any combination of the messages EDC5117-EDC0121 and
- EDC5124-EDC0130.
-
-
- ΓòÉΓòÉΓòÉ 8.69. EDC5117 ΓòÉΓòÉΓòÉ
-
- EAX = &1 EBX = &2 ECX = &3 EDX = &4
-
- These are the values of the registers at the time of the exception.
-
-
- ΓòÉΓòÉΓòÉ 8.70. EDC5118 ΓòÉΓòÉΓòÉ
-
- EBP = &1 EDI = &2 ESI = &3 ESP = &4
-
- These are the values of the registers at the time of the exception.
-
-
- ΓòÉΓòÉΓòÉ 8.71. EDC5119 ΓòÉΓòÉΓòÉ
-
- CS = &1 CSLIM = &2 DS = &3 DSLIM = &4
-
- These are the values of the registers at the time of the exception.
-
-
- ΓòÉΓòÉΓòÉ 8.72. EDC5120 ΓòÉΓòÉΓòÉ
-
- ES = &1 ESLIM = &2 FS = &3 FSLIM = &4
-
- These are the values of the registers at the time of the exception.
-
-
- ΓòÉΓòÉΓòÉ 8.73. EDC5121 ΓòÉΓòÉΓòÉ
-
- GS = &1 GSLIM = &2 SS = &3 SSLIM = &4
-
- These are the values of the registers at the time of the exception.
-
-
- ΓòÉΓòÉΓòÉ 8.74. EDC5122 ΓòÉΓòÉΓòÉ
-
- Failed to register exception handler.
-
- A severe operating system error has occurred.
-
- Recovery:Contact your IBM Service Representative
-
-
- ΓòÉΓòÉΓòÉ 8.75. EDC5123 ΓòÉΓòÉΓòÉ
-
- Invalid buffer passed to longjmp().
-
- The buffer passed to the longjmp function is not valid.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.76. EDC5124 ΓòÉΓòÉΓòÉ
-
- NPX Environment:
-
- This is the state of the NPX at the time the exception occurred. It may be
- accompanied by any combination of the messages EDC5125-EDC0130.
-
-
- ΓòÉΓòÉΓòÉ 8.77. EDC5125 ΓòÉΓòÉΓòÉ
-
- CW = &1 TW = &2 IP = &4:&3
-
- These are the values of the control word, tag word, and instruction pointer in
- the NPX at the time the exception occurred.
-
-
- ΓòÉΓòÉΓòÉ 8.78. EDC5126 ΓòÉΓòÉΓòÉ
-
- SW = &1 OPCODE = &2 OP = &4:&3
-
- These are the values of the status word, opcode, and the operand address in the
- NPX at the time the exception occurred.
-
-
- ΓòÉΓòÉΓòÉ 8.79. EDC5127 ΓòÉΓòÉΓòÉ
-
- NPX Stack:
-
- This is the state of the NPX stack at the time the exception occurred.
-
-
- ΓòÉΓòÉΓòÉ 8.80. EDC5128 ΓòÉΓòÉΓòÉ
-
- ST(&1): exponent = &3 significand = &2 &4 &5
-
- One copy of this message appears for each valid stack entry in the NPX.
-
-
- ΓòÉΓòÉΓòÉ 8.81. EDC5129 ΓòÉΓòÉΓòÉ
-
- Exception occurred in C library routine called from EIP = &1 on thread &2.
-
- The exception occurred within a C library function. In this case, the EIP given
- is the instruction pointer in the user program where the call to the function
- occurred. This is an informational message that may accompany an initial
- exception message.
-
-
- ΓòÉΓòÉΓòÉ 8.82. EDC5130 ΓòÉΓòÉΓòÉ
-
- No valid stack entries.
-
- There is no valid data in the NPX stack.
-
-
- ΓòÉΓòÉΓòÉ 8.83. EDC5131 ΓòÉΓòÉΓòÉ
-
- Privileged Opcode exception occurred at EIP = &1 on thread &2.
-
- A Privileged Opcode exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.84. EDC5132 ΓòÉΓòÉΓòÉ
-
- Data Misalignment Exception occurred at EIP = &1 on thread &2.
-
- A Data Misalignment Exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.85. EDC5133 ΓòÉΓòÉΓòÉ
-
- Floating Point Denormalized Operand exception occurred at EIP = &1 on thread
- &2.
-
- A Floating Point Denormalized Operand exception occurred at the location
- indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.86. EDC5134 ΓòÉΓòÉΓòÉ
-
- Floating Point Divide by Zero exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Division by Zero exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.87. EDC5135 ΓòÉΓòÉΓòÉ
-
- Floating Point Precision exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Precision exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.88. EDC5136 ΓòÉΓòÉΓòÉ
-
- Floating Point Invalid Operation exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Invalid Operation exception occurred at the location
- indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.89. EDC5137 ΓòÉΓòÉΓòÉ
-
- Floating Point Overflow exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Overflow exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.90. EDC5138 ΓòÉΓòÉΓòÉ
-
- Floating Point Stack Check exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Stack Check exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.91. EDC5139 ΓòÉΓòÉΓòÉ
-
- Floating Point Underflow exception occurred at EIP = &1 on thread &2.
-
- A Floating Point Underflow exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.92. EDC5140 ΓòÉΓòÉΓòÉ
-
- In Page exception occurred at EIP = &1 on thread &2.
-
- An In Page exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.93. EDC5141 ΓòÉΓòÉΓòÉ
-
- Attempt to continue unrecoverable exception occurred at EIP = &1 on thread &2.
-
- The exception handler tried to continue an exception that the operating system
- considered noncontinuable at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.94. EDC5142 ΓòÉΓòÉΓòÉ
-
- Invalid Disposition exception occurred at EIP = &1 on thread &2.
-
- An Invalid Disposition exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.95. EDC5143 ΓòÉΓòÉΓòÉ
-
- Invalid Lock Sequence exception occurred at EIP = &1 on thread &2.
-
- An Invalid Lock Sequence exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.96. EDC5144 ΓòÉΓòÉΓòÉ
-
- Bad Stack exception occurred at EIP = &1 on thread &2.
-
- A Bad Stack exception occurred at the location indicated.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.97. EDC5145 ΓòÉΓòÉΓòÉ
-
- Invalid Unwind Target exception occurred at EIP = &1 on thread &2.
-
- An Invalid Unwind Target exception occurred at the location indicated. A
- possible cause is that the jmp_buf buffer supplied to the longjmp function was
- not valid.
-
- Recovery:Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.98. EDC5146 ΓòÉΓòÉΓòÉ
-
- Invalid attempt to access storage location &1.
-
- This message accompanies an exception message and gives the address of the
- storage location that caused the exception to occur.
-
- Recovery:Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.99. EDC5150 ΓòÉΓòÉΓòÉ
-
- An internal data structure starting at address &1 was overwritten.
-
- An internal data structure that is allocated from a separate page of memory has
- been overwritten.
-
- Recovery: Correct the code so you do not overwrite the structure and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.100. EDC5151 ΓòÉΓòÉΓòÉ
-
- The invalid memory block address &1 was passed in at line &2 of &3.
-
- The free or realloc function was passed a pointer that did not point to a
- memory block allocated by malloc, calloc, or realloc.
-
- Recovery: Allocate the memory block with malloc, calloc, or realloc before
- passing the pointer to free or realloc.
-
-
- ΓòÉΓòÉΓòÉ 8.101. EDC5152 ΓòÉΓòÉΓòÉ
-
- Memory was overwritten before the allocated memory block which starts at
- address &1.
-
- Memory immediately before an allocated memory block has been overwritten. This
- message is accompanied by the first eight bytes of the memory block and the
- file name and line number where the memory block was allocated, if available.
-
- Recovery: Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.102. EDC5153 ΓòÉΓòÉΓòÉ
-
- The file name and line number are not available.
-
- The file name and line number where the memory block was allocated or freed are
- not available because too much memory was overwritten. This message
- accompanies other debug memory management messages.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.103. EDC5154 ΓòÉΓòÉΓòÉ
-
- Memory was overwitten after the allocated memory block which starts at address
- &1.
-
- Memory immediately after an allocated memory block has been overwritten. This
- message is accompanied by the first eight bytes of the memory block and the
- file name and line number where the memory block was allocated, if available.
-
- Recovery: Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.104. EDC5155 ΓòÉΓòÉΓòÉ
-
- This memory block was freed at line number &1 in &2.
-
- This message accompanies messages about overwriting a free memory block. It
- indicates the file name and line number where the block was freed.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.105. EDC5156 ΓòÉΓòÉΓòÉ
-
- The first eight bytes of the memory block (in hex) are: &1.
-
- The first eight bytes of the memory block are given to help you determine what
- the block is or was used for. This message accompanies other debug memory
- management messages.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.106. EDC5157 ΓòÉΓòÉΓòÉ
-
- The free memory block which starts at address &1 has been accessed.
-
- An attempt was made to access the memory block at the address given, when the
- block had already been freed.
-
- Recovery: Correct the code to allocate the memory location, or do not free the
- memory block before you access it.
-
-
- ΓòÉΓòÉΓòÉ 8.107. EDC5158 ΓòÉΓòÉΓòÉ
-
- Memory was overwritten before the free memory block which starts at address &1.
-
- Memory immediately before a freed memory block has been overwritten. This
- message is accompanied by the first eight bytes of the memory block, and the
- file name and line number where the memory block was freed, if available.
-
- Recovery: Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.108. EDC5159 ΓòÉΓòÉΓòÉ
-
- Memory was overwritten at the end of the free memory block which starts at
- address &1.
-
- Memory immediately after a freed memory block has been overwritten. This
- message is accompanied by the first eight bytes of the memory block, and the
- file name and line number where the memory block was freed, if available.
-
- Recovery: Correct the code and recompile.
-
-
- ΓòÉΓòÉΓòÉ 8.109. EDC5160 ΓòÉΓòÉΓòÉ
-
- Could not allocate memory for internal data structures.
-
- There is not enough memory available.
-
- Recovery: Ensure that memory is being freed when it is no longer used, and that
- memory swapping is allowed. Use the _heapmin function to release unused memory
- from the heap. Stop large programs from running while the current application
- is being run.
-
-
- ΓòÉΓòÉΓòÉ 8.110. EDC5161 ΓòÉΓòÉΓòÉ
-
- Could not register exception handler for memory access violations.
-
- A severe operating system error has occurred.
-
- Recovery: Contact your IBM Service Representative.
-
-
- ΓòÉΓòÉΓòÉ 8.111. EDC5163 ΓòÉΓòÉΓòÉ
-
- START OF DUMP OF ALLOCATED MEMORY BLOCKS
-
- This message indicates the start of the information produced by the
- _dump_allocated function.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.112. EDC5164 ΓòÉΓòÉΓòÉ
-
- END OF DUMP OF ALLOCATED MEMORY BLOCKS
-
- This message indicates the start of the information produced by the
- _dump_allocated function.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.113. EDC5165 ΓòÉΓòÉΓòÉ
-
- Address: &1 Size: &2 (&3)
-
- This message is produced by the _dump_allocated function. It gives the address
- and size of the allocated memory blocks.
-
- Recovery: Informational message only.
-
- Recovery:
-
-
- ΓòÉΓòÉΓòÉ 8.114. EDC5166 ΓòÉΓòÉΓòÉ
-
- This memory block was (re)allocated at line number &1 in &2.
-
- This message accompanies messages about overwriting memory immediately before
- or after an allocated memory block. It indicates the file name and line number
- where the memory block was allocated or reallocated.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ 8.115. EDC5167 ΓòÉΓòÉΓòÉ
-
- Memory contents:
-
- This message is produced by the _dump_allocated function. It gives the contents
- of the allocated memory blocks.
-
- Recovery: Informational message only.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- 485976
- 433132211
- 20
- 5
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- 0x3b24
- 0XF96
- 0x21
- 0x3AA
- 0X29b
- 0X4bD
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- 0
- 0125
- 034673
- 03245
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé FLOATING-POINT Γöé VALUE Γöé
- Γöé CONSTANT Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "5.3876e4" Γöé "53,876" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "4e-11" Γöé "0.00000000004" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "1eΓö╝5" Γöé "100,000" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "7.321E-3" Γöé "0.007321" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "3.2EΓö╝4" Γöé "32,000" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "0.5e-6" Γöé "0.0000005" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "0.45" Γöé "0.45" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "6.e10" Γöé "60,000,000,000"Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- 'a' '\''
- '0' '('
- 'x' '\n'
- '7' '\117'
- 'C'
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- char titles[ ] = "Bach's \"Jesu, Joy of Man's Desiring\"";
- char *mail_addr = "Last Name First Name MI Street Address \
- City Province Postal code ";
- char *temp_string = "abc" "def" "ghi"; /* *temp = "abcdefghi\0" */
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following data type declarations list oats, wheat, barley, corn, and rice
- as enumeration constants. The number under each constant shows the integer
- value.
-
- *
- ***********************************************************************************/
-
- enum grain { oats, wheat, barley, corn, rice };
- /* 0 1 2 3 4 */
- enum grain { oats=1, wheat, barley, corn, rice };
- /* 1 2 3 4 5 */
- enum grain { oats, wheat=10, barley, corn=20, rice };
- /* 0 10 11 20 21 */
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- All data declarations have the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓö¼ΓöÇtype_specifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdeclaratorΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇ;ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇinitializerΓöÿ
- Γöé Γöé Γöé Γöé
- Γööstorage_classΓöÿ Γöötype_specifierΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following program shows the scope and initialization of auto variables.
- The function main defines two variables, each named auto_var. The first
- definition occurs on line 8. The second definition occurs in a nested block on
- line 11. While the nested block is executed, only the auto_var created by the
- second definition is available. During the rest of the program, only the
- auto_var created by the first definition is available.
-
- *
- ************************************************************************/
-
- 1 /* program to illustrate auto variables */
- 2
- 3 #include <stdio.h>
- 4
- 5 int main(void)
- 6 {
- 7 void call_func(int passed_var);
- 8 auto int auto_var = 1; /* first definition of auto_var */
- 9
- 10 {
- 11 int auto_var = 2; /* second definition of auto_var */
- 12 printf("inner auto_var = %d\n", auto_var);
- 13 }
- 14 call_func(auto_var);
- 15 printf("outer auto_var = %d\n", auto_var);
- 16 }
- 17
- 18 void call_func(int passed_var)
- 19 {
- 20 printf("passed_var = %d\n", passed_var);
- 21 passed_var = 3;
- 22 printf("passed_var = %d\n", passed_var);
- 23 }
-
- /************************************************************************
- *
- This program produces the following output:
-
- inner auto_var = 2
- passed_var = 1
- passed_var = 3
- outer auto_var = 1
-
- *
- ************************************************************************/
-
- /************************************************************************
- *
- The following example uses an array that has the storage class auto to pass a
- character string to the function sort. The C language views an array name that
- appears without subscripts (for example, string, instead of string[0]) as a
- pointer. Thus, sort receives the address of the character string, rather than
- the contents of the array. The address enables sort to change the values of
- the elements in the array.
-
- *
- ************************************************************************/
-
- /* Sorted string program */
- #include <stdio.h>
- int main(void)
- {
- void sort(char *array, int n);
- char string[75];
- int length;
- printf("Enter letters:\n");
- scanf("%74s", string);
- length = strlen(string);
- sort(string,length);
- printf("The sorted string is: %s\n", string);
- }
-
- void sort(char *array, int n)
- {
- int gap, i, j, temp;
- for (gap = n / 2; gap > 0; gap /= 2)
- for (i = gap; i < n; i++)
- for (j = i - gap; j >= 0 && array[j] > array[j + gap];
- j -= gap)
- {
- temp = array[j];
- array[j] = array[j + gap];
- array[j + gap] = temp;
- }
- }
-
- /**********************************************************************************
- *
- When the program is run, interaction with the program could produce:
-
- Output
- Enter letters:
-
- Input
- zyfab
-
- Output
- The sorted string is: abfyz
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following program shows the linkage of extern objects and functions. The
- extern object total is declared on line 12 of File 1 and on line 6 of File 2.
- The definition of the external object total appears in File 3. The extern
- function tally is defined in File 2. The function tally can be placed in the
- same file as main or in a different file. Because main precedes these
- definitions and main uses both total and tally, main declares tally on line 11
- and total on line 12.
-
- *
- ************************************************************************/
-
- /**********************************************************************************
- *
-
- File 1
-
- ************************************************************************/
-
- 1 /**************************************************************
- 2 ** This program receives the price of an item, adds the **
- 3 ** tax, and prints the total cost of the item. **
- 5 **************************************************************/
- 6
- 7 #include <stdio.h>
- 8
- 9 int main(void)
- 10 { /* begin main */
- 11 void tally(void); /* declaration of function tally */
- 12 extern float total; /* first declaration of total */
- 13
- 14 printf("Enter the purchase amount: \n");
- 15 tally();
- 16 printf("\nWith tax, the total is: %.2f\n", total);
- 17 } /* end main */
-
- /**********************************************************************************
- *
- File 2
-
- *
- ***********************************************************************************/
-
- 1 /**************************************************************
- 2 ** This file defines the function tally **
- 3 **************************************************************/
- 4
- 5 #define tax_rate 0.05
- 6
- 7 void tally(void)
- 8 { /* begin tally */
- 9 float tax;
- 10 extern float total; /* second declaration of total */
- 11
- 12 scanf("%f", &total);
- 13 tax = tax_rate * total;
- 14 total += tax;
- 15 } /* end tally */
-
- /**********************************************************************************
- *
- File 3
-
- *
- ***********************************************************************************/
-
- 1 float total;
-
- /**********************************************************************************
- *
-
- The following program shows extern variables used by two functions. Because
- both functions main and sort can access and change the values of the extern
- variables string and length, main does not have to pass parameters to sort.
-
- *
- ***********************************************************************************/
-
- /* Sorted string program */
- #include <stdio.h>
- char string[75];
- int length;
- int main(void)
- {
- void sort(void);
- printf("Enter letters:\n");
- scanf("%s", string);
- length = strlen(string);
- sort();
- printf("The sorted string is: %s\n", string);
- }
-
- void sort(void)
- {
- int gap, i, j, temp;
- for (gap = length / 2; gap > 0; gap /= 2)
- for (i = gap; i < length; i++)
- for (j = i - gap;
- j >= 0 && string[j] > string[j + gap];
- j -= gap)
- {
- temp = string[j];
- string[j] = string[j + gap];
- string[j + gap] = temp;
- }
- }
-
- /**********************************************************************************
- *
- When this program is run, interaction with the previous program could produce:
-
- Output
- Enter letters:
-
- Input
- zyfab
-
- Output
- The sorted string is: abfyz
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
- The following program shows a static variable var1 which is defined at file
- scope and then declared with the storage class specifier extern. The second
- declaration refers to the first definition of var1 and so it has internal
- linkage.
-
- *
- ***********************************************************************************/
-
- static int var1;
- .
- .
- .
- extern int var1;
-
- /*******************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following program shows the linkage of static identifiers at file scope.
- This program uses two different external static identifiers named stat_var.
- The first definition occurs in file 1. The second definition occurs in file 2.
- The main function references the object defined in file 1. The var_print
- function references the object defined in file 2:
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
-
- File 1
-
- *
- ***********************************************************************************/
-
- /************************************************************************
- ** Program to illustrate file scope static variables **
- ************************************************************************/
- #include <stdio.h>
- extern void var_print(void);
- static stat_var = 1;
- int main(void)
- {
- printf("file1 stat_var = %d\n", stat_var);
- var_print();
- printf("FILE1 stat_var = %d\n", stat_var);
- }
-
- /**********************************************************************************
- *
- File 2
-
- *
- ***********************************************************************************/
-
- static int stat_var = 2;
- void var_print(void)
- {
- printf("file2 stat_var = %d\n", stat_var);
- }
-
- /**********************************************************************************
- *
-
- The preceding program produces the following output:
-
- file1 stat_var = 1
- file2 stat_var = 2
- FILE1 stat_var = 1
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
- The following program shows the linkage of static identifiers with block scope.
- The function test defines the static variable stat_var. stat_var retains its
- storage throughout the program, even though test is the only function that can
- reference stat_var.
-
- *
- ***********************************************************************************/
-
- /************************************************************************
- ** Program to illustrate block scope static variables **
- ************************************************************************/
- #include <stdio.h>
- int main(void)
- {
- void test(void);
- int counter;
- for (counter = 1; counter <= 4; ++counter)
- test();
- }
- void test(void)
- {
- static int stat_var = 0;
- auto int auto_var = 0;
- stat_var++;
- auto_var++;
- printf("stat_var = %d auto_var = %d\n", stat_var, auto_var);
- }
-
- /**********************************************************************************
- *
-
- The preceding program produces the following output:
-
- stat_var = 1 auto_var = 1
- stat_var = 2 auto_var = 1
- stat_var = 3 auto_var = 1
- stat_var = 4 auto_var = 1
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A declarator has the form:
-
- ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇ
- Γöé ΓöéΓöîΓöÇΓöÇΓöÇΓöÉΓöé Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé ΓöéΓöé ΓööΓöÇΓöÇ(ΓöÇΓöÇdeclaratorΓöÇΓöÇ)ΓöÇΓöÇΓöÿ Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ(ΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé ΓööΓöÇΓöÇ*ΓöÇΓö┤Γöÿ Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
- Γöé Γöé Γöé Γöé Γöé
- Γöé ΓööΓöÇΓöÇΓöÇsubscript_declaratorΓöÇΓö┤ΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé Γöé ΓöéΓöîΓöÇΓöÇΓöÇΓöÉΓöé Γöé Γöé Γöé Γöé
- ΓööΓöÇqualifierΓöÿ Γöé ΓöéΓöé Γöö(ΓöÇsubdeclaratorΓöÇ)Γöÿ ΓööΓöÇsubscript_declaratorΓöÇΓöÿ
- ΓööΓöÇΓöÇ*ΓöÇΓö┤Γöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A subdeclarator has the form:
-
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé
- Γöé Γöé Γöé ΓööΓöÇΓöÇ(ΓöÇΓöÇsubdeclaratorΓöÇΓöÇ)ΓöÇΓöÇΓöÿ
- ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ*ΓöÇΓö┤ΓöÇΓöÿ
- Γöé Γöé
- Γö£ΓöÇΓöÇvolatileΓöÇΓöÇΓöñ
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇconstΓöÇΓöÇΓöÇΓöÇΓöÿ
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇ subscript_declaratorΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A subscript declarator has the form:
-
- ΓöÇΓöÇ[ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ]ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ
- Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- ΓööΓöÇΓöÇconstant_expressionΓöÇΓöÇΓöÿ Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇ[ΓöÇΓöÇconstant_expressionΓöÇΓöÇ]ΓöÇΓö┤ΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following block scope data declaration uses initial as the declarator. The
- data object initial has the storage class auto and the data type char.
-
- *
- ************************************************************************/
- auto char initial;
- /************************************************************************
- *
-
- The following declaration uses the array compute[5] as the declarator:
-
- *
- ************************************************************************/
- extern long int compute[5];
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- An initializer has the form:
-
- ΓöÇΓöÇΓöÇ=ΓöÇΓöÇΓö¼ΓöÇexpressionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇ{ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇexpressionΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ}ΓöÇΓöÇΓöÇΓöÿ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇ{ΓöÇΓöÇΓöÇΓöÇΓöÇexpressionΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇ}ΓöÇΓö┤ΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following example defines the identifier end_of_string as a constant object
- of type char having the initial value \0 (the null character):
-
- *
- ***********************************************************************************/
-
- const char end_of_string = '\0';
-
- /**********************************************************************************
- *
- The following example defines the unsigned char variable switches as having the
- initial value 3:
-
- *
- ***********************************************************************************/
-
- unsigned char switches = 3;
-
- /**********************************************************************************
- *
-
- The following example defines string_pointer as a pointer to a character:
-
- *
- ***********************************************************************************/
-
- char *string_pointer;
-
- /**********************************************************************************
- *
- The following example defines name as a pointer to a character. After
- initialization, name points to the first letter in the character string
- "Johnny":
-
- *
- ***********************************************************************************/
-
- char *name = "Johnny";
-
- /**********************************************************************************
- *
- The following example defines a one-dimensional array of pointers to
- characters. The array has three elements. Initially they are: a pointer to
- the string "Venus", a pointer to "Jupiter", and a pointer to "Saturn":
-
- *
- ***********************************************************************************/
-
- static char *planets[ ] = { "Venus", "Jupiter", "Saturn" };
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following example defines the identifier pi for an object of type double:
-
- *
- ***********************************************************************************/
-
- double pi;
-
- /**********************************************************************************
- *
- The following example defines the float variable real_number with the initial
- value 100.55:
-
- *
- ***********************************************************************************/
-
- static float real_number = 100.55;
-
- /**********************************************************************************
- *
- The following example defines the float variable float_var with the initial
- value 0.0143:
-
- *
- ***********************************************************************************/
-
- float float_var = 1.43e-2;
-
- /**********************************************************************************
- *
- The following example declares the long double variable maximum:
-
- *
- ***********************************************************************************/
-
- extern long double maximum;
-
- /**********************************************************************************
- *
- The following example defines the array table with 20 elements of type double:
-
- *
- ***********************************************************************************/
-
- double table[20];
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following example defines the short int variable flag:
-
- *
- ***********************************************************************************/
-
- short int flag;
-
- /**********************************************************************************
- *
- The following example defines the int variable result:
-
- *
- ***********************************************************************************/
-
- int result;
-
- /**********************************************************************************
- *
- The following example defines the unsigned long int variable ss_number as
- having the initial value 438888834:
-
- *
- ***********************************************************************************/
-
- unsigned long ss_number = 438888834ul;
-
- /**********************************************************************************
- *
- The following example defines the identifier sum for an object of type int.
- The initial value of sum is the result of the expression a + b:
-
- *
- ***********************************************************************************/
-
- extern int a, b;
- auto sum = a + b;
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- On line 3 of the following example, the function find_max is declared as having
- type void. Lines 12 through 23 contain the complete definition of find_max.
-
- Note that the use of the sizeof operator in line 9 is a standard method of
- determining the number of elements in an array.
-
- *
- ***********************************************************************************/
-
- 1 #include <stdio.h>
- 2 /* declaration of function find_max */
- 3 extern void find_max(int x[ ], int j);
- 4
- 5 int main(void)
- 6 {
- 7 static int numbers[ ] = { 99, 54, -102, 89 };
- 8
- 9 find_max(numbers, (sizeof(numbers) / sizeof(numbers[0])));
- 10 }
- 11 void find_max(int x[ ], int j)
- 12 { /* begin definition of function find_max */
- 13 int i, temp = x[0];
- 14
- 15 for (i = 1; i < j; i++)
- 16 {
- 17 if (x[i] > temp)
- 18 temp = x[i];
- 19 }
- 20 printf("max number = %d\n", temp);
- 21 } /* end definition of function find_max */
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following example defines a one-dimensional array that contains four
- elements having type char:
-
- char list[4];
-
- The first subscript of each dimension is 0 (zero). Thus, the array list
- contains the elements:
-
- list[0]
- list[1]
- list[2]
- list[3]
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
-
- The following example defines a two-dimensional array that contains six
- elements of type int:
-
- int roster[3][2];
-
- Multidimensional arrays are stored in row-major order; when referencing
- elements in order of increasing storage location, the last subscript varies the
- fastest. For example, the elements of array roster are stored in the order:
-
- roster[0][0]
- roster[0][1]
- roster[1][0]
- roster[1][1]
- roster[2][0]
- roster[2][1]
-
- In storage, the elements of roster would be stored as:
-
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
-
- Γöé Γöé Γöé
- roster[0][0] roster[0][1] roster[1][0]
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following definition shows a completely initialized one-dimensional array:
-
- static int number[3] = { 5, 7, 2 };
-
- The array number contains the following values:
-
- Element Value
- number[0] 5
- number[1] 7
- number[2] 2
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
-
- The following definition shows a partially initialized one-dimensional array:
-
- static int number1[3] = { 5, 7 };
-
- The values of number1 are:
-
- Element Value
- number1[0] 5
- number1[1] 7
- number1[2] 0
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
-
- Instead of using an expression in the subscript declarator to define the
- number of elements, the following one-dimensional array definition defines one
- element for each initializer specified:
-
- static int item[ ] = { 1, 2, 3, 4, 5 };
-
- The compiler gives item the five initialized elements:
-
- Element Value
- item[0] 1
- item[1] 2
- item[2] 3
- item[3] 4
- item[4] 5
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following definitions show character array initializations:
-
- static char name1[ ] = { 'J', 'a', 'n' };
- static char name2[ ] = { "Jan" };
- static char name3[4] = "Jan";
-
- These definitions create the following elements:
-
- Element Value
- name1[0] J
- name1[1] a
- name1[2] n
- name2[0] J
- name2[1] a
- name2[2] n
- name2[3] \0
- name3[0] J
- name3[1] a
- name3[2] n
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following definition explicitly initializes six elements in a 12-element
- array:
-
- static int matrix[3][4] =
- {
- {1, 2},
- {3, 4},
- {5, 6}
- };
-
- The initial values of matrix are:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ELEMENT Γöé VALUE Γöé ELEMENT Γöé VALUE Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[0][0]"Γöé "1" Γöé "matrix[1][2]"Γöé "0" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[0][1]"Γöé "2" Γöé "matrix[1][3]"Γöé "0" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[0][2]"Γöé "0" Γöé "matrix[2][0]"Γöé "5" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[0][3]"Γöé "0" Γöé "matrix[2][1]"Γöé "6" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[1][0]"Γöé "3" Γöé "matrix[2][2]"Γöé "0" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "matrix[1][1]"Γöé "4" Γöé "matrix[2][3]"Γöé "0" Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following program defines a floating-point array called prices.
-
- The first for statement prints the values of the elements of prices. The second
- for statement adds five percent to the value of each element of prices, and
- assigns the result to total, and prints the value of total.
-
- *
- ***********************************************************************************/
-
- /* Example of one-dimensional arrays. */
- #include <stdio.h>
- #define ARR_SIZE 5
- int main(void)
- {
- static float const prices[ARR_SIZE] = { 1.41, 1.50, 3.75, 5.00, .86 };
- auto float total;
- int i;
- for (i = 0; i < ARR_SIZE; i++)
- {
- printf("price = $%.2f\n", prices[i]);
- }
- printf("\n");
- for (i = 0; i < ARR_SIZE; i++)
- {
- total = prices[i] * 1.05;
- printf("total = $%.2f\n", total);
- }
- }
-
- /**********************************************************************************
- *
- The preceding program produces the following output:
-
- price = $1.41
- price = $1.50
- price = $3.75
- price = $5.00
- price = $0.86
- total = $1.48
- total = $1.57
- total = $3.94
- total = $5.25
- total = $0.90
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
- The following program defines the multidimensional array salary_tbl. A for
- loop prints the values of salary_tbl.
-
- *
- ***********************************************************************************/
-
- /* example of a multidimensional array */
- #include <stdio.h>
- #define NUM_ROW 3
- #define NUM_COLUMN 5
- int main(void)
- {
- static int salary_tbl[NUM_ROW][NUM_COLUMN] =
- {
- { 500, 550, 600, 650, 700 },
- { 600, 670, 740, 810, 880 },
- { 740, 840, 940, 1040, 1140 }
- };
- int grade , step;
- for (grade = 0; grade < NUM_ROW; ++grade)
- for (step = 0; step < NUM_COLUMN; ++step)
- {
- printf("salary_tbl[%d] [%d] = %d\n", grade, step,
- salary_tbl[grade] [step]);
- }
- }
-
- /**********************************************************************************
- *
- The preceding program produces the following output:
-
- salary_tbl[0] [0] = 500
- salary_tbl[0] [1] = 550
- salary_tbl[0] [2] = 600
- salary_tbl[0] [3] = 650
- salary_tbl[0] [4] = 700
- salary_tbl[1] [0] = 600
- salary_tbl[1] [1] = 670
- salary_tbl[1] [2] = 740
- salary_tbl[1] [3] = 810
- salary_tbl[1] [4] = 880
- salary_tbl[2] [0] = 740
- salary_tbl[2] [1] = 840
- salary_tbl[2] [2] = 940
- salary_tbl[2] [3] = 1040
- salary_tbl[2] [4] = 1140
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- An enumeration type declaration has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇenumΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇenumeratorΓöÇΓö┤ΓöÇ}ΓöÇΓöÇΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
-
- An enumerator has the form:
-
- ΓöÇΓöÇidentifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇΓöÇ=ΓöÇΓöÇΓöÇΓöÇconstant_expressionΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following example declares the enumeration tag status:
-
- enum status { run, create, delete=5, suspend };
-
- The data type status represents the following values:
-
- Enumeration Integer
- Constant Representation
- run 0
- create 1
- delete 5
- suspend 6
-
- *
- ***********************************************************************************/
-
- /**********************************************************************************
- *
- In the following example, the declarations of average on line 4 and of poor on
- line 5 cause compiler error messages:
-
- 1 func()
- 2 {
- 3 enum score { poor, average, good };
- 4 enum rating { below, average, above };
- 5 int poor;
- 6 }
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The first line of the following example declares the enumeration tag grain.
- The second line defines the variable g_food and gives g_food the initial value
- of barley (2). The type specifier enum grain indicates that the value of
- g_food is a member of the enumerated data type grain:
-
- enum grain { oats, wheat, barley, corn, rice };
- enum grain g_food = barley;
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
- The following program receives an integer as input. The output is a sentence
- that gives the French name for the weekday that is associated with the integer.
- If the integer is not associated with a weekday, the program prints "C'est le
- mauvais jour."
-
- *
- ***********************************************************************************/
-
- #include <stdio.h>
- enum days {
- Monday=1, Tuesday, Wednesday,
- Thursday, Friday, Saturday, Sunday
- } weekday;
- int main(void)
- {
- int num;
- printf("Enter an integer for the day of the week. "
- "Mon=1,...,Sun=7\n");
- scanf("%d", &num);
- weekday=num;
- french(weekday);
- }
- french(weekday)
- enum days weekday;
- {
- switch (weekday)
- {
- case Monday:
- printf("Le jour de la semaine est lundi.\n");
- break;
- case Tuesday:
- printf("Le jour de la semaine est mardi.\n");
- break;
- case Wednesday:
- printf("Le jour de la semaine est mercredi.\n");
- break;
- case Thursday:
- printf("Le jour de la semaine est jeudi.\n");
- break;
- case Friday:
- printf("Le jour de la semaine est vendredi.\n");
- break;
- case Saturday:
- printf("Le jour de la semaine est samedi.\n");
- break;
- case Sunday:
- printf("Le jour de la semaine est dimanche.\n");
- break;
- default:
- printf("C'est le mauvais jour.\n");
- }
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example declares pnut as a pointer to an int object having the
- volatile qualifier:
-
- extern int volatile *pnut;
-
- The following example defines psoup as a volatile pointer to an object having
- type float:
-
- float * volatile psoup;
-
- The following example defines pfowl as a pointer to an enumeration object of
- type bird:
-
- enum bird *pfowl;
-
- The next example declares x as a pointer to a function that returns a char
- object:
-
- char (*x)(void);
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /***********************************************************************/
- *
- The following example shows compatible declarations for the assignment
- operation:
-
- float subtotal;
- float * sub_ptr;
- .
- .
- .
- sub_ptr = &subtotal;
- printf("The subtotal is %f\n", *sub_ptr);
-
- The next example shows incompatible declarations for the assignment operation:
-
- double league;
- int * minor;
- .
- .
- .
- minor = &league; /* error */
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example defines the pointer variable string, and the string
- constant "abcd". The pointer string is initialized to point to the character a
- in the string "abcd".
-
- *
- ************************************************************************/
-
- char *string = "abcd";
-
- /************************************************************************
- *
-
- The following example defines weekdays as an array of pointers to string
- constants. Each element points to a different string. The object weekdays[2],
- for example, points to the string "Tuesday".
-
- *
- ************************************************************************/
-
- static char *weekdays[ ] =
- {
- "Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday"
- };
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- The ++ (increment) operator increases the value of a pointer by the size of the
- data object to which the pointer refers. For example, if the pointer refers to
- the second element in an array, the ++ makes the pointer refer to the third
- element in the array.
-
- The -- (decrement) operator decreases the value of a pointer by the size of the
- data object to which the pointer refers. For example, if the pointer refers to
- the second element in an array, the -- makes the pointer refer to the first
- element in the array.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- If the pointer p points to the first element in an array, the following
- expression causes the pointer to point to the third element in the same array:
-
- p = p + 2;
-
- If you have two pointers that point to the same array, you can subtract one
- pointer from the other. This operation yields the number of elements in the
- array that separate the two addresses to which the pointers refer.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- You can compare two pointers with the following operators: ==, !=, <, >, <=,
- and >=. See Expressions and Operators for more information on these operators.
-
- Pointer comparisons are defined only when the pointers point to elements of the
- same array.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- You can assign to a pointer the address of a data object, the value of another
- compatible pointer or the NULL pointer.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following program contains pointer arrays:
-
- *
- ***********************************************************************************/
-
- /********************************************************************
- ** Program to search for the first occurrence of a specified **
- ** character string in an array of character strings. **
- ********************************************************************/
- #include <stdio.h>
- #define SIZE 20
- int main(void)
- {
- static char *names[ ] = { "Jim", "Amy", "Mark", "Sue", NULL };
- char * find_name(char **, char *);
- char new_name[SIZE], *name_pointer;
- printf("Enter name to be searched.\n");
- scanf("%s", new_name);
- name_pointer = find_name(names, new_name);
- printf("name %s%sfound\n", new_name,
- (name_pointer == NULL) ? " not " : " ");
- exit(EXIT_FAILURE);
- } /* End of main */
- /********************************************************************
- ** Function find_name. This function searches an array of **
- ** names to see if a given name already exists in the array. **
- ** It returns a pointer to the name or NULL if the name is **
- ** not found. **
- ********************************************************************/
- /* char **arry is a pointer to arrays of pointers (existing names) */
- /* char *strng is a pointer to character array entered (new name) */
- char * find_name(char **arry, char *strng)
- {
- for (; *arry != NULL; arry++) /* for each name */
- {
- if (strcmp(*arry, strng) == 0) /* if strings match */
- return(*arry); /* found it! */
- }
- return(*arry); /* return the pointer */
- } /* End of find_name */
-
- /**********************************************************************************
- *
- Interaction with the preceding program could produce the following sessions:
-
- Output
- Enter name to be searched.
-
- Input
- Mark
-
- Output
- name Mark found
-
- or:
-
- Output
- Enter name to be searched.
-
- Input
- Bob
-
- Output
- name Bob not found
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A structure declaration has the form:
-
- Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstructΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
- Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- ΓööΓöÇΓöÇ_PackedΓöÇΓöÇΓöÿ Γöé Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇmemberΓöÇ;ΓöÇΓöÇΓö┤ΓöÇ}ΓöÇΓöÇΓöÿ
- Γöé Γöé
- ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A member has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ:ΓöÇΓöÇconstant_expressionΓöÇΓöÿ
- Γöé Γöé
- ΓööΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following definition shows a completely initialized structure:
-
- struct address {
- int street_no;
- char *street_name;
- char *city;
- char *prov;
- char *postal_code;
- };
- static struct address perm_address =
- { 9876, "Goto St.", "Cville", "Ontario", "X9X 1A1"};
-
- The values of perm_address are:
-
- Member Value
- perm_address.street_no 9876
- perm_address.street_name address of string "Goto St."
- perm_address.city address of string "Cville"
- perm_address.prov address of string "Ontario"
- perm_address.postal_code address of string "X9X 1A1"
-
- *
- ************************************************************************/
-
- /************************************************************************
- *
-
- The following definition shows a partially initialized structure:
-
- struct address {
- int street_no;
- char *street_name;
- char *city;
- char *prov;
- char *postal_code;
- };
- struct address temp_address =
- { 321, "Aggregate Ave.", "Structown", "Ontario" };
-
- The values of temp_address are:
-
- Member Value
- temp_address.street_no 321
- temp_address.street_name address of string "Aggregate Ave."
- temp_address.city address of string "Structown"
- temp_address.prov address of string "Ontario"
- temp_address.postal_code value depends on the storage class.
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example declares the identifier kitchen to be of type struct
- on_off:
-
- *
- ************************************************************************/
-
- struct on_off {
- unsigned light : 1;
- unsigned toaster : 1;
- int count;
- unsigned ac : 4;
- unsigned : 4;
- unsigned clock : 1;
- unsigned : 0;
- unsigned flag : 1;
- } kitchen ;
-
- /************************************************************************
- *
-
- The structure kitchen contains eight members. The following table describes
- the storage that each member occupies:
-
- Member Name Storage Occupied
- light 1 bit
- toaster 1 bit padding to next int boundary (unnamed field)
- count The size of an int
- ac 4 bits
- 4 bits (unnamed field)
- clock 1 bit padding to next int boundary (unnamed field)
- flag 1 bit
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following program finds the sum of the integer numbers in a linked list:
-
- *
- ***********************************************************************************/
-
- /* program to illustrate linked lists */
- #include <stdio.h>
- struct record {
- int number;
- struct record *next_num;
- };
- int main(void)
- {
- struct record name1, name2, name3;
- struct record *recd_pointer = &name1;
- int sum = 0;
- name1.number = 144;
- name2.number = 203;
- name3.number = 488;
- name1.next_num = &name2;
- name2.next_num = &name3;
- name3.next_num = NULL;
- while (recd_pointer != NULL)
- {
- sum += recd_pointer->number;
- recd_pointer = recd_pointer->next_num;
- }
- printf("Sum = %d\n", sum);
- }
-
- /**********************************************************************************
- *
- The structure type record contains two members: number (an integer) and
- next_num (a pointer to a structure variable of type record).
-
- The record type variables name1, name2, and name3 are assigned the following
- values:
-
- Member Name Value
- name1.number 144
- name1.next_num The address of name2
-
- name2.number 203
- name2.next_num The address of name3
-
- name3.number 488
- name3.next_num NULL (Indicating the end of the linked list.)
-
- The variable recd_pointer is a pointer to a structure of type record.
- recd_pointer is initialized to the address of name1 (the beginning of the
- linked list).
-
- The while loop causes the linked list to be scanned until recd_pointer equals
- NULL. The statement:
-
- *
- ***********************************************************************************/
-
- recd_pointer = recd_pointer->next_num;
-
- /**********************************************************************************
- *
- advances the pointer to the next object in the list.
-
- *
- ***********************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- The following diagram shows the form of a union type declaration:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇunionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇmemberΓöÇ;ΓöÇΓöÇΓö┤ΓöÇ}ΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇqualifierΓöÇΓöÿ ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A member has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ:ΓöÇΓöÇconstant_expressionΓöÇΓöÿ
- Γöé Γöé
- ΓööΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following example shows how you would initialize the first union member
- birthday of the union variable people:
-
- *
- ************************************************************************/
-
- union {
- char birthday[9];
- int age;
- float weight;
- } people = "04/06/57";
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following example defines a union data type (not named) and a union
- variable (named length). The member of length can be a long int, a float, or a
- double.
-
- *
- ***********************************************************************************/
-
- union {
- float meters;
- double centimeters;
- long inches;
- } length;
-
- /**********************************************************************************
- *
- The following example defines the union type data as containing one member.
- The member can be named charctr, whole, or real. The second statement defines
- two data type variables: input and output.
-
- *
- ***********************************************************************************/
-
- union data {
- char charctr;
- int whole;
- float real;
- };
- union data input, output;
-
- /**********************************************************************************
- *
- The following statement assigns a character to input:
-
- *
- ***********************************************************************************/
-
- input.charctr = 'h';
-
- /**********************************************************************************
- *
- The following statement assigns a floating-point number to member output:
-
- *
- ***********************************************************************************/
-
- output.real = 9.2;
-
- /**********************************************************************************
- *
- The following example defines an array of structures named records. Each
- element of records contains three members: the integer id_num, the integer
- type_of_input, and the union variable input. input has the union data type
- defined in the previous example.
-
- *
- ***********************************************************************************/
-
- struct {
- int id_num;
- int type_of_input;
- union data input;
- } records[10];
-
- /**********************************************************************************
- *
- The following statement assigns a character to the structure member input of
- the first element of records:
-
- *
- ***********************************************************************************/
-
- records[0].input.charctr = 'g';
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- The syntax of a typedef declaration is:
-
- ΓöÇΓöÇΓöÇΓöÇtypedefΓöÇΓöÇtype_specifierΓöÇΓöÇidentifierΓöÇ;ΓöÇΓöÇΓöÇ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /**********************************************************************************
- *
-
- The following statements declare LENGTH as a synonym for int and then use this
- typedef to declare length, width, and height as integral variables:
-
- *
- ***********************************************************************************/
-
- typedef int LENGTH;
- LENGTH length, width, height;
-
- /**********************************************************************************
- *
- The preceding lines are equivalent to the following:
-
- *
- ***********************************************************************************/
-
- int length, width, height;
-
- /**********************************************************************************
- *
- Similarly, typedef can be used to define a structure type. For example:
-
- *
- ***********************************************************************************/
-
- typedef struct {
- int kilos;
- int grams;
- } WEIGHT;
-
- /**********************************************************************************
- *
-
- The structure WEIGHT can then be used in the following declarations:
-
- *
- ***********************************************************************************/
-
- WEIGHT chicken, cow, horse, whale;
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A main function has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇmainΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
- Γöé ΓööΓöÇintΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
- Γöé Γö£ΓöÇvoidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- Γöé ΓööΓöÇintΓöÇΓöÇargcΓöÇΓöÇ,ΓöÇΓöÇchar *ΓöÇΓöÇargv[]ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÿ Γöé
- Γöé ΓööΓöÇchar *ΓöÇΓöÇenvp[]ΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇ)ΓöÇΓöÇblock_statementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>< Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following program backward prints the arguments entered on a command line
- such that the last argument is printed first:
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- int main(int argc, char *argv[])
- {
- while (--argc > 0)
- printf("%s ", argv[argc]);
- }
-
- /************************************************************************
- *
-
- If you invoke this program from a command line with the following:
-
- backward string1 string2
-
- The output generated is:
-
- string2 string1
-
- The arguments argc and argv would contain the following values:
-
- Object Value
- argc 3
- argv[0] pointer to string "backward"
- argv[1] pointer to string "string1"
- argv[2] pointer to string "string2"
- argv[3] NULL
-
- /***********************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A function definition has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé
- Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇ> Γöé
- Γöé Γö£ΓöÇexternΓöÇΓöñ ΓööΓöÇlinkage_specifierΓöÇΓöÿ ΓööΓöÇtype_specifierΓöÇΓöÿ Γöé
- Γöé ΓööΓöÇstaticΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé <ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ< Γöé
- Γöé >ΓöÇΓöÇfunction_declaratorΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
- Γöé ΓööΓöÇparameter_declarationΓöÇΓöÿ Γöé
- Γöé Γöé
- Γöé >ΓöÇΓöÇblock_statementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>< Γöé
- Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example is a complete definition of the function sum:
-
- *
- ************************************************************************/
-
- int sum(int x,int y)
- {
- return(x + y);
- }
-
- /************************************************************************
- *
-
- The function sum has external linkage, returns an object that has type int, and
- has two parameters of type int declared as x and y. The function body contains
- a single statement that returns the sum of x and y.
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A prototype function declarator has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇidentifierΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇ...ΓöÇΓöÿ
- Γöé Γöé
- ΓööΓöÇparameterΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The example below contains a function declarator sort with table declared as a
- pointer to int and length declared as type int. Note that arrays as parameters
- are implicitly converted to a pointer to the type.
-
- *
- ************************************************************************/
-
- void sort(int table[ ], int length)
- {
- int i, j, temp;
- for (i = 0; i < length -1; i++)
- for (j = i + 1; j < length; j++)
- if (table[i] > table[j])
- {
- temp = table[i];
- table[i] = table[j];
- table[j] = temp;
- }
- }
-
- /************************************************************************
- *
-
- The following examples contain prototype function declarators:
-
- *
- ************************************************************************/
-
- double square(float x);
- int area(int x,int y);
- static char *search(char);
-
- /************************************************************************
- *
-
- The example below illustrates how a typedef identifier can be used in a
- function declarator:
-
- *
- ************************************************************************/
-
- typedef struct tm_fmt { int minutes;
- int hours;
- char am_pm;
- } struct_t;
- long time_seconds(struct_t arrival)
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A non-prototype function declarator has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
- Γöé Γöé
- ΓööΓöÇparameterΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- A parameter declaration has the form:
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇdeclaratorΓöÇΓö┤ΓöÇ;ΓöÇΓöÇ
- Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇtype_specifierΓöÇΓöÇΓöÿ
- Γöé Γöé
- ΓööΓöÇΓöÇregisterΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example defines the function absolute with the return type
- double. Because this is a noninteger return type, absolute is declared prior
- to the function call.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- double absolute(double);
- int main(void)
- {
- double f = -3.0;
- printf("absolute number = %f\n", absolute(f));
- }
- double absolute(double number)
- {
- if (number < 0.0)
- number = -number;
- return (number);
- }
-
- /************************************************************************
- *
- Specifying a return type of void on a function declaration indicates that the
- function does not return a value. The following example defines the function
- absolute with the return type void. Within the function main, absolute is
- declared with the return type void.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- int main(void)
- {
- void absolute(float);
- float f = -8.7;
- absolute(f);
- }
- void absolute(float number)
- {
- if (number < 0.0)
- number = -number;
- printf("absolute number = %f\n", number);
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following statement calls the function startup and passes no parameters:
-
- *
- ************************************************************************/
-
- startup();
-
- /************************************************************************
- *
- The following function call causes copies of a and b to be stored in a local
- area for the function sum. The function sum is executed using the copies of a
- and b.
-
- *
- ************************************************************************/
-
- sum(a, b);
-
- /************************************************************************
- *
- The following function call passes the value 2 and the value of the expression
- a +b to sum:
-
- *
- ************************************************************************/
-
- sum(2, a + b);
-
- /************************************************************************
- *
- The following statement calls the functions printf and sum. sum receives the
- values of a and b. printf receives a character string and the return value of
- the function sum:
-
- *
- ************************************************************************/
-
- printf("sum = %d\n", sum(a,b));
-
- /************************************************************************
- *
- The following program passes the value of count to the function increment.
- increment increases the value of the parameter x by 1.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- void increment(int);
- int main(void)
- {
- int count = 5;
- /* value of count is passed to the function */
- increment(count);
- printf("count = %d\n", count);
- }
- void increment(int x)
- {
- ++x;
- printf("x = %d\n", x);
- }
-
- /************************************************************************
- *
- The output illustrates that the value of count in main remains unchanged:
-
- x = 6
- count = 5
-
- In the following program, main passes the address of count to increment. The
- function increment was changed to handle the pointer. The parameter x is
- declared a pointer. The contents to which x points are then incremented.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- int main(void)
- {
- void increment(int *x);
- int count = 5;
- /* address of count is passed to the function */
- increment(&count);
- printf("count = %d\n", count);
- }
- void increment(int *x)
- {
- ++*x;
- printf("*x = %d\n", *x);
- }
-
- /************************************************************************
- *
- The output shows that the variable count is increased:
-
- *x = 6
- count = 6
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- Operator Name Operators
-
- Primary () [ ] . ->
- Associativity: left to right
-
- Unary ++ -- - + ! ~ & * (typename) sizeof
- Associativity: right to left
-
- Multiplicative * / %
- Associativity: left to right
-
- Additive + -
- Associativity: left to right
-
- Bitwise Shift << >>
- Associativity: left to right
-
- Relational < > <= >=
- Associativity: left to right
-
- Equality == !=
- Associativity: left to right
-
- Bitwise Logical AND &
- Associativity: left to right
-
- Bitwise Exclusive OR ^ or ╨║
- Associativity: left to right
-
- Bitwise Inclusive OR |
- Associativity: left to right
-
- Logical AND &&
- Associativity: left to right
-
- Logical OR ||
- Associativity: left to right
-
- Conditional ? :
- Associativity: right to left
-
- Assignment = += -= *= /= <<= >>= %= &= ^= |=
- Associativity: right to left
-
- Comma ,
- Associativity: left to right
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /***********************************************************************
- *
- The parentheses in the following expressions explicitly show how the C language
- groups operands and operators. If parentheses did not appear in these
- expressions, the operands and operators would be grouped in the same manner as
- indicated by the parentheses.
-
- *
- ************************************************************************/
-
- total = (4 + (5 * 3));
- total = (((8 * 5) / 10) / 3);
- total = (10 + (5/3));
-
- /***********************************************************************
- *
- The following expression contains operators that are both associative and
- commutative:
-
- *
- ************************************************************************/
-
- total = price + prov_tax + city_tax;
-
- /***********************************************************************
- *
- Because the C language does not specify the order of grouping operands with
- operators that are both associative and commutative, the operands and operators
- could be grouped in the following ways (as indicated by parentheses):
-
- *
- ************************************************************************/
-
- total = (price + (prov_tax + city_tax));
- total = ((price + prov_tax) + city_tax);
- total = ((price + city_tax) + prov_tax);
-
- /***********************************************************************
- *
- However, the grouping of operands and operators could affect the result. In
- the following expression, each function call may be modifying the same global
- variables. These side effects may result in different values for the expression
- depending on the order in which the functions are called:
-
- *
- ************************************************************************/
-
- a = b() + c() + d();
-
- /***********************************************************************
- *
- If the expression contains operators that are both associative and commutative
- and the order of grouping operands with operators can affect the result of the
- expression, separate the expression into several expressions. For example, the
- following expressions could replace the previous expression if the called
- functions do not produce any side effects that affect the variable a.
-
- *
- ************************************************************************/
-
- a = b();
- a += c();
- a += d();
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- Expression Lvalue
- x = 42; x
- *ptr = newvalue; *ptr
- a++ a
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /***********************************************************************
- *
-
- The following examples show constants used in expressions.
-
- *
- ************************************************************************/
-
- Expression Constant
- x = 42; 42
- extern int cost = 1000; 1000
- y = 3 * 29; 3 * 29
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- In the following example, main passes func two values: 5 and 7. The function
- func receives copies of these values and accesses them by the identifiers: a
- and b. The function func changes the value of a. When control passes back to
- main, the actual values of x and y are not changed. The called function func
- only receives copies of x and y, not the values themselves.
-
- *
- ************************************************************************/
-
- int main(void)
- {
- int x = 5, y = 7;
- func(x, y);
- printf("In main, x = %d y = %d\n", x, y);
- }
- func(a,b)
- int a, b;
- {
- a += b;
- printf("In func, a = %d b = %d\n", a, b);
- }
-
- /************************************************************************
- *
-
- The preceding program produces the following output:
-
- In func, a = 12 b = 7
- In main, x = 5 y = 7
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /***********************************************************************
- *
- The following expression determines which variable has the greater value, y or
- z, and assigns the greater value to the variable x:
-
- *
- ************************************************************************/
-
- x = (y > z) ? y : z;
-
- /***********************************************************************
- *
- The preceding expression is equivalent to the following statement:
-
- *
- ************************************************************************/
-
- if (y > z)
- x = y;
- else
- x = z;
-
- /***********************************************************************
- *
- The following expression calls the function printf which receives the value of
- the variable c, if c evaluates to a digit. Otherwise, printf receives the
- character constant 'x'.
-
- *
- ************************************************************************/
-
- printf(" c = %c\n", isdigit(c) ? c : 'x');
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example assigns the value of number to the member employee of the
- structure payroll:
-
- *
- ************************************************************************/
-
- payroll.employee = number;
-
- /************************************************************************
- *
-
- The following example assigns in order the value 0 (zero) to d, the value of d
- to c, the value of c to b, and the value of b to a:
-
- *
- ************************************************************************/
-
- a = b = c = d = 0;
-
- /***********************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example shows how the values of data objects change in nested
- blocks:
-
- *
- ************************************************************************/
-
- 1 #include <stdio.h>
- 2
- 3 int main(void)
- 4 {
- 5 int x = 1; /* Initialize x to 1 */
- 6 int y = 3;
- 7
- 8 if (y > 0)
- 9 {
- 10 int x = 2; /* Initialize x to 2 */
- 11 printf("second x = %4d\n", x);
- 12 }
- 13 printf("first x = %4d\n", x);
- 14 }
-
- /************************************************************************
- *
- The preceding example produces the following output:
-
- second x = 2
- first x = 1
-
- Two variables named x are defined in main. The definition of x on line 5
- retains storage throughout the execution of main. However, since the
- definition of x on line 10 occurs within a nested block, line 11 recognizes x
- as the variable defined on line 10. Line 13 is not part of the nested block.
- Thus, line 13 recognizes x as the variable defined on line 5.
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example shows a break statement in the action part of a for
- statement. If the ith element of the array string is equal to '\0', the break
- statement causes the for statement to end.
-
- *
- ************************************************************************/
-
- for (i = 0; i < 5; i++)
- {
- if (string[i] == '\0')
- break;
- length++;
- }
-
- /************************************************************************
- *
- The preceding for statement is equivalent to the following for statement, if
- string does not contain any embedded null characters:
-
- * *
- ************************************************************************/
-
- for (i = 0; i < 5; i++)
- {
- if (string[i] != '\0')
- length++;
- }
-
- /************************************************************************
- *
- The following example shows a break statement in a nested looping statement.
- The outer loop sequences an array of pointers to strings. The inner loop
- examines each character of the string. When the break statement is executed,
- the inner loop ends and control returns to the outer loop.
-
- *
- ************************************************************************/
-
- /************************************************************************
- *
- The preceding program produces the following output:
-
- letter count = 4
-
- The following example is a switch statement that contains several break
- statements. Each break statement indicates the end of a specific clause and
- ends the execution of the switch statement.
-
- *
- ************************************************************************/
-
- enum {morning, afternoon, evening} timeofday;
- switch (timeofday)
- {
- case (morning):
- printf("Good Morning\n");
- break;
- case (evening):
- printf("Good Evening\n");
- break;
- default:
- printf("Good Day, eh\n");
- break;
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example shows a continue statement in a for statement. The
- continue statement causes the system to skip over those elements of the array
- rates that have values less than or equal to 1.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- #define SIZE 5
- int main(void)
- {
- int i;
- static float rates[SIZE] = { 1.45, 0.05, 1.88, 2.00, 0.75 };
- printf("Rates over 1.00\n");
- for (i = 0; i < SIZE; i++)
- {
- if (rates[i] <= 1.00) /* skip rates <= 1.00 */
- continue;
- printf("rate = %.2f\n", rates[i]);
- }
- }
-
- /************************************************************************
- *
- The preceding program produces the following output:
-
- Rates over 1.00
- rate = 1.45
- rate = 1.88
- rate = 2.00
-
- The following example shows a continue statement in a nested loop. When the
- inner loop encounters a number in the array strings, that iteration of the loop
- is terminated. Execution continues with the third expression of the inner loop
- (See for). The inner loop is terminated when the '\0' escape sequence is
- encountered.
-
- *
- ************************************************************************/
-
- /************************************************************************
- ** This program counts the characters in strings that are part **
- ** of an array of pointers to characters. The count excludes **
- ** the digits 0 (zero) through 9. **
- *************************************************************************/
- #include <stdio.h>
- #define SIZE 3
- int main(void)
- {
- static char *strings[SIZE] = { "ab", "c5d", "e5" };
- int i;
- int letter_count = 0;
- char *pointer;
- for (i = 0; i < SIZE; i++) /* for each string */
- /* for each each character */
- for (pointer = strings[i]; *pointer != '\0'; ++pointer)
- { /* if a number */
- if (*pointer >= '0' && *pointer <= '9')
- continue;
- letter_count++;
- }
- printf("letter count = %d\n", letter_count);
- }
-
- /************************************************************************
- *
- The preceding program produces the following output:
-
- letter count = 5
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following statement prompts the user to enter a 1. If the user enters a 1,
- the statement ends execution. Otherwise, the statement displays another prompt.
-
- *
- ************************************************************************/
-
- #include <stdio.h>
- int main (void)
- {
- int reply1;
- do
- {
- printf("Enter a 1\n");
- scanf("%d", &reply1);
- } while (reply1 != 1);
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- printf("Account Number: \n"); /* A call to the printf */
- marks = dollars * exch_rate; /* An assignment to marks */
- (difference < 0) ? ++losses : ++gain; /* A conditional increment */
- switches = flags | BIT_MASK; /* An assignment to switches */
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following for statement prints the value of count 20 times. The for
- statement initially sets the value of count to 1. After each execution of the
- statement, count is incremented.
-
- *
- ************************************************************************/
-
- for (count = 1; count <= 20; count++)
- printf("count = %d\n", count);
-
- /************************************************************************
- *
- For comparison purposes, the preceding example can be written using the
- following sequence of statements to accomplish the same task. Note the use of
- the while statement instead of the for statement.
-
- *
- ************************************************************************/
-
- count = 1;
- while (count <= 20)
- {
- printf("count = %d\n", count);
- count++;
- }
-
- /************************************************************************
- *
- The following for statement does not contain an initialization expression.
-
- *
- ************************************************************************/
-
- for (; index > 10; --index)
- {
- list[index] = var1 + var2;
- printf("list[%d] = %d\n", index, list[index]);
- }
-
- /************************************************************************
- *
- The following for statement will continue executing until scanf receives the
- letter e:
-
- *
- ************************************************************************/
-
- for (;;)
- {
- scanf("%c", &letter);
- if (letter == '\n')
- continue;
- if (letter == 'e')
- break;
- printf("You entered the letter %c\n", letter);
- }
-
- /************************************************************************
- *
- The following for statement contains multiple initializations and increments.
- The comma operator makes this construction possible.
-
- *
- ************************************************************************/
-
- for (i = 0, j = 50; i < 10; ++i, j += 50)
- {
- printf("i = %2d and j = %3d\n", i, j);
- }
-
- /************************************************************************
- *
- The following example shows a nested for statement. The outer statement is
- executed as long as the value of row is less than 5. Each time the outer for
- statement is executed, the inner for statement sets the initial value of column
- to zero and the statement of the inner for statement is executed 3 times. The
- inner statement is executed as long as the value of column is less than 3.
- This example prints the values of an array having the dimensions [5][3]:
-
- *
- ************************************************************************/
-
- for (row = 0; row < 5; row++)
- for (column = 0; column < 3; column++)
- printf("%d\n", table[row][column]);
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example shows a goto statement that is used to jump out of a
- nested loop. This function could be written without using a goto statement.
-
- *
- ************************************************************************/
-
- void display(int matrix[3][3])
- {
- int i, j;
- for (i = 0; i < 3; i++)
- for (j = 0; j < 3; j++)
- {
- if ( (matrix[i][j] < 1) || (matrix[i][j] > 6) )
- goto out_of_bounds;
- printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
- }
- return;
- out_of_bounds: printf("number must be 1 through 6\n");
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example causes grade to receive the value A if the value of score
- is greater than or equal to 90.
-
- *
- ************************************************************************/
-
- if (score >= 90)
- grade = 'A';
-
- /************************************************************************
- *
- The following example displays number is positive if the value of number is
- greater than or equal to 0 (zero). Otherwise, the example displays number is
- negative.
-
- *
- ************************************************************************/
-
- if (number >= 0)
- printf("number is positive\n");
- else
- printf("number is negative\n");
-
- /************************************************************************
- *
- The following example shows a nested if statement:
-
- *
- ************************************************************************/
-
- if (paygrade == 7)
- if (level >= 0 && level <= 8)
- salary *= 1.05;
- else
- salary *= 1.04;
- else
- salary *= 1.06;
-
- /************************************************************************
- *
- The following example shows an if statement that does not have an else clause.
- Because an else clause always associates with the closest if statement, braces
- may be necessary to force a particular else clause to associate with the
- correct if statement. In this example, omitting the braces would cause the
- else clause to associate with the nested if statement.
-
- *
- ************************************************************************/
-
- if (gallons > 0) {
- if (miles > gallons)
- mpg = miles/gallons;
- }
- else
- mpg = 0;
-
- /************************************************************************
- *
- The following example shows an if statement nested within an else clause. This
- example tests multiple conditions. The tests are made in order of their
- appearance. If one test evaluates to a nonzero value, a statement executes and
- the entire if statement ends.
-
- *
- ************************************************************************/
-
- if (value > 0)
- ++increase;
- else if (value == 0)
- ++break_even;
- else
- ++decrease;
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example initializes the elements of the array price. Because the
- initializations occur within the for expressions, a statement is only needed to
- finish the for syntax; no operations are required.
-
- *
- ************************************************************************/
-
- for (i = 0; i < 3; price[i++] = 0)
- ;
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- return; /* Returns no value */
- return result; /* Returns the value of result */
- return 1; /* Returns the value 1 */
- return (x * x); /* Returns the value of x * x */
-
- /************************************************************************
- *
- The following function searches through an array of integers to determine if a
- match exists for the variable number. If a match exists, the function match
- returns the value of i. If a match does not exist, the function match returns
- the value -1 (negative one).
-
- *
- ************************************************************************/
-
- int match(int number, int array[ ], int n)
- {
- int i;
- for (i = 0; i < n; i++)
- if (number == array[i])
- return (i);
- return(-1);
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- case Clause and Label
-
- /************************************************************************
- *
-
- A case_clause contains a case label followed by any number of statements. A
- case clause has the form:
-
- *
- ************************************************************************/
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇcase_labelΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÇ
-
- /************************************************************************
- *
-
- A case_label contains the word case followed by a constant expression and a
- colon. Anywhere you can place one case label, you can place multiple case
- labels. A case label has the form:
-
- *
- ************************************************************************/
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇΓöÇcaseΓöÇΓöÇconstant_expressionΓöÇΓöÇ:ΓöÇΓö┤ΓöÇ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- default Clause and Label
-
- /************************************************************************
- *
-
- A default_clause contains a default label followed by one or more statements.
- You can place a case label on either side of the default label. A
- default_clause has the form:
-
- *
- ************************************************************************/
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé
- ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdefault_labelΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstatementΓöÇΓö┤ΓöÇ
- Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ
-
- /************************************************************************
- *
-
- A default_label contains the word default and a colon. A switch statement can
- have only one default label. A default label has the form:
-
- *
- ************************************************************************/
-
- ΓöÇΓöÇdefaultΓöÇΓöÇ:ΓöÇΓöÇ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following switch statement contains several case clauses and one default
- clause. Each clause contains a function call and a break statement. The break
- statements prevent control from passing down through each statement in the
- switch body.
-
- If the switch expression evaluated to '/', the switch statement would call the
- function divide. Control would then pass to the statement following the switch
- body.
-
- *
- ************************************************************************/
-
- char key;
- printf("Enter an arithmetic operator\n");
- scanf("%c",&key);
- switch (key)
- {
- case '+':
- add();
- break;
- case '-':
- subtract();
- break;
- case '*':
- multiply();
- break;
- case '/':
- divide();
- break;
- default:
- printf("invalid key\n");
- break;
- }
-
- /************************************************************************
- *
-
- If the switch expression matches a case expression, the statements following
- the case expression are executed until a break statement is encountered or the
- end of the switch body is reached. In the following example, break statements
- are not present. If the value of text[i] is equal to 'A', all three counters
- are incremented. If the value of text[i] is equal to 'a', lettera and total
- are increased. Only total is increased if text[i] is not equal to 'A' or 'a'.
-
- *
- ************************************************************************/
-
- char text[100];
- int capa, lettera, total;
- for (i=0; i<sizeof(text); i++) {
- switch (text[i])
- {
- case 'A':
- capa++;
- case 'a':
- lettera++;
- default:
- total++;
- }
- }
-
- /************************************************************************
- *
- The following switch statement performs the same statements for more than one
- case label:
-
- *
- ************************************************************************/
-
- int month;
- switch (month)
- {
- case 12:
- case 1:
- case 2:
- printf("month %d is a winter month\n", month);
- break;
- case 3:
- case 4:
- case 5:
- printf("month %d is a spring month\n", month);
- break;
- case 6:
- case 7:
- case 8:
- printf("month %d is a summer month\n", month);
- break;
- case 9:
- case 10:
- case 11:
- printf("month %d is a fall month\n", month);
- break;
- default:
- printf("not a valid month\n");
- break;
- }
-
- /************************************************************************
- *
-
- If the expression month had the value 3, control would be passed to the
- statement:
-
- *
- ************************************************************************/
-
- printf("month %d is a spring month\n", month);
-
- /************************************************************************
- *
-
- The break statement would pass control to the statement following the switch
- body.
-
- *
- ************************************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- In the following program, item[index] triples each time the value of the
- expression ++index is less than MAX_INDEX. When ++index evaluates to
- MAX_INDEX, the while statement ends.
-
- *
- ************************************************************************/
-
- #define MAX_INDEX (sizeof(item) / sizeof(item[0]))
- #include <stdio.h>
- int main(void)
- {
- static int item[ ] = { 12, 55, 62, 85, 102 };
- int index = 0;
- while (index < MAX_INDEX)
- {
- item[index] *= 3;
- printf("item[%d] = %d\n", index, item[index]);
- ++index;
- }
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /*********************************
- *
- The following program contains two macro definitions and a macro invocation
- that references both of the defined macros:
-
- *
- *********************************/
-
- #define SQR(s) { ((s) * (s)) }
- #define PRNT(a,b) { printf("value 1 = %d\n", a); printf("value 2 = %d\n", b); }
- int main(void)
- {
- int x = 2;
- int y = 3;
- PRNT(SQR(x),y);
- }
-
- /*********************************
- *
- After being interpreted by the preprocessor, the preceding program is replaced
- by code equivalent to the following:
-
- *
- *********************************/
-
- int main(void)
- {
- int x = 2;
- int y = 3;
- {
- printf("value 1 = %d\n", ( (x) * (x) ) );
- printf("value 2 = %d\n", y);
- }
- }
-
- /*********************************
- *
- Execution of this program produces the following output:
-
- value 1 = 4
- value 2 = 3
-
- *
- *********************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /*********************************
- *
- The following directives define BUFFER and SQR:
-
- *
- *********************************/
-
- #define BUFFER 512
- #define SQR(x) ((x) * (x))
-
- /*********************************
- *
- The following directives nullify the preceding definitions:
-
- *
- *********************************/
-
- #undef BUFFER
- #undef SQR
-
- /*********************************
- *
- Any occurrences of the identifiers BUFFER and SQR that follow these #undef
- directives are not replaced with any replacement tokens. Once the definition of
- a macro has been removed by an #undef directive, the identifier can be used in
- a new #define directive.
-
- *
- *********************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /*********************************
- *
- The following printf statements will display the values of the predefined
- macros (__LINE__, __FILE__, __TIME__, and __DATE__) and will print a message
- indicating the program's conformance to ANSI standards based on __STDC__:
-
- *
- *********************************/
-
- #pragma langlvl(ANSI)
- #include <stdio.h>
- #ifdef __STDC__
- # define CONFORM "conforms"
- #else
- # define CONFORM "does not conform"
- #endif
- int main(void)
- {
- printf("Line %d of file %s has been executed\n", __LINE__, __FILE__);
- printf("This file was compiled at %s on %s\n", __TIME__, __DATE__);
- printf("This program %s to ANSI standards\n", CONFORM);
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- The following examples demonstrate the rules given in the preceding paragraph.
-
- #define STR(x) #x
- #define XSTR(x) STR(x)
- #define ONE 1
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé INVOCATION Γöé RESULT OF MACRO EXPANSION Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "STR(\n "\n" '\n')" Γöé ""\n \"\\n\" '\\n'"" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "STR(ONE)" Γöé "ONE" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "XSTR(ONE)" Γöé "1" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "XSTR("hello")" Γöé "\"hello\"" Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- The following examples demonstrate the rules given in the preceding paragraph.
-
- #define ArgArg(x, y) x##y
- #define ArgText(x) x##TEXT
- #define TextArg(x) TEXT##x
- #define TextText TEXT##text
- #define Jitter 1
- #define bug 2
- #define Jitterbug 3
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé INVOCATION Γöé RESULT OF MACRO EXPANSION Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ArgArg(var, 1)" Γöé ""var1"" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ArgText(var)" Γöé ""varTEXT"" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "TextArg(var)" Γöé ""TEXTvar"" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "TextText" Γöé ""TEXTtext"" Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé "ArgArg(Jitter, Γöé "3" Γöé
- Γöé bug)" Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /*********************************
- *
- The following directive generates the error message, Error in TESTPGM1 - This
- section should not be compiled:
-
- *
- *********************************/
-
- #error Error in TESTPGM1 - This section should not be compiled
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- If you have the following directives, the first #else will be matched with the
- #if directive.
-
- *
- ************************************************************************/
-
- #ifdef MACNAME
- /* tokens added if MACNAME is defined */
- # if TEST <=10
- /* tokens added if MACNAME is defined and TEST <= 10 */
- # else
- /* tokens added if MACNAME is defined and TEST > 10 */
- # endif
- #else
- /* tokens added if MACNAME is not defined */
- #endif
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example uses the #if and #elif directives to assign values to an
- array.
-
- *
- ************************************************************************/
- #include <stdio.h>
- int main(void)
- {
- int i;
- char *arrayname = "realarray";
- int realarray[] = { 1, 2, 3 };
- int array1[] = { 4, 5, 6 };
- int array2[] = { 7, 8, 9 };
- #if ( (defined(LEVEL1)) && (TEST > 1) )
- for (i = 0; i < 3; i++)
- realarray[i] = array1[i];
- arrayname = "array1";
- #elif (defined(LEVEL2))
- for (i = 0; i < 3; i++)
- realarray[i] = array2[i];
- arrayname = "array2";
- #endif
- printf("realarray[] now has the contents of %s[]\n", arrayname);
- /* Assuming only LEVEL2 is defined, the expected output is:
- realarray[] now has the contents of array2[] */
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example defines MAX_LEN to be 75 if EXTENDED is defined for the
- preprocessor. Otherwise, MAX_LEN is defined to be 50.
-
- *
- ************************************************************************/
-
- #ifdef EXTENDED
- # define MAX_LEN 75
- #else
- # define MAX_LEN 50
- #endif
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example defines MAX_LEN to be 50 if EXTENDED is not defined for
- the preprocessor. Otherwise, MAX_LEN is defined to be 75.
-
- *
- ************************************************************************/
-
- #ifndef EXTENDED
- # define MAX_LEN 50
- #else
- # define MAX_LEN 75
- #endif
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
-
- The following example shows preprocessor conditional compilation directives
- ended by the #endif directive.
-
- *
- ************************************************************************/
- #if defined(LEVEL1)
- # define SIZEOF_INT 16
- # ifdef PHASE2
- # define MAX_PHASE 2
- # else
- # define MAX_PHASE 8
- # endif
- #elif defined(LEVEL2)
- # define SIZEOF_INT 32
- # define MAX_PHASE 16
- #endif
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /************************************************************************
- *
- The following example shows how you can nest preprocessor conditional
- compilation directives:
-
- *
- ************************************************************************/
-
- #if defined(TARGET1)
- # define SIZEOF_INT 16
- # ifdef PHASE2
- # define MAX_PHASE 2
- # else
- # define MAX_PHASE 8
- # endif
- #elif defined(TARGET2)
- # define SIZEOF_INT 32
- # define MAX_PHASE 16
- #else
- # define SIZEOF_INT 32
- # define MAX_PHASE 32
- #endif
-
- /************************************************************************
- *
- The following program contains preprocessor conditional compilation directives:
-
- *
- ************************************************************************/
-
- int main(void)
- {
- static int array[ ] = { 1, 2, 3, 4, 5 };
- int i;
- for (i = 0; i <= 4; i++)
- {
- array[i] *= 2;
- #if TEST >= 1
- printf("i = %d\n", i);
- printf("array[i] = %d\n", array[i]);
- #endif
- }
- }
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /***********************************************************
- *
- You can use #line control directives to make the compiler provide more
- meaningful error messages. The following program uses #line control directives
- to give each function an easily recognizable line number:
-
- *
- ***********************************************************/
-
- #include <stdio.h>
- #define LINE200 200
- int main(void)
- {
- func_1();
- func_2();
- }
- #line 100
- func_1()
- {
- printf("Func_1 - the current line number is %d\n",_ _LINE_ _);
- }
- #line LINE200
- func_2()
- {
- printf("Func_2 - the current line number is %d\n",_ _LINE_ _);
- }
-
- /********************************************************
- *
- The preceding program produces the following output:
-
- Func_1 - the current line number is 102
- Func_2 - the current line number is 202
-
- *
- ********************************************************/
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- /******************************************************
- *
- In the following example, if MINVAL is a defined macro name, no action is
- performed. If MINVAL is not a defined identifier, it is defined as the value
- 1.
-
- *
- ******************************************************/
-
- #ifdef MINVAL
- #
- #else
- #define MINVAL 1
- #endif
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- #pragma langlvl(SAA)
- #pragma title("SAA pragma example")
- #pragma pagesize(55)
- #pragma map(ABC, "A$$BC@")
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- Compiler options specified on the command line override any previously
- specified in the ICC environment variable.
-
- For example, to compile a source file with the no optimization option, enter:
-
- icc /O- myprog.c
-
- When compiling programs with multiple source files, an option is in effect for
- all the source files that follow it. The executable module will have the same
- file name as the first source file but with the extension .EXE.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- Frequently used command-line options can be stored in the ICC environment
- variable. This method is useful if you find yourself repeating the same
- command-line options every time you compile. You can also specify source file
- names in ICC.
-
- The ICC environment variable can be set either from the command line, in a
- command (.CMD) file, or in the CONFIG.SYS file. If it is set on the command
- line or by running a command file, the options will only be in effect for the
- current session. If it is set in the CONFIG.SYS file, the options will be in
- effect every time you use icc unless you override them using a .CMD file or by
- specifying options on the command line.
-
- For example, to specify that a source listing be generated for all compilations
- and that the macro DEBUG be defined to be 1, use the following command at the
- OS/2 prompt (or in your CONFIG.SYS file if you want these options every time
- you use the compiler):
-
- SET ICC=/Ls+ /DDEBUG::1
- (The double colon must be used because the "=" sign is not allowed in OS/2
- environment variables.)
-
- Now, type icc prog1.C to compile prog1.C. The macro DEBUG will be defined as
- 1, and a source listing will be produced.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- If you have installed the IBM WorkFrame/2 product, you can set compiler options
- using the options dialogs. You can use the dialogs when you create or modify a
- project and from the Options pull-down menu.
-
- Options you select while creating or changing a project are saved with that
- project. Options set from the pull-down menu are in effect for only that
- compilation.
-
- For more information on setting options and using the WorkFrame/2 product,
- refer to the WorkFrame/2 documentation.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- In the following example, the file module1.c will be compiled with the option
- /Fa- because this option follows /Fa+.
-
- icc /Fa+ /Fa- module1.c
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- For example, the command
-
- icc /Ia: /Ib:\cde /Ic:\fgh prog.c
- causes the following search path to be built:
-
- a:;b:\cde;c:\fgh
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- o Perform syntax check only:
-
- icc /Fc+ myprog.c
-
- o Name the object file:
-
- icc /Fobarney.obj fred.c
-
- This names the object file barney.obj instead of the default, fred.obj.
-
- o Name the executable file:
-
- icc /Febarney.exe fred.c
-
- This names the object file barney.exe instead of the default, fred.exe.
-
- o Name the listing file:
-
- icc /Floutput.my /L fred.c
-
- This example creates a listing output called output.my instead of fred.lst.
-
- o Name the linker map file:
-
- icc /Fmoutput.map fred.c
-
- This example creates a linker map file called output.map instead of
- fred.map.
-
- o Name the assembler listing file:
-
- icc /Fabarney fred.c
-
- The above example names the output barney.asm. instead of fred.asm.
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- o Produce all diagnostic messages:
-
- icc /Wall blue.c
- icc /Wall+ blue.c
-
- o Produce diagnostic messages about consistency of declarations, unreferenced
- parameters, missing function prototypes, and uninitialized variables:
-
- icc /Wdcl+par+pro+uni blue.c
- icc /Wdclparprouni blue.c
-
- o Produce all diagnostic messages except:
-
- - Warnings about assignments that can cause a loss of precision
- - Preprocessor trace messages
- - External variable warnings by turning on all options, and then turning
- off the ones you do not want:
-
- icc /Wall+trd-ppt-ext- blue.c
-
- o Produce only basic diagnostics, with all other suboptions turned off:
-
- icc /Wgen+ blue.c
-
- o Produce only basic diagnostics and suppress all messages with a severity of
- "informational":
-
- icc /Wgen2 blue.c
-
-
- ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
-
- o Passing a parameter to the linker:
-
- icc /B"/NOI" fred.c
-
- The /NOI option tells the linker to preserve the case of external names in
- fred.obj.
-
- o Imbedding a version string or copyright:
-
- icc /V"Version 1.0" fred.c
-
- This imbeds the version notice in fred.obj.
-