home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional Developers Kit 1992 November / Disc01 / Disc01.mdf / cppbeta / help / dde4clrm.in_ / DDE4CLRM.INF (.txt)
Encoding:
OS/2 Help File  |  1992-10-27  |  432.1 KB  |  18,156 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Elements of C ΓòÉΓòÉΓòÉ
  3.  
  4. This section describes the following basic elements of the C programming 
  5. language. 
  6.  
  7. o Character Set 
  8. o Trigraphs 
  9. o Escape Sequences 
  10. o Comments 
  11. o Identifiers 
  12. o C Language Keywords 
  13. o Constants 
  14.  
  15.  
  16. ΓòÉΓòÉΓòÉ 1.1. Character Set ΓòÉΓòÉΓòÉ
  17.  
  18. The following lists the basic character set which must be available at both 
  19. compile and run time: 
  20.  
  21. o The uppercase and lowercase letters of the English alphabet 
  22. o The decimal digits 0 through 9 
  23. o The following graphic characters: 
  24.  
  25.        ! " # % & ' ( ) * + , - . / :
  26.        ; < = > ? [ \ ] _ { } ~
  27.  
  28. o The caret (^) character in ASCII (bitwise exclusive OR symbol) or the 
  29.   equivalent not (╨║) character in EBCDIC 
  30. o The split vertical bar (|) character in ASCII which may be represented by the 
  31.   vertical bar (|) character on EBCDIC systems 
  32. o The space character 
  33. o The control characters representing horizontal tab, vertical tab, form feed, 
  34.   and end of string. 
  35.  
  36. In C, uppercase and lowercase letters are treated as distinct characters. 
  37.  
  38. For the environments that do not support the entire C character set, you can 
  39. use trigraphs as alternative symbols to represent some C characters. 
  40.  
  41. Related Information 
  42.  
  43. o Trigraphs 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 1.2. Trigraphs ΓòÉΓòÉΓòÉ
  47.  
  48. Some characters from the C character set are not available on all environments. 
  49. You can enter these characters into a C source program using a sequence of 
  50. three characters called a trigraph.  The trigraph sequences are: 
  51.  
  52. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  53. Γöé "??="    Γöé "#"          Γöé
  54. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  55. Γöé "??("    Γöé "["          Γöé
  56. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  57. Γöé "??)"    Γöé "]"          Γöé
  58. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  59. Γöé "??<"    Γöé "{"          Γöé
  60. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  61. Γöé "??>"    Γöé "}"          Γöé
  62. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  63. Γöé "??/"    Γöé "\"          Γöé
  64. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  65. Γöé "??'"    Γöé "^"          Γöé
  66. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  67. Γöé "??!"    Γöé "Γöé"          Γöé
  68. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  69. Γöé "??-"    Γöé "~"          Γöé
  70. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  71.  
  72. Related Information 
  73.  
  74. o Character Set 
  75.  
  76.  
  77. ΓòÉΓòÉΓòÉ 1.3. Escape Sequences ΓòÉΓòÉΓòÉ
  78.  
  79. You can represent any member of the character set used at run-time by an escape 
  80. sequence.  For example, you can use escape sequences to place such characters 
  81. as tab, carriage return, and backspace into an output stream.  An escape 
  82. sequence contains a backslash (\) symbol followed by one of the escape sequence 
  83. characters or \ or followed by an octal or hexadecimal number.  A hexadecimal 
  84. escape sequence contains an x followed by one or more hexadecimal digits (0-9, 
  85. A-F, a-f). An octal escape sequence contains one or more octal digits (0-7). 
  86.  
  87. The C language escape sequences and the characters they represent are: 
  88.  
  89. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  90. Γöé ESCAPE     Γöé CHARACTER REPRES-    Γöé
  91. Γöé SEQUENCE   Γöé ENTED                Γöé
  92. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  93. Γöé "\a"       Γöé Alert (bell)         Γöé
  94. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  95. Γöé "\b"       Γöé Backspace            Γöé
  96. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  97. Γöé "\f"       Γöé Form feed (new page) Γöé
  98. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  99. Γöé "\n"       Γöé New-line             Γöé
  100. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  101. Γöé "\r"       Γöé Carriage return      Γöé
  102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  103. Γöé "\t"       Γöé Horizontal tab       Γöé
  104. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  105. Γöé "\v"       Γöé Vertical tab         Γöé
  106. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  107. Γöé "\'"       Γöé Single quotation     Γöé
  108. Γöé            Γöé mark                 Γöé
  109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  110. Γöé "\""       Γöé Double quotation     Γöé
  111. Γöé            Γöé mark                 Γöé
  112. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  113. Γöé "\?"       Γöé Question mark        Γöé
  114. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  115. Γöé "\\"       Γöé Backslash            Γöé
  116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  117. Γöé NOTE:  "\" - The line continua-   Γöé
  118. Γöé tion sequence (\ followed by a    Γöé
  119. Γöé new-line character) which is used Γöé
  120. Γöé in C language character strings   Γöé
  121. Γöé to indicate that the current line Γöé
  122. Γöé continues on the next line, is    Γöé
  123. Γöé not an escape sequence.           Γöé
  124. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  125.  
  126. The value of an escape sequence represents the member of the character set used 
  127. at run-time. For example, on a system that uses the ASCII character codes, the 
  128. letter V is represented by the escape sequence \x56. 
  129.  
  130. You can place an escape sequence in a character constant or in a string 
  131. constant. If an escape sequence is not recognized, the compiler uses the 
  132. character following the backslash and a message is issued. Note that this 
  133. behavior is implementation-defined. 
  134.  
  135. In string and character sequences, when you want the backslash to represent 
  136. itself (rather than the beginning of an escape sequence), you must use a \\ 
  137. backslash escape sequence. 
  138.  
  139. Related Information 
  140.  
  141. o Character Constants 
  142. o Strings 
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ 1.4. Comments ΓòÉΓòÉΓòÉ
  146.  
  147. Comments begin with the /* characters, end with the */ characters, and may span 
  148. more than one line.  You can place comments anywhere the C language allows 
  149. white space. White space includes space, tab, form feed, and new-line 
  150. characters. 
  151.  
  152. If the /Ss compiler option is in effect when you compile your program, double 
  153. slashes (//) will also specify the beginning of a comment.  The comment ends at 
  154. the next new line character. 
  155.  
  156. You cannot nest comments.  Each comment ends at the first occurrence of */. 
  157.  
  158. Multibyte characters can also be included within a comment. 
  159.  
  160. Related Information 
  161.  
  162. o Source Code Options 
  163.  
  164.  
  165. ΓòÉΓòÉΓòÉ 1.5. Identifiers ΓòÉΓòÉΓòÉ
  166.  
  167. Identifiers provide names for functions, data objects, labels, tags, 
  168. parameters, macros and typedefs. There is no limit for the number of characters 
  169. in an identifier.  However, only the first several characters of identifiers 
  170. may be significant. The following table shows the character lengths of 
  171. identifiers that are recognized by the C/C++ for OS/2 compiler. For SAA C 
  172. compilers, the minimal length of identifiers is 100 characters. config platform 
  173. off Some compilers may allow longer identifiers. 
  174.  
  175. Identifier                  Minimum Number of Significant Characters 
  176.  
  177. Static data objects         255 characters 
  178.  
  179. Static function names       255 characters 
  180.  
  181. External data objects       255 characters 
  182.  
  183. External function names     255 characters 
  184.  
  185. For identifiers, uppercase and lowercase letters are viewed as different 
  186. symbols.  Thus, PROFIT and profit represent different data objects. 
  187.  
  188. Note:  By default, the &link386. linker is not case sensitive. To preserve case 
  189. sensitivity, use the /NOI linker option. If you use icc to invoke the linker, 
  190. this option is specified for you. For complete portability, you should never 
  191. use different case representations to refer to the same object. 
  192.  
  193. Avoid creating identifiers that begin with an underscore (_) for function names 
  194. and variable names. Identifiers beginning with an underscore are reserved. All 
  195. identifiers used in header files for C library functions are also reserved. 
  196.  
  197. Although the names of system calls and library functions are not reserved words 
  198. if you do not include the appropriate header files, avoid using these names as 
  199. identifiers.  Duplication of a predefined name can lead to confusion for the 
  200. maintainers of your code and to the possibility of errors occurring at link 
  201. time or run time. If you include a library in a program, be aware of the 
  202. function names in that library to avoid name collisions. 
  203.  
  204. You should always include the appropriate header files when using standard 
  205. library functions. 
  206.  
  207.  
  208. ΓòÉΓòÉΓòÉ 1.6. C Language Keywords ΓòÉΓòÉΓòÉ
  209.  
  210. The C language reserves some words, known as keywords, for special usage. You 
  211. cannot use these words as identifiers. Although you can use them for macro 
  212. names, it is not recommended that you do so. Only the exact spellings of the 
  213. words as specified below are reserved.  For example, auto is reserved but AUTO 
  214. is not. The following table lists the C language reserved words: 
  215.  
  216. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  217. Γöé          The C Language Keywords                               Γöé
  218. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  219. Γöé _Packed       Γöé double         Γöé int           Γöé struct        Γöé
  220. Γöé auto          Γöé else           Γöé long          Γöé switch        Γöé
  221. Γöé break         Γöé enum           Γöé register      Γöé typedef       Γöé
  222. Γöé case          Γöé extern         Γöé return        Γöé union         Γöé
  223. Γöé char          Γöé float          Γöé short         Γöé unsigned      Γöé
  224. Γöé const         Γöé for            Γöé signed        Γöé void          Γöé
  225. Γöé continue      Γöé goto           Γöé sizeof        Γöé volatile      Γöé
  226. Γöé default       Γöé if             Γöé static        Γöé while         Γöé
  227. Γöé do            Γöé                Γöé               Γöé               Γöé
  228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  229. Γöé NOTE:  "_Packed" is an extension to the ANSI standard.         Γöé
  230. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  231.  
  232. The C/C++ for OS/2 compiler also reserves the following C keywords, all of 
  233. which are extensions to the SAA standard: 
  234.  
  235. Γö¼:font facename=default
  236. size=0x0.:font facename=Courier size=15x12.Γö╝:font facename=default
  237. size=0x0. for OS/2 C Keywords
  238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  239. Γöé          Additional C/C                                        Γöé
  240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  241. Γöé _Cdecl        Γöé _Far32         Γöé _Inline       Γöé _Pascal       Γöé
  242. Γöé _Export       Γöé _Fastcall      Γöé _Optlink      Γöé _Seg16        Γöé
  243. Γöé _Far16        Γöé                Γöé               Γöé _System       Γöé
  244. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  245.  
  246.  
  247. ΓòÉΓòÉΓòÉ 1.7. Constants ΓòÉΓòÉΓòÉ
  248.  
  249. The C language contains the following types of constants: 
  250.  
  251. o Integer Constants 
  252. o Floating-Point Constants 
  253. o Character Constants 
  254. o Strings 
  255. o Enumeration Constants 
  256.  
  257. A constant is data with a value that does not change during the execution of a 
  258. program. The value of any constant must be in the range of representable values 
  259. for its type. 
  260.  
  261. For more information on data types, see Types. 
  262.  
  263.  
  264. ΓòÉΓòÉΓòÉ 1.7.1. Integer Constants ΓòÉΓòÉΓòÉ
  265.  
  266. Integer constants can be either decimal, octal or hexadecimal. The following 
  267. diagram lists these forms: 
  268.  
  269. ΓöÇΓöÇΓö¼ΓöÇΓöÇdecimal_constantΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  270.     Γöé                        Γöé  Γöé              Γöé
  271.     Γö£ΓöÇΓöÇoctal_constantΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γö£ΓöÇΓöÇlΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  272.     Γöé                        Γöé  Γöé     Γöé  Γöé     Γöé
  273.     ΓööΓöÇΓöÇhexadecimal_constantΓöÇΓöÇΓöÿ  Γö£ΓöÇΓöÇLΓöÇΓöÇΓöÿ  Γö£ΓöÇΓöÇuΓöÇΓöÇΓöñ
  274.                                 Γöé        Γöé     Γöé
  275.                                 Γöé        ΓööΓöÇΓöÇUΓöÇΓöÇΓöñ
  276.                                 Γöé              Γöé
  277.                                 Γö£ΓöÇΓöÇuΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  278.                                 Γöé     Γöé  Γöé     Γöé
  279.                                 ΓööΓöÇΓöÇUΓöÇΓöÇΓöÿ  Γö£ΓöÇΓöÇlΓöÇΓöÇΓöñ
  280.                                          Γöé     Γöé
  281.                                          ΓööΓöÇΓöÇLΓöÇΓöÇΓöÿ
  282.  
  283. Data Type 
  284. The data type of an integer constant is determined by the constant's value. The 
  285. following table gives a description of the integer constant and a list of 
  286. possible data types for that constant. The smallest data type in the list that 
  287. can contain the constant value will be associated with the constant. 
  288.  
  289. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  290. Γöé          Data Types for Integer Constants                      Γöé
  291. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  292. Γöé CONSTANT               Γöé DATA TYPE                             Γöé
  293. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  294. Γöé unsuffixed decimal     Γöé "int, long int, unsigned long int"    Γöé
  295. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  296. Γöé unsuffixed octal       Γöé "int, unsigned int, long int,         Γöé
  297. Γöé                        Γöé unsigned long int"                    Γöé
  298. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  299. Γöé unsuffixed hexadecimal Γöé "int, unsigned int, long int,         Γöé
  300. Γöé                        Γöé unsigned long int"                    Γöé
  301. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  302. Γöé suffixed by "u" or "U" Γöé "unsigned int, unsigned long int"     Γöé
  303. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  304. Γöé suffixed by "l" or "L" Γöé "long int, unsigned long int"         Γöé
  305. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  306. Γöé suffixed by both "u"   Γöé "unsigned long int"                   Γöé
  307. Γöé or "U",                Γöé                                       Γöé
  308. Γöé and "l" or "L"         Γöé                                       Γöé
  309. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  310.  
  311. A plus (+) or minus (-) symbol can precede the constant.  However, the symbol 
  312. is treated as a unary operator rather than as part of the constant value. 
  313.  
  314. Related Information 
  315.  
  316. o Decimal Constants 
  317. o Octal Constants 
  318. o Hexadecimal Constants 
  319. o Integers 
  320.  
  321.  
  322. ΓòÉΓòÉΓòÉ 1.7.2. Decimal Constants ΓòÉΓòÉΓòÉ
  323.  
  324. A decimal constant contains any of the digits 0 through 9.  The first digit 
  325. cannot be 0 (zero). Integer constants beginning with the digit 0 are 
  326. interpreted as an octal constant, rather than as a decimal constant. 
  327.  
  328. Examples of Decimal Constant Values 
  329.  
  330. Related Information 
  331.  
  332. o Integer Constants 
  333. o Octal Constants 
  334. o Hexadecimal Constants 
  335. o Integers 
  336.  
  337.  
  338. ΓòÉΓòÉΓòÉ 1.7.3. Hexadecimal Constants ΓòÉΓòÉΓòÉ
  339.  
  340. A hexadecimal constant begins with the 0 (zero) digit followed by either an x 
  341. or X.  After the 0x, you can place any combination of the digits 0 (zero) 
  342. through 9 and the letters a through f or A through F.  When used to represent a 
  343. hexadecimal constant, the lowercase letters are equivalent to their 
  344. corresponding uppercase letters. 
  345.  
  346. Examples of Hexadecimal Constant Values 
  347.  
  348. Related Information 
  349.  
  350. o Integer Constants 
  351. o Decimal Constants 
  352. o Octal Constants 
  353. o Integers 
  354.  
  355.  
  356. ΓòÉΓòÉΓòÉ 1.7.4. Octal Constants ΓòÉΓòÉΓòÉ
  357.  
  358. An octal constant begins with the digit 0 (zero) and contains any of the digits 
  359. 0 (zero) through 7. 
  360.  
  361. Examples of Octal Constant Values 
  362.  
  363. Related Information 
  364.  
  365. o Integer Constants 
  366. o Decimal Constants 
  367. o Hexadecimal Constants 
  368. o Integers 
  369.  
  370.  
  371. ΓòÉΓòÉΓòÉ 1.7.5. Floating-Point Constants ΓòÉΓòÉΓòÉ
  372.  
  373. A floating-point constant consists of an integral part, a decimal point, a 
  374. fractional part, an exponent part, and an optional suffix.  Both the integral 
  375. and fractional parts are made up of decimal digits.  You can omit either the 
  376. integral part or the fractional part, but not both.  You can omit either the 
  377. decimal point or the exponent part (but not both). 
  378.  
  379. The exponent part consists of e or E, followed optionally by a sign and a 
  380. decimal number. 
  381.  
  382. The floating-point constant 8.45e+3 evaluates as follows: 
  383.  
  384. 8.45 * (10 ** 3) = 8450.0
  385.  
  386. The representation of a floating-point number on a system is unspecified. If a 
  387. floating-point constant is too large or too small, the result is undefined. 
  388.  
  389. Data Type 
  390. The suffix f or F indicates a type of float and the suffix l or L indicates a 
  391. type of long double.  If a suffix is not specified, the floating-point constant 
  392. has a type double. 
  393.  
  394. A plus (+) or minus (-) symbol can precede a floating-point constant.  However, 
  395. the symbol is not part of the constant.  It is interpreted as a unary operator. 
  396.  
  397. Examples of Floating-Point Constant Values 
  398.  
  399. Related Information 
  400.  
  401. o Floating-Point Variables 
  402.  
  403.  
  404. ΓòÉΓòÉΓòÉ 1.7.6. Character Constants ΓòÉΓòÉΓòÉ
  405.  
  406. A character constant contains a sequence of characters or escape sequences 
  407. enclosed in single quotation mark symbols. 
  408.  
  409. At least one character or escape sequence must appear in the character 
  410. constant. The character constant can contain any character from the C character 
  411. set, excluding the single quotation mark, backslash and new-line symbols. The 
  412. prefix L indicates a wide character constant.  A character constant must appear 
  413. on a single source line. 
  414.  
  415. The value of a character constant containing a single character is the numeric 
  416. representation of the character in the character set used at run-time.  The 
  417. value of a wide character constant containing a single multibyte character is 
  418. the code for that character, as defined by the mbtowc function.  If the 
  419. character constant contains more than one character, the last four bytes will 
  420. represent the character constant. 
  421.  
  422. Data Type 
  423. A character constant has type int.  A wide character constant is represented by 
  424. a double-byte character of type wchar_t, as defined in the <stddef.h> include 
  425. file.  Multibyte characters represent character sets that go beyond the single 
  426. byte character set.  Each multibyte character can contain up to 4 bytes. 
  427.  
  428. Restrictions 
  429. To represent the single quotation symbol, backslash, and new-line characters, 
  430. you must use the respective escape sequence. For more information on escape 
  431. sequences, see Escape Sequences. 
  432.  
  433. Examples of Character Constant Values 
  434.  
  435. Related Information 
  436.  
  437. o Strings 
  438. o Escape Sequences 
  439. o Integers 
  440.  
  441.  
  442. ΓòÉΓòÉΓòÉ 1.7.7. Strings ΓòÉΓòÉΓòÉ
  443.  
  444. A string constant or literal contains a sequence of characters or escape 
  445. sequences enclosed in double quotation mark symbols. 
  446.  
  447. A null (\0) character is appended to each string.  For a wide character string 
  448. (a string prefixed by the letter L) the value 0 of type wchar_t is appended. By 
  449. convention, programs recognize the end of a string by finding the null 
  450. character. 
  451.  
  452. If you want to continue a string on the next line, use the line continuation 
  453. sequence (\ symbol immediately followed by a new-line character). 
  454.  
  455. Another way to continue a string is to have two or more consecutive strings. 
  456. Adjacent string literals are concatenated to produce a single string.  (The 
  457. null character of the first string will no longer exist after the 
  458. concatenation.) You cannot concatenate a wide string constant with a character 
  459. string constant. 
  460.  
  461. Multiple spaces contained within a string constant are retained. 
  462.  
  463. Data Type 
  464. A character string constant has type array of char and static storage duration. 
  465. A wide character constant has type array of wchar_t and static storage 
  466. duration. 
  467.  
  468. Restrictions 
  469. You can use the escape sequence \n to represent a new-line character as part of 
  470. the string. 
  471.  
  472. You can use the escape sequence \\ to represent a backslash character as part 
  473. of the string. 
  474.  
  475. You can represent the single quotation mark symbol by itself ', but you use the 
  476. escape sequence \" to represent the double quotation mark symbol. 
  477.  
  478. You should be careful when modifying string literals because the resulting 
  479. behavior depends on whether your strings are stored in writable static. See 
  480. #pragma for more information on #pragma strings which can be used to specify 
  481. whether your string literals are readonly or writable. String literals are 
  482. writable by default. 
  483.  
  484. Examples of String Constant Values 
  485.  
  486. Related Information 
  487.  
  488. o Character Constants 
  489. o Escape Sequences 
  490. o Characters 
  491. o Arrays 
  492. o #pragma 
  493. o #pragma strings 
  494.  
  495.  
  496. ΓòÉΓòÉΓòÉ 1.7.8. Enumeration Constants ΓòÉΓòÉΓòÉ
  497.  
  498. :isyn root=enum.enum enumeration 
  499.  
  500. When you define an enumeration data type, you specify a set of identifiers that 
  501. the data type represents.  Each identifier in this set is an enumeration 
  502. constant. 
  503.  
  504. Each enumeration constant has an integer value.  You can assign a value by 
  505. placing an equal sign (=) and a constant expression after the enumeration 
  506. constant. 
  507.  
  508. If you do not assign values, the leftmost constant receives the value zero (0). 
  509. Reading from left to right, each constant value increases by one. 
  510.  
  511. Data Type 
  512. An enumeration constant has type int. 
  513.  
  514. Examples of Enumeration Constant Values 
  515.  
  516. Related Information 
  517.  
  518. o Enumerations 
  519. o Integers 
  520.  
  521.  
  522. ΓòÉΓòÉΓòÉ 2. Declarations and Definitions ΓòÉΓòÉΓòÉ
  523.  
  524. A declaration establishes the names and characteristics of data objects and 
  525. functions used in a program.  A definition is a declaration that allocates 
  526. storage for data objects or specifies the body for a function. 
  527.  
  528. The following table shows examples of declarations and definitions. 
  529.  
  530. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  531. Γöé          Examples of Declarations and Definitions              Γöé
  532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  533. Γöé DECLARATIONS                   Γöé DECLARATIONS AND DEFINITIONS  Γöé
  534. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  535. Γöé "extern double pi;"            Γöé "double pi = 3.14159265;"     Γöé
  536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  537. Γöé "float square(float x);"       Γöé "float square(float x) {      Γöé
  538. Γöé                                Γöé return x*x; }"                Γöé
  539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  540. Γöé "struct payroll;"              Γöé   struct payroll {            Γöé
  541. Γöé                                Γöé                     char *nameΓöé
  542. Γöé                                Γöé                     float salaΓöéy;
  543. Γöé                                Γöé                  } employee;  Γöé
  544. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  545.  
  546. The declaration for a data object can include the following components: 
  547.  
  548. o Storage class, described in Storage Class Specifiers 
  549. o Type, described in Types 
  550. o Qualifier and Declarator, described in Declarators 
  551. o Initializer, described in Initializers. 
  552.  
  553. Function declarations are described in Functions. 
  554.  
  555. Declarations determine the following properties of data objects and their 
  556. identifiers: 
  557.  
  558. o Scope, which describes the visibility of an identifier in a block or source 
  559.   file. 
  560. o Storage duration, which describes when the system allocates and frees storage 
  561.   for a data object. 
  562. o Linkage, which describes the association between two identical identifiers. 
  563. o Type, which describes the kind of data the object is to represent. 
  564.  
  565. Syntax of a Data Declaration 
  566.  
  567. Related Informaion 
  568.  
  569. o Block Scope Data Declarations 
  570. o File Scope Data Declarations 
  571.  
  572.  
  573. ΓòÉΓòÉΓòÉ 2.1. Block Scope Data Declarations ΓòÉΓòÉΓòÉ
  574.  
  575. A block scope data declaration can only be placed at the beginning of a block 
  576. and: 
  577.  
  578. o Describes a variable 
  579. o Makes that variable accessible to the current block. 
  580.  
  581. All block scope declarations which do not have the extern storage class 
  582. specifier are definitions and allocate storage for that object. 
  583.  
  584. You can define a data object with block scope with any of the storage class 
  585. specifiers described in Storage Class Specifiers. If you do not specify a 
  586. storage class specifier in a block scope data declaration, the default storage 
  587. class specifier auto is used.  If you specify a storage class specifier, you 
  588. can omit the type specifier.  If you omit the type specifier, all variables 
  589. declared in that declaration will have the type int. 
  590.  
  591. Initialization 
  592. You cannot initialize a variable that is declared in a block scope data 
  593. declaration and has the extern storage class specifier. 
  594.  
  595. The types of variables you can initialize and the values that uninitialized 
  596. variables receive vary for each storage class specifier. 
  597.  
  598. Storage 
  599. Declarations with the auto or register storage class specifier result in 
  600. automatic storage duration. Declarations with the extern or static storage 
  601. class specifier result in static storage duration. 
  602.  
  603. Related Information 
  604.  
  605. o auto Storage Class Specifier 
  606. o static Storage Class Specifier 
  607. o Declarations and Definitions 
  608. o Declarators 
  609. o Initializers 
  610. o Types 
  611.  
  612.  
  613. ΓòÉΓòÉΓòÉ 2.2. File Scope Data Declarations ΓòÉΓòÉΓòÉ
  614.  
  615. A file scope data declaration appears outside any block and: 
  616.  
  617. o Describes a variable 
  618. o Makes that variable accessible to all functions that are in the same file and 
  619.   whose definitions appear after the declaration. 
  620.  
  621. A file scope data definition is a data declaration at file scope which also 
  622. causes the system to allocate storage for that variable.  All objects whose 
  623. identifiers are declared at file scope have static storage duration. 
  624.  
  625. You can use a file scope data declaration to declare variables that you want 
  626. several functions to access. 
  627.  
  628. The only storage class specifiers you can place in a file scope data 
  629. declaration are static and extern. If you specify static, all variables defined 
  630. in that file scope data declaration have internal linkage. If you do not 
  631. specify static, all variables defined in that file scope data declaration have 
  632. external linkage. If you specify the storage class static or extern, you can 
  633. omit the type specifier.  If you omit the type specifier, all variables defined 
  634. in that declaration receive the type int. 
  635.  
  636. Initialization 
  637. You can initialize any object with file scope.  If you do not initialize a file 
  638. scope variable, its initial value is zero of the appropriate type.  If you 
  639. initialize a file scope variable, the initializer must be described by a 
  640. constant expression or must reduce to the address of a previously declared 
  641. variable at file scope, possibly modified by a constant expression. 
  642. Initialization of all variables at file scope takes place before the main 
  643. function begins execution. 
  644.  
  645. Storage 
  646. All objects with file scope data declarations have static storage duration. The 
  647. system allocates memory for all file scope variables when the program begins 
  648. execution and frees it when the program is finished executing. 
  649.  
  650. Related Information 
  651.  
  652. o extern Storage Class Specifier 
  653. o static Storage Class Specifier 
  654. o Declarations and Definitions 
  655. o Declarators 
  656. o Initializers 
  657. o Types. 
  658.  
  659.  
  660. ΓòÉΓòÉΓòÉ 2.3. Storage Class Specifiers ΓòÉΓòÉΓòÉ
  661.  
  662. The storage class specifier used within the declaration determines the 
  663. following: 
  664.  
  665. o Whether the object has internal, external or no linkage. 
  666.  
  667. o Whether the object has static (storage for the object is maintained 
  668.   throughout program execution) or automatic (storage for the object is 
  669.   maintained only during the execution of the block in which the identifier of 
  670.   the object is defined) storage duration. 
  671.  
  672. o Whether the object is to be stored in memory or in a register, if available. 
  673.  
  674. o Whether the object receives the default initial value 0 or an indeterminate 
  675.   default initial value. 
  676.  
  677. For a function, the storage class specifier determines the function's linkage. 
  678.  
  679. The C/C++ for OS/2 compiler implements an additional storage class specifier 
  680. for functions, _Inline. The _Inline specifier determines whether the function 
  681. code will be inlined or called.  Note that _Inline is ignored if the /Oi- 
  682. compiler option is specified. 
  683.  
  684. The following sections describe the storage class specifiers: 
  685.  
  686. o auto Storage Class Specifier 
  687. o register Storage Class Specifier 
  688. o extern Storage Class Specifier 
  689. o static Storage Class Specifier 
  690. o _Inline Keyword 
  691.  
  692.  
  693. ΓòÉΓòÉΓòÉ 2.3.1. auto Storage Class Specifier ΓòÉΓòÉΓòÉ
  694.  
  695. The auto storage class specifier enables you to define a variable with 
  696. automatic storage;  its use and storage is restricted to the current block. 
  697. The storage class keyword auto is optional in a data declaration and forbidden 
  698. in a parameter declaration.  A variable having the auto storage class specifier 
  699. must be declared within a block. It cannot be used for file scope declarations. 
  700.  
  701. Initialization 
  702. You can initialize any auto variable except parameters. If you do not 
  703. initialize an automatic object, its value is undefined.  If you provide an 
  704. initial value, the expression representing the initial value can be any valid C 
  705. expression. For aggregates or unions, the initial value must be a valid 
  706. constant expression. The object is then set to that initial value each time the 
  707. program block that contains the object's definition is entered. 
  708.  
  709. Note:  If you use the goto statement to jump into the middle of a block, 
  710. automatic variables within that block are not initialized. 
  711.  
  712. Storage 
  713. Objects with the auto storage class specifier have automatic storage duration. 
  714. Each time a block is entered, storage for auto objects defined in that block is 
  715. made available.  When the block is exited, the objects are no longer available 
  716. for use. 
  717.  
  718. If an auto object is defined within a function that is recursively invoked, 
  719. memory is allocated for the object at each invocation of the block. 
  720.  
  721. Usage Notes 
  722. Declaring variables with the auto storage class specifier can decrease the 
  723. amount of memory required for program execution, because auto variables require 
  724. storage only while they actually are needed.  Generally, it is not a good idea 
  725. to use automatic storage for large objects because of the time needed by the 
  726. operating system to allocate or deallocate large amounts of storage. 
  727.  
  728. Examples of auto Storage Class 
  729.  
  730. Related Information 
  731.  
  732. o Storage Class Specifiers 
  733. o register Storage Class Specifier 
  734. o Block Scope Data Declarations 
  735. o Address  & 
  736.  
  737.  
  738. ΓòÉΓòÉΓòÉ 2.3.2. extern Storage Class Specifier ΓòÉΓòÉΓòÉ
  739.  
  740. The extern storage class specifier enables you to declare objects and functions 
  741. that several source files can use.  All object declarations that occur outside 
  742. a function and that do not contain a storage class specifier declare 
  743. identifiers with external linkage. All function definitions that do not specify 
  744. a storage class define functions with external linkage. 
  745.  
  746. You can distinguish an extern declaration from an extern definition by the 
  747. presence of the keyword extern and the absence of an initial value.  If the 
  748. keyword extern is absent or there is an initial value, it is both a definition 
  749. and a declaration.  Otherwise, it is just a declaration.  An extern definition 
  750. can appear only outside a function definition.  Exactly one declaration of the 
  751. variable without the keyword extern can be used, and that declaration is the 
  752. definition of the storage for the variable. 
  753.  
  754. If there is a declaration for an identifier found at file scope, any 
  755. declaration of the same identifier with the extern storage class specifier 
  756. found within a block refers to that same object. If there is no declaration for 
  757. the identifier at file scope, the identifier will have external linkage. 
  758.  
  759. Declaration 
  760. An extern declaration can appear outside a function or at the beginning of a 
  761. block. If the declaration describes a function or appears outside a function 
  762. and describes an object with external linkage, the keyword extern is optional. 
  763.  
  764. Initialization 
  765. You can initialize any object with the extern storage class specifier at file 
  766. scope. You can initialize an extern object with an initializer which must 
  767. either: 
  768.  
  769. o Appear as part of the definition and the initial value must be described by a 
  770.   constant expression. 
  771. o Reduce to the address of a previously declared object with static storage 
  772.   duration. This object may be modified by a constant expression. 
  773.  
  774. If you do not initialize an extern variable, its initial value is zero of the 
  775. appropriate type. Initialization of an extern object is completed by the start 
  776. of program execution. 
  777.  
  778. Storage 
  779. extern objects have static storage duration. Memory is allocated for extern 
  780. objects before the main function begins execution.  When the program finishes 
  781. executing, the storage is freed. 
  782.  
  783. Examples of extern Storage Class 
  784.  
  785. Related Information 
  786.  
  787. o Storage Class Specifiers 
  788. o File Scope Data Declarations 
  789. o Function Definition 
  790. o Function Declarator 
  791. o Constant Expression 
  792.  
  793.  
  794. ΓòÉΓòÉΓòÉ 2.3.3. register Storage Class Specifier ΓòÉΓòÉΓòÉ
  795.  
  796. The register storage class specifier enables you to indicate within a file 
  797. scope data definition or a parameter declaration that the object being 
  798. described will be heavily used (such as a loop control variable). 
  799.  
  800. Note:  Because the C/C++ for OS/2 compiler optimizes register use, it does not 
  801. respect the register keyword. The storage class keyword register is required in 
  802. a data definition and a parameter declaration that describes an object having 
  803. the register storage class.  An object having the register storage class 
  804. specifier must be defined within a block or declared as a parameter to a 
  805. function. 
  806.  
  807. Initialization 
  808. You can initialize any register object except parameters. If you do not 
  809. initialize an automatic object, its value is undefined.  If you provide an 
  810. initial value, the expression representing the initial value can be any valid C 
  811. expression. For aggregates or unions, the initial value must be a valid 
  812. constant expression. The variable is then set to that initial value each time 
  813. the program block that contains the object's definition is entered. 
  814.  
  815. Storage 
  816. Objects with the register storage class specifier have automatic storage 
  817. duration. Each time a block is entered, storage for register objects defined in 
  818. that block are made available.  When the block is exited, the objects are no 
  819. longer available for use. 
  820.  
  821. If a register object is defined within a function that is recursively invoked, 
  822. the system allocates memory for the variable at each invocation of the block. 
  823.  
  824. The register storage class specifier indicates that the object is heavily used 
  825. and indicates to the compiler that the value of the object should reside in a 
  826. machine register.  Not all register variables are actually placed in registers. 
  827.  
  828. If the compiler does not allocate a machine register for a register object, the 
  829. object is treated as having the storage class specifier auto.  Because of the 
  830. limited size and number of registers available on most systems, few variables 
  831. can be stored in registers at the same time.  Even if a register variable is 
  832. treated as a variable with storage class auto, the address of the variable 
  833. cannot be taken. 
  834.  
  835. Restrictions 
  836. You cannot apply the & (address) operator to register variables. You cannot use 
  837. the register storage class specifier on file scope data declarations. 
  838.  
  839. Usage Notes 
  840. Using register definitions for variables that are heavily used may make your 
  841. object files smaller and run faster.  In object code, a reference to a register 
  842. can require less code and time than a reference to memory. 
  843.  
  844. Related Information 
  845.  
  846. o Storage Class Specifiers 
  847. o auto Storage Class Specifier 
  848. o Block Scope Data Declarations 
  849. o Address  & 
  850.  
  851.  
  852. ΓòÉΓòÉΓòÉ 2.3.4. static Storage Class Specifier ΓòÉΓòÉΓòÉ
  853.  
  854. The static storage class specifier enables you to define objects with static 
  855. storage duration and internal linkage, or to define functions with internal 
  856. linkage. 
  857.  
  858. An object having the static storage class specifier can be defined within a 
  859. block or at file scope. If the definition occurs within a block, the object has 
  860. no linkage. If the definition occurs at file scope, the object has internal 
  861. linkage. 
  862.  
  863. Initialization 
  864. You can initialize any static object.  If you do not provide an initial value, 
  865. the object receives the value of zeros of the appropriate type.  If you 
  866. initialize a static object, the initializer must be described by a constant 
  867. expression or must reduce to the address of a previously declared extern or 
  868. static object, possibly modified by a constant expression. 
  869.  
  870. Storage 
  871. Objects with the static storage class specifier have static storage duration. 
  872. The storage for a static variable is made available when the program begins 
  873. execution.  When the program finishes executing, the memory is freed. 
  874.  
  875. Restrictions 
  876. You cannot declare a static function at block scope. 
  877.  
  878. Usage Notes 
  879. You can use static variables when you need an object that retains its value 
  880. from one execution of a block to the next execution of that block.  Using the 
  881. static storage class specifier keeps the system from reinitializing the object 
  882. each time the block in which the object is defined is executed. 
  883.  
  884. Examples of static Storage Class. 
  885.  
  886. Related Information 
  887.  
  888. o Storage Class Specifiers 
  889. o Block Scope Data Declarations 
  890. o File Scope Data Declarations 
  891. o Function Definition 
  892. o Function Declarator 
  893.  
  894.  
  895. ΓòÉΓòÉΓòÉ 2.3.5. _Inline Keyword ΓòÉΓòÉΓòÉ
  896.  
  897. Use the _Inline keyword to specify which user functions you want the C/C++ for 
  898. OS/2 compiler to inline.  For example: 
  899.  
  900.    _Inline int catherine(int a);
  901. causes catherine to be inlined, meaning that code is generated for the 
  902. function, rather than a function call. The _Inline keyword also implicitly 
  903. declares the function as static. 
  904.  
  905. By default, function inlining is turned off, and functions qualified with 
  906. _Inline are treated simply as static functions. To turn on function inlining, 
  907. specify the inf./Oi+ option. If you turn optimization on (/O+), /Oi+ becomes 
  908. the default. 
  909.  
  910. Recursive functions (functions that call themselves) are inlined for the first 
  911. occurrence only.  The call to the function from within itself will not be 
  912. inlined. 
  913.  
  914. You can also use the /Oivalue option to automatically inline all functions 
  915. smaller than value abstract code units as well as those qualified with _Inline. 
  916. For best performance results, choose the functions you want to inline using 
  917. _Inline rather than using automatic inlining. 
  918.  
  919. Note:  If you plan to debug your code (specifying /Ti+), you should turn 
  920. inlining off.  You should also be aware that profiling hooks are not generated 
  921. for inlined functions. 
  922.  
  923. For more information on function inlining, see the IBM C/C++ for OS/2 
  924. Programming Guide. 
  925.  
  926.  
  927. ΓòÉΓòÉΓòÉ 2.4. Declarators ΓòÉΓòÉΓòÉ
  928.  
  929. A declarator designates a data object or function.  Declarators appear in all 
  930. data definitions and declarations and in some type definitions. 
  931.  
  932. Syntax of a Declarator 
  933.  
  934. A qualifier is one of:  const, volatile or _Packed. The C/C++ for OS/2 compiler 
  935. also implements the &Seg16. _Export, and _Inline qualifiers. You cannot declare 
  936. or define a volatile function. 
  937.  
  938. A declarator for a volatile data object can contain a subdeclarator. 
  939.  
  940. Syntax of a Subdeclarator 
  941.  
  942. A subscript declarator describes the number of dimensions in an array and the 
  943. number of elements in each dimension. 
  944.  
  945. Syntax of a Subscript Declarator 
  946.  
  947. A simple declarator consists of an identifier, which names a data object. 
  948.  
  949. You can define or declare an aggregate by using a declarator that contains an 
  950. identifier, which names the data object, and some combination of symbols and 
  951. identifiers, which helps to describe the type of data that the object 
  952. represents. An aggregate is a structure, union or array. 
  953.  
  954. Examples of Declarators 
  955.  
  956. Related Information 
  957.  
  958. o volatile and const Qualifiers 
  959. o _Packed Qualifier 
  960. o _Seg16 Type Qualifier 
  961. o _Export Keyword 
  962. o Declarations and Definitions 
  963. o Arrays 
  964. o Enumerations 
  965. o Pointers 
  966. o Structures 
  967. o Unions 
  968.  
  969.  
  970. ΓòÉΓòÉΓòÉ 2.4.1. volatile and const Qualifiers ΓòÉΓòÉΓòÉ
  971.  
  972. The volatile qualifier maintains the intent of the original expression with 
  973. respect to stores and fetches of volatile objects.  The volatile qualifier is 
  974. useful for data objects having values that may be changed in ways unknown to 
  975. your program (such as the system clock). Objects referenced by multiple threads 
  976. or by signal handlers should also be qualified as volatile. Portions of an 
  977. expression which reference volatile objects are not to be optimized. 
  978.  
  979. The const qualifier explicitly declares a data object as a data item that 
  980. cannot be changed.  Its value is set at initialization.  You cannot use const 
  981. data objects in expressions requiring a modifiable lvalue.  For example, a 
  982. const data object cannot appear on the left-hand side of an assignment 
  983. statement. 
  984.  
  985. For a volatile or const pointer, you must place the keyword between the * and 
  986. the identifier.  For example: 
  987.  
  988. int * volatile x;        /* x is a volatile pointer to an int */
  989. int * const y = &z;      /* y is a const pointer to the int variable z */
  990.  
  991. For a pointer to a volatile or const data object, you must place the keyword 
  992. before the type specifier. For example: 
  993.  
  994. volatile int *x;         /* x is a pointer to a volatile int  */
  995. const int *y;            /* y is a pointer to a const int  */
  996.  
  997. You can assign a value to the int * const y but not to const int * y. 
  998.  
  999. For other types of volatile and const variables, the position of the keyword 
  1000. within the definition (or declaration) is less important.  For example: 
  1001.  
  1002. volatile struct omega {
  1003.                          int limit;
  1004.                          char code;
  1005.                       } group;
  1006.  
  1007. provides the same storage as: 
  1008.  
  1009. struct omega {
  1010.                 int limit;
  1011.                 char code;
  1012.              } volatile group;
  1013.  
  1014. In both examples, only the structure variable group receives the volatile 
  1015. qualifier. Similarly, if you specified the const keyword instead of volatile, 
  1016. only the structure variable group receives the const qualifier. The const and 
  1017. volatile qualifiers when applied to a structure or union also apply to the 
  1018. members of the structure or union. 
  1019.  
  1020. Although enumeration, structure, and union variables can receive the volatile 
  1021. or const qualifier, enumeration, structure, and union tags do not carry the 
  1022. volatile or const qualifier. For example, the blue structure does not carry the 
  1023. volatile qualifier: 
  1024.  
  1025. volatile struct whale {
  1026.                            int weight;
  1027.                            char name[8];
  1028.                       } killer;
  1029. struct whale blue;
  1030.  
  1031. The keyword volatile or const cannot separate the keywords enum, struct, and 
  1032. union from their tags. 
  1033.  
  1034. You cannot declare or define a volatile or const function but you can define or 
  1035. declare a function that returns a pointer to a volatile or const object. 
  1036.  
  1037. You can place more than one qualifier on a declaration but you cannot specify 
  1038. the same qualifier more than once on a declaration. 
  1039.  
  1040. These type qualifiers are only meaningful on expressions that are lvalues. 
  1041.  
  1042. Related Information 
  1043.  
  1044. o Declarators 
  1045. o Types 
  1046. o Structures 
  1047. o Unions 
  1048. o Enumerations 
  1049. o Pointers 
  1050. o Lvalue 
  1051.  
  1052.  
  1053. ΓòÉΓòÉΓòÉ 2.4.2. _Packed Qualifier ΓòÉΓòÉΓòÉ
  1054.  
  1055. The _Packed qualifier removes padding between members of structures and unions, 
  1056. whenever possible. However, the storage saved using packed structures and 
  1057. unions may come at the expense of run-time performance.  Most machines access 
  1058. data more efficiently if it is aligned on appropriate boundaries.  With packed 
  1059. structures and unions, members are generally not aligned on natural boundaries, 
  1060. and the result is that member-accessing operations (using the . and -> 
  1061. operators) are slower. 
  1062.  
  1063. _Packed can only be used with structs or unions.  If you use _Packed with other 
  1064. types, an error message is generated but the qualifier has no effect on the 
  1065. declarator it qualifies.  Packed and nonpacked structures and unions have 
  1066. different storage layouts.  However, a packed structure or union can be 
  1067. assigned to a nonpacked structure or union of the same type, and nonpacked 
  1068. structure or union can be assigned to a packed structure or union.  In 
  1069. contrast, comparisons between packed and nonpacked structures or unions of the 
  1070. same type are illegal. 
  1071.  
  1072. If you specify the _Packed qualifier on a structure or union which contains a 
  1073. structure or union as a member, the qualifier is not passed on to the contained 
  1074. structure or union. 
  1075.  
  1076. The C/C++ for OS/2 compiler also lets you pack structures using the #pragma 
  1077. pack directive or the /Sp option.  See #pragma for more information on #pragma 
  1078. pack. The /Sp option is described in Source Code Options. 
  1079.  
  1080. Related Information 
  1081.  
  1082. o Arrays 
  1083. o Enumerations 
  1084. o Pointers 
  1085. o Structures 
  1086. o Unions 
  1087.  
  1088.  
  1089. ΓòÉΓòÉΓòÉ 2.4.3. _Seg16 Type Qualifier ΓòÉΓòÉΓòÉ
  1090.  
  1091. Because pointers are interpreted differently in 16-bit programs than in 32-bit 
  1092. programs, they cannot be shared between the two types of program.  Use the 
  1093. _Seg16 type qualifier when calling 16-bit code to ensure correct mapping of 
  1094. pointers between the different types of code. For example: 
  1095.  
  1096.    char * _Seg16 p16;
  1097.  
  1098. declares p16 to be a segmented pointer that can be addressed by a 16-bit 
  1099. program. The pointer can also be used in a 32-bit program, because the compiler 
  1100. converts it to 32-bit form. The _Seg16 qualifier can only be used with 
  1101. pointers. Note that _Seg16 comes after the asterisk in the declaration, as 
  1102. required by ANSI syntax rules. All pointers shared between 32-bit and 16-bit 
  1103. code must be qualified with _Seg16.  This includes pointers passed indirectly 
  1104. to 16-bit code, such as pointers in structures and pointers that are referenced 
  1105. by pointers passed directly to 16-bit code. 
  1106.  
  1107. While it is possible to write a program where all the pointers are qualified 
  1108. with _Seg16, it is not recommended. Every time a segmented pointer is used in a 
  1109. 32-bit program, it must be converted to a 32-bit pointer and then back to 
  1110. segmented pointer to be stored.  This process will cause a noticeable 
  1111. performance degradation in your program. Pointers that are not used by 16-bit 
  1112. code and those that are passed by value to 16-bit code (that is, as a parameter 
  1113. to a function) do not need to be qualified with _Seg16. 
  1114.  
  1115. For more information on using _Seg16 and calling 16-bit programs from 32-bit 
  1116. code, see the IBM C/C++ for OS/2 Programming Guide. 
  1117.  
  1118. Related Information 
  1119.  
  1120. o Pointers 
  1121. o -- Link Reference pseg16 not found --#pragma seg16 
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ 2.4.4. _Export Keyword ΓòÉΓòÉΓòÉ
  1125.  
  1126. Use the _Export keyword with a function name to declare that the function is to 
  1127. be exported, that is, made available to other modules. For example: 
  1128.  
  1129.    int _Export anthony(float);
  1130. causes the function anthony to be exported. 
  1131.  
  1132. You can use _Export at any language level. If you also use linkage keywords, 
  1133. you can place _Export either before or after a linkage keyword. For example, 
  1134. both of the following declarations are valid: 
  1135.  
  1136.    int _Export _Optlink brian(int);
  1137.    int _Optlink _Export brian(int);
  1138.  
  1139. The _Export keyword is an alternative to the inf.pragma. export directive. 
  1140. Note that #pragma export allows you to specify both a name and an ordinal 
  1141. number by which the function can be called.  If you use _Export, other modules 
  1142. must call the function using its original name. 
  1143.  
  1144. If you use _Export to export your function, you may still need to provide an 
  1145. EXPORTS entry for that function in your module definition (.DEF) file.  If your 
  1146. function has certain default characteristics, namely: 
  1147.  
  1148. o Has shared data 
  1149. o Has no I/O privileges 
  1150. o Is not resident 
  1151. it does not require an EXPORTS entry.  If your function has characteristics 
  1152. other than the defaults, the only way you can specify them is with an EXPORTS 
  1153. entry in your .DEF file. 
  1154.  
  1155. Note:  To create an import library for the DLL, you must either create it from 
  1156. the DLL itself or provide a .DEF file with an EXPORTS entry for every function, 
  1157. regardless of whether _Export is used. 
  1158.  
  1159.  
  1160. ΓòÉΓòÉΓòÉ 2.5. Initializers ΓòÉΓòÉΓòÉ
  1161.  
  1162. An initializer is an optional part of a data declaration that specifies an 
  1163. initial value of a data object. 
  1164.  
  1165. Syntax of an Initializer 
  1166.  
  1167. The initializer consists of the = symbol followed by an initial expression or a 
  1168. braced list of initial expressions separated by commas. The number of 
  1169. initializers should not be more than the number of elements to be initialized. 
  1170. The initial expression evaluates to the first value of the data object. 
  1171.  
  1172. To assign a value to a scalar object, use the simple initializer: 
  1173. = expression. 
  1174.  
  1175. For unions and structures, the set of initial expressions must be enclosed in { 
  1176. } (braces) unless the initializer is a string literal.  If the initializer of a 
  1177. character string is a string literal, the { } are optional.  Individual 
  1178. expressions must be separated by commas, and groups of expressions can be 
  1179. enclosed in braces and separated by commas.  The number of initializers must be 
  1180. less than or equal to the number of objects being initialized.  In the 
  1181. following example, only the first eight elements of the array grid are 
  1182. explicitly initialized.  The remaining four elements that are not explicitly 
  1183. initialized are initialized as if you explicitly initialized them to zero. 
  1184.  
  1185. static short grid[3] [4] = {0, 0, 0, 1, 0, 0, 1, 1};
  1186.  
  1187. The initial values of grid are: 
  1188.  
  1189. Element               Value 
  1190. grid[0][0]            0 
  1191. grid[0][1]            0 
  1192. grid[0][2]            0 
  1193. grid[0][3]            1 
  1194. grid[1][0]            0 
  1195. grid[1][1]            0 
  1196. grid[1][2]            1 
  1197. grid[1][3]            1 
  1198. grid[2][0]            0 
  1199. grid[2][1]            0 
  1200. grid[2][2]            0 
  1201. grid[2][3]            0 
  1202.  
  1203. Initialization considerations for each data type are described in the section 
  1204. for that data type. 
  1205.  
  1206. Related Information 
  1207.  
  1208. o Block Scope Data Declarations 
  1209. o File Scope Data Declarations 
  1210. o Arrays 
  1211. o Characters 
  1212. o Enumerations 
  1213. o Floating-Point Variables 
  1214. o Integers 
  1215. o Pointers 
  1216. o Structures 
  1217. o Unions 
  1218.  
  1219.  
  1220. ΓòÉΓòÉΓòÉ 2.6. Types ΓòÉΓòÉΓòÉ
  1221.  
  1222. This section describes the C data types. The types are: 
  1223.  
  1224. o Characters 
  1225. o Floating-Point Variables 
  1226. o Integers 
  1227. o Enumerations 
  1228. o Structures 
  1229. o Unions 
  1230.  
  1231. From these types, you can derive the following: 
  1232.  
  1233. o Arrays 
  1234. o Pointers 
  1235. o Functions 
  1236.  
  1237.  
  1238. ΓòÉΓòÉΓòÉ 2.6.1. Characters ΓòÉΓòÉΓòÉ
  1239.  
  1240. The C language contains three character data types: char, signed char and 
  1241. unsigned char.  These data types provide enough storage to hold any member of 
  1242. the character set used at run time. 
  1243.  
  1244. char is represented as an unsigned char. You can change this default using 
  1245. #pragma chars or the /J compiler option. If you do not care whether a char data 
  1246. object is signed or unsigned, you can declare the object as having the data 
  1247. type char;  otherwise, explicitly declare signed char or unsigned char. When a 
  1248. char (signed or unsigned) is widened to an int, its value is preserved. 
  1249.  
  1250. To declare a data object having a character data type, place a char specifier 
  1251. in the type specifier position of the declaration. 
  1252.  
  1253. The declarator for a simple character declaration is an identifier.  You can 
  1254. initialize a simple character with a character constant or with an expression 
  1255. that evaluates to an integer. 
  1256.  
  1257. You can use the char specifier in variable definitions to define such variables 
  1258. as:  arrays of characters, pointers to characters, and arrays of pointers to 
  1259. characters. 
  1260.  
  1261. Examples of Character Data Types 
  1262.  
  1263. Related Information 
  1264.  
  1265. o Arrays 
  1266. o Pointers 
  1267. o Character Constants 
  1268. o Assignment Expression 
  1269. o Declarators 
  1270. o Initializers 
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 2.6.2. Floating-Point Variables ΓòÉΓòÉΓòÉ
  1274.  
  1275. C defines three types of floating-point variables:  float, double, and long 
  1276. double. 
  1277.  
  1278. The storage size of a float variable is less than or equal to the storage size 
  1279. of a double variable and the storage size of a double variable is less than or 
  1280. equal to the storage size of a long double variable.  Thus, the following 
  1281. expression always evaluates to 1 (true): 
  1282.  
  1283. sizeof(float) <= sizeof(double) && sizeof(double) <= sizeof(long double)
  1284.  
  1285. To declare a data object having a floating-point type, use the float specifier. 
  1286.  
  1287. The declarator for a simple floating-point declaration is an identifier.  You 
  1288. can initialize a simple floating-point variable with a float constant or with a 
  1289. variable or expression that evaluates to an integer or floating-point number. 
  1290. (The storage class of a variable determines how you can initialize the 
  1291. variable.) 
  1292.  
  1293. Examples of Floating-Point Data Types 
  1294.  
  1295. Related Information 
  1296.  
  1297. o Floating-Point Constants 
  1298. o Assignment Expression 
  1299. o Integers 
  1300. o Declarators 
  1301. o Initializers 
  1302.  
  1303.  
  1304. ΓòÉΓòÉΓòÉ 2.6.3. Integers ΓòÉΓòÉΓòÉ
  1305.  
  1306. The C language supports the following six types of integer variables: 
  1307.  
  1308. o short int or short or signed short or signed short int 
  1309.  
  1310. o signed int or int (in some cases, no type specifier is needed;  see Block 
  1311.   Scope Data Declarations and File Scope Data Declarations) 
  1312.  
  1313. o long int or long or signed long or signed long int 
  1314.  
  1315. o unsigned short int or unsigned short 
  1316.  
  1317. o unsigned or unsigned int 
  1318.  
  1319. o unsigned long int or unsigned long. 
  1320.  
  1321. The storage size of a short type is less than or equal to the storage size of 
  1322. an int variable and the storage size of an int variable is less than or equal 
  1323. to the storage size of a long variable.  Thus, the following expression always 
  1324. evaluates to 1 (true): 
  1325.  
  1326. sizeof(short) <= sizeof(int) && sizeof(int) <= sizeof(long)
  1327.  
  1328. Two sizes for integer data types are provided.  Objects having type short are 2 
  1329. bytes of storage long.  Objects having type long are 4 bytes of storage long. 
  1330. An int represents the most efficient data storage size on the system (the 
  1331. word-size of the machine) and receives 4 bytes of storage. 
  1332.  
  1333. The unsigned prefix indicates that the value of the object is a nonnegative 
  1334. integer.  Each unsigned type provides the same size storage as its signed 
  1335. equivalent.  For example, int reserves the same storage as unsigned int. 
  1336. Because a signed type reserves a sign bit, an unsigned type can hold a larger 
  1337. positive integer than the equivalent signed type. 
  1338.  
  1339. To declare a data object having an integer data type, place an int specifier in 
  1340. the type specifier position of the declaration. 
  1341.  
  1342. The declarator for a simple integer definition or declaration is an identifier. 
  1343. You can initialize a simple integer definition with an integer constant or with 
  1344. an expression that evaluates to a value that can be assigned to an integer. 
  1345. (The storage class of a variable determines how you can initialize the 
  1346. variable.) 
  1347.  
  1348. Examples of Integer Data Types 
  1349.  
  1350. Related Information 
  1351.  
  1352. o Integer Constants 
  1353. o Decimal Constants 
  1354. o Octal Constants 
  1355. o Hexadecimal Constants 
  1356. o Declarators 
  1357. o Initializers 
  1358.  
  1359.  
  1360. ΓòÉΓòÉΓòÉ 2.6.4. void Type ΓòÉΓòÉΓòÉ
  1361.  
  1362. void is a data type that always represents an empty set of values.  The keyword 
  1363. for this type is void.  When a function does not return a value, you should use 
  1364. void as the type specifier in the function definition and declaration.  The 
  1365. only object that can be declared with the type specifier void is a pointer. 
  1366.  
  1367. Examples of void Types 
  1368.  
  1369. Related Information 
  1370.  
  1371. o Cast 
  1372.  
  1373.  
  1374. ΓòÉΓòÉΓòÉ 2.6.5. Arrays ΓòÉΓòÉΓòÉ
  1375.  
  1376. An array is an ordered group of data objects.  Each object is called an 
  1377. element.  All elements within an array have the same data type. 
  1378.  
  1379. You can use any type specifier in an array definition or declaration.  Thus, 
  1380. array elements can be of any data type, except function.  (You can, however, 
  1381. declare an array of pointers to functions.) 
  1382.  
  1383. Declarator 
  1384. The declarator contains an identifier followed by a subscript declarator. The 
  1385. identifier can be preceded by an * (asterisk), making the variable an array of 
  1386. pointers. 
  1387.  
  1388. The subscript declarator describes the number of dimensions in the array and 
  1389. the number of elements in each dimension, as shown in Declarators. 
  1390.  
  1391. Each bracketed expression, or subscript, describes a different dimension. Note 
  1392. that the [ and ] characters can be represented by the trigraphs ??( and ??) 
  1393. respectively. The constant expression must have an integral value.  The value 
  1394. of the constant expression determines the number of elements in that dimension. 
  1395.  
  1396. Examples of arrays 
  1397.  
  1398. You can leave the first (and only the first) set of subscript brackets empty 
  1399. in: 
  1400.  
  1401. o Array definitions that contain initializations 
  1402. o extern declarations 
  1403. o Parameter declarations. 
  1404.  
  1405. In array definitions that leave the first set of subscript brackets empty, the 
  1406. compiler uses the initializer to determine the number of elements in the first 
  1407. dimension.  In a one-dimensional array, the number of initialized elements 
  1408. becomes the total number of elements.  In a multidimensional array, the 
  1409. compiler compares the initializer to the subscript declarator to determine the 
  1410. number of elements in the first dimension. 
  1411.  
  1412. Initializer 
  1413. The initializer contains the = symbol followed by a brace-enclosed 
  1414. comma-separated list of constant expressions. You do not need to initialize all 
  1415. elements in an array.  Elements that are not initialized (in extern and static 
  1416. definitions only) receive the value 0 (zero). 
  1417.  
  1418. Examples of Initialized Arrays 
  1419.  
  1420. You can initialize a one-dimensional character array by specifying: 
  1421.  
  1422. o A brace-enclosed comma-separated list of constants each of which can be 
  1423.   contained in a character 
  1424. o A string constant.  (Braces surrounding the constant are optional.) 
  1425.  
  1426. If you specify a string constant, the null character (\0) is placed at the end 
  1427. of the string if there is room or if the array dimensions are not specified. 
  1428.  
  1429. Note that the following definition would result in the null character being 
  1430. lost: 
  1431.  
  1432.    static char name[3]="Jan";
  1433.  
  1434. Example of an Initialized Character Array 
  1435.  
  1436. You can initialize a multidimensional array by: 
  1437.  
  1438. o Listing the values of all elements you want to initialize, in the order that 
  1439.   the compiler assigns the values.  The compiler assigns values by increasing 
  1440.   the subscript of the last dimension fastest.  This form of a multidimensional 
  1441.   array initialization looks like a one-dimensional array initialization.  The 
  1442.   following definition completely initializes the array month_days: 
  1443.  
  1444.        static month_days[2][12] =
  1445.        {
  1446.         31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
  1447.         31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
  1448.        };
  1449.  
  1450. o Using braces to group the values of the elements you want initialized.  You 
  1451.   can place braces around each element, or around any nesting level of 
  1452.   elements.  The following definition contains two elements in the first 
  1453.   dimension.  (You can consider these elements as rows.)  The initialization 
  1454.   contains braces around each of these two elements: 
  1455.  
  1456.        static int month_days[2][12] =
  1457.        {
  1458.         { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
  1459.         { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
  1460.        };
  1461.  
  1462. You can use nested braces to initialize dimensions and elements in a dimension 
  1463. selectively. 
  1464.  
  1465. Example of a Selectively Initialized Array 
  1466.  
  1467. Note:  When using braces, you should place braces around each dimension (fully 
  1468. braced), or only use one set of braces to enclose the entire set of 
  1469. initializers (unbraced).  Placing braces around some elements and not others 
  1470. may lead to confusion and should be avoided. An unsubscripted array name (for 
  1471. example, region instead of region[4]) represents a pointer whose value is the 
  1472. address of the first element of the array.  For more information, see Primary 
  1473. Expression. 
  1474.  
  1475. Examples of Arrays 
  1476.  
  1477. Related Information 
  1478.  
  1479. o Pointers 
  1480. o Array Subscript  [ ] 
  1481. o Strings 
  1482. o Declarators 
  1483. o Initializers 
  1484. o Conversions 
  1485.  
  1486.  
  1487. ΓòÉΓòÉΓòÉ 2.6.6. Enumerations ΓòÉΓòÉΓòÉ
  1488.  
  1489. An enumeration data type represents a set of values that you declare.  You can 
  1490. define an enumeration data type and all variables that have that enumeration 
  1491. type in one statement, or you can separate the declaration of the enumeration 
  1492. data type from all variable definitions.  The identifier associated with the 
  1493. data type (not an object) is a tag. 
  1494.  
  1495. An enumeration type declaration contains the enum keyword followed by an 
  1496. identifier (the enumeration tag) and a brace-enclosed list of enumerators. Each 
  1497. enumerator is separated by a comma. 
  1498.  
  1499. Syntax of an Enumeration Declaration and an Enumerator 
  1500.  
  1501. The keyword enum, followed by the identifier, names the data type (like the tag 
  1502. on a struct data type).  The list of enumerators provides the data type with a 
  1503. set of values.  Each enumerator represents an integer value.  To conserve 
  1504. space, enumerations may be stored in spaces smaller than that of an int. By 
  1505. default, the type of the enum variable is the size of the smallest integral 
  1506. type that can contain all enumerator values.  You can change the default using 
  1507. the /Su option. 
  1508.  
  1509. The identifier in an enumerator is called an enumeration constant.  You can use 
  1510. an enumeration constant anywhere an integer constant is allowed.  The value of 
  1511. an enumeration constant is determined by the following rules: 
  1512.  
  1513.  1. If an = (equal sign) and a constant expression follow the identifier, the 
  1514.     identifier represents the value of the constant expression. 
  1515.  
  1516.  2. If the enumerator is the leftmost value in the list, the identifier 
  1517.     represents the value 0 (zero). 
  1518.  
  1519.  3. Otherwise, the identifier represents the integer value that is one greater 
  1520.     than the value represented by the preceding enumerator. 
  1521.  
  1522. Each enumeration constant must be unique within the block or the file where the 
  1523. enumeration data type is defined. 
  1524.  
  1525. Examples of Defining an Enumeration Type 
  1526.  
  1527. Defining a Variable That Has an Enumeration Type 
  1528. An enumeration variable definition contains a storage class specifier 
  1529. (optional), a type specifier, a declarator, and an initializer (optional).  The 
  1530. type specifier contains the keyword enum followed by the name of the 
  1531. enumeration data type. You must declare the enumeration data type before you 
  1532. can define a variable having that type. 
  1533.  
  1534. Example of Defining an Enumeration Variable 
  1535.  
  1536. The initializer for an enumeration variable contains the = symbol followed by 
  1537. an expression.  The expression must evaluate to an int value. 
  1538.  
  1539. Defining an Enumeration Type and Enumeration Objects in the Same Declaration 
  1540. You can place a type definition and a variable definition in one statement by 
  1541. placing a declarator and an optional initializer after the type definition.  If 
  1542. you want to specify a storage class specifier for the variable, you must place 
  1543. the storage class specifier at the beginning of the declaration.  For example: 
  1544.  
  1545. register enum score { poor=1, average, good } rating = good;
  1546.  
  1547. This example is equivalent to the following two declarations: 
  1548.  
  1549. enum score { poor=1, average, good };
  1550. register enum score rating = good;
  1551.  
  1552. Both examples define the enumeration data type score and the variable rating. 
  1553. rating has the storage class specifier register, the data type enum score, and 
  1554. the initial value 3 (or good). 
  1555.  
  1556. If you combine a data type definition with the definitions of all variables 
  1557. having that data type, you can leave the data type unnamed.  For example: 
  1558.  
  1559. enum { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday,
  1560.       Saturday } weekday;
  1561.  
  1562. This example defines the variable weekday, which can be assigned any of the 
  1563. specified enumeration constants. 
  1564.  
  1565. Examples of Enumeration Data Types 
  1566.  
  1567. Related Information 
  1568.  
  1569. o Enumeration Constants 
  1570. o Constant Expression 
  1571. o Identifiers 
  1572. o Declarators 
  1573. o Initializers 
  1574.  
  1575.  
  1576. ΓòÉΓòÉΓòÉ 2.6.7. Pointers ΓòÉΓòÉΓòÉ
  1577.  
  1578. A pointer type variable holds the address of a data object or a function.  A 
  1579. pointer can refer to an object of any one data type but cannot point to an 
  1580. object having the register storage class specifier or to a bit-field.  Some 
  1581. common uses for pointers are: 
  1582.  
  1583. o To pass the address of a variable to a function.  By referencing a variable 
  1584.   through its address, a function can change the contents of that variable. 
  1585. o To access dynamic data structures such as linked lists, trees, and queues. 
  1586. o To access elements of an array or members of a structure. 
  1587. o To access an array of characters as a string. 
  1588.  
  1589. Declarator 
  1590. The following example declares pcoat as a pointer to an object having type 
  1591. long: 
  1592.  
  1593. extern long *pcoat;
  1594.  
  1595. If the keyword volatile appears before the *, the declarator describes a 
  1596. pointer to a volatile object.  If the keyword volatile comes between the * and 
  1597. the identifier, the declarator describes a volatile pointer. The keyword const 
  1598. operates in the same manner as the volatile keyword. 
  1599.  
  1600. Examples of Pointer Declarations 
  1601.  
  1602. Initializer 
  1603. When you use pointers in an assignment operation, you must ensure that the 
  1604. types of the pointers in the operation are compatible. 
  1605.  
  1606. Examples of Compatible and Incompatible Declarations 
  1607.  
  1608. The initializer is an = (equal sign) followed by the expression which 
  1609. represents the address that the pointer is to contain.  The following example 
  1610. defines the variables time and speed as having type double and amount as having 
  1611. type pointer to a double.  The pointer amount is initialized to point to total: 
  1612.  
  1613. double total, speed, *amount = &total;
  1614.  
  1615. The compiler converts an unsubscripted array name to a pointer to the first 
  1616. element in the array.  You can assign the address of the first element of an 
  1617. array to a pointer by specifying the name of the array.  The following two sets 
  1618. of definitions are equivalent.  Both define the pointer student and initialize 
  1619. student to the address of the first element in class: 
  1620.  
  1621. int class[80];
  1622. int *student = class;
  1623.  
  1624. is equivalent to: 
  1625.  
  1626. int class[80];
  1627. int *student = &class[0];
  1628.  
  1629. You can assign the address of the first character in a string constant to a 
  1630. pointer by specifying the string constant in the initializer. 
  1631.  
  1632. Examples of Pointers Initialized to Strings 
  1633.  
  1634. A pointer can also be initialized to the integer constant 0 (zero).  Such a 
  1635. pointer is a NULL pointer which does not point to any object. 
  1636.  
  1637. Restrictions 
  1638. You cannot use pointers to reference bit-fields or objects having the register 
  1639. storage class specifier. 
  1640.  
  1641. A pointer to a packed structure or union is incompatible with a pointer to a 
  1642. corresponding nonpacked structure or union because packed and nonpacked objects 
  1643. have different memory layouts. As a result, comparisons and assignments between 
  1644. pointers to packed and nonpacked objects are not valid. 
  1645.  
  1646. You can, however, perform these assignments and comparisons with type casts. 
  1647. Consider the following example: 
  1648.  
  1649. int main(void)
  1650. {
  1651.    _Packed struct ss *ps1;
  1652.    struct ss         *ps2;
  1653.       .
  1654.       .
  1655.       .
  1656.    ps1 = (_Packed struct ss *)ps2;
  1657.       .
  1658.       .
  1659.       .
  1660. }
  1661.  
  1662. In the preceding example, the cast operation allows you to compare the two 
  1663. pointers, but you must be aware that ps1 still points to a nonpacked object. 
  1664. For the C/C++ for OS/2 compiler, all pointers that are shared between 32-bit 
  1665. and 16-bit code must be declared with the _Seg16 type qualifier.  This includes 
  1666. pointers that are indirectly passed to 16-bit code, such as pointers in 
  1667. structures and pointers that are referenced by pointers directly passed to 
  1668. 16-bit code. 
  1669.  
  1670. Using Pointers 
  1671. Two operators are commonly used in working with pointers, the & (address) 
  1672. operator and the * (indirection) operator.  You can use the & operator to 
  1673. reference the address of an object. 
  1674.  
  1675. The * (indirection) operator enables you to access the value of the object to 
  1676. which a pointer refers. 
  1677.  
  1678. Pointer Arithmetic 
  1679. You can perform a limited number of arithmetic operations on pointers.  These 
  1680. operations are: 
  1681.  
  1682. o Increment and decrement 
  1683. o Addition and subtraction 
  1684. o Comparison 
  1685. o Assignment 
  1686.  
  1687. Examples of Pointer Data Types 
  1688.  
  1689. Related Information 
  1690.  
  1691. o Address  & 
  1692. o Indirection  * 
  1693. o _Seg16 Type Qualifier 
  1694. o Declarators 
  1695. o volatile and const Qualifiers 
  1696. o Initializers 
  1697.  
  1698.  
  1699. ΓòÉΓòÉΓòÉ 2.6.8. Structures ΓòÉΓòÉΓòÉ
  1700.  
  1701. A structure contains an ordered group of data objects.  Unlike the elements of 
  1702. an array, the data objects within a structure can have varied data types.  Each 
  1703. data object in a structure is a member or field. 
  1704.  
  1705. You can use structures to group logically related objects. For example, if you 
  1706. want to allocate storage for the components of one address, you can define a 
  1707. number of variables for the street name and number, the city, and so on. 
  1708.  
  1709. If you want to allocate storage for more than one address, however, you can 
  1710. group the components of each address by defining a structure data type and 
  1711. defining several variables having the structure data type: 
  1712.  
  1713.     1   struct address {
  1714.     2                    int street_no;
  1715.     3                    char *street_name;
  1716.     4                    char *city;
  1717.     5                    char *prov;
  1718.     6                    char *postal_code;
  1719.     7                  };
  1720.     8   struct address perm_address;
  1721.     9   struct address temp_address;
  1722.    10   struct address *p_perm_address = &perm_address;
  1723.  
  1724. Lines 1 through 7 declare the structure tag address.  Line 8 defines the 
  1725. variable perm_address, and line 9 defines the variable temp_address, both of 
  1726. which are instances of the structure address.  Both perm_address and 
  1727. temp_address contain the members described in lines 2 through 6. Line 10 
  1728. defines a pointer p_perm_address which points to a structure of address. 
  1729. p_perm_address is initialized to point to perm_address. 
  1730.  
  1731. You can reference a member of a structure by specifying the structure variable 
  1732. name with the . (dot operator) or a pointer with the -> (arrow operator), and 
  1733. the member name.  For example, both of the following: 
  1734.  
  1735.  perm_address.prov = "Ontario";
  1736.  p_perm_address -> prov = "Ontario";
  1737.  
  1738. assign a pointer to the string "Ontario" to the pointer prov that is in the 
  1739. structure perm_address. 
  1740.  
  1741. All references to structures must be fully qualified.  Therefore, in the 
  1742. preceding example, you cannot reference the fourth field by prov alone.  You 
  1743. must reference this field by perm_address.prov. 
  1744.  
  1745. You cannot declare a structure with members of incomplete types. 
  1746.  
  1747. Declaring a Structure Data Type 
  1748. A structure type declaration does not allocate storage.  It describes the 
  1749. members that are part of the structure. 
  1750.  
  1751. A structure type declaration contains the struct keyword followed by an 
  1752. optional identifier (the structure tag) and a brace-enclosed list of members. 
  1753.  
  1754. Syntax of a Structure 
  1755.  
  1756. The keyword struct followed by the identifier (tag) names the data type.  If 
  1757. you do not provide a tag, you must place all variable definitions that refer to 
  1758. that data type within the statement that defines the data type. 
  1759.  
  1760. The list of members provides the data type with a description of the values 
  1761. that can be stored in the structure. 
  1762.  
  1763. Syntax of a Structure Member 
  1764.  
  1765. A member that does not represent a bit-field can be of any data type and can 
  1766. have the volatile or const qualifier.  If a : (colon) and a constant expression 
  1767. follow the declarator, the member represents a bit-field. 
  1768.  
  1769. Identifiers used as aggregate or member names can be redefined to represent 
  1770. different objects in the same scope without conflicting.  You cannot use the 
  1771. name of a member more than once in a structure type, but you can use the same 
  1772. member name in another structure type that is defined within the same scope. 
  1773.  
  1774. You cannot declare a structure type that contains itself as a member but you 
  1775. can declare a structure type that contains a pointer to itself as a member. 
  1776.  
  1777. Defining a Variable That Has a Structure Data Type 
  1778. A structure variable definition contains a storage class keyword, the struct 
  1779. keyword, a structure tag, a declarator, and an optional identifier.  The 
  1780. structure tag indicates the data type of the structure variable. 
  1781.  
  1782. You can declare structures having any storage class.  Most compilers, however, 
  1783. treat structures declared with the register storage class specifier as 
  1784. automatic structures. 
  1785.  
  1786. Initializer 
  1787. The initializer contains an = (equal sign) followed by a brace-enclosed 
  1788. comma-separated list of values.  You do not have to initialize all members of a 
  1789. structure. 
  1790.  
  1791. Examples of Initialized Structures 
  1792.  
  1793. Note:  The initial value of uninitialized structure members depends on the 
  1794. storage class associated with the member.  See Storage Class Specifiers for 
  1795. details on the initialization of different storage classes. 
  1796.  
  1797. Additional information is provided on: 
  1798.  
  1799. o Declaring a Structure Type and Structure Variables in the Same Statement 
  1800. o Declaring and Using Bit-Fields in structures 
  1801. o Declaring a Packed Structure. 
  1802.  
  1803. Examples of Structures 
  1804.  
  1805. Related Information 
  1806.  
  1807. o Structure and Union Member Specification  .  -> 
  1808. o _Packed Qualifier 
  1809. o Declarators 
  1810. o Initializers 
  1811.  
  1812.  
  1813. ΓòÉΓòÉΓòÉ 2.6.8.1. Declaring a Structure Type and Structure Variables in the Same Statement ΓòÉΓòÉΓòÉ
  1814.  
  1815. You can place a type definition and a variable declaration in one statement by 
  1816. placing a declarator and an initializer (optional) after the type definition. 
  1817. If you want to specify a storage class specifier for the variable, you must 
  1818. place the storage class specifier at the beginning of the statement.  For 
  1819. example: 
  1820.  
  1821. static struct {
  1822.                  int street_no;
  1823.                  char *street_name;
  1824.                  char *city;
  1825.                  char *prov;
  1826.                  char *postal_code;
  1827.               } perm_address, temp_address;
  1828.  
  1829. The preceding example does not name the structure data type.  Thus, 
  1830. perm_address and temp_address are the only structure variables that will have 
  1831. this data type.  If an identifier is placed after struct, additional variable 
  1832. definitions of this data type can be made later in the program. 
  1833.  
  1834. The structure type (or tag) cannot have the volatile qualifier, but a member or 
  1835. a structure variable can be defined as having the volatile qualifier. 
  1836.  
  1837. Related Information 
  1838.  
  1839. o Structures 
  1840. o Structure and Union Member Specification  .  -> 
  1841. o Declarators 
  1842. o Initializers 
  1843.  
  1844.  
  1845. ΓòÉΓòÉΓòÉ 2.6.8.2. Declaring and Using Bit-Fields ΓòÉΓòÉΓòÉ
  1846.  
  1847. A structure can contain bit-fields which allow you to access individual bits. 
  1848. You can use bit-fields for data that requires just a few bits of storage.  A 
  1849. bit-field declaration contains a type specifier followed by an optional 
  1850. declarator, a colon, a constant expression, and a semicolon.  The constant 
  1851. expression specifies how many bits the field reserves.  A bit-field that is 
  1852. declared as having a length of 0 (zero) causes the next field to be aligned on 
  1853. the next integer boundary. For a _Packed structure, a bit-field of length 0 
  1854. (zero) causes the next field to be aligned on the next byte boundary. 
  1855. Bit-fields with a length of 0 must be unnamed. 
  1856.  
  1857. For portability, you should not use bit fields greater than 32 bits in size. 
  1858.  
  1859. You cannot define an array of bit-fields, or take the address of a bit-field. 
  1860. You can declare a bit-field as type int, signed int, or unsigned int. 
  1861. Bit-fields of the type int are equivalent to those of type unsigned int. 
  1862.  
  1863. If a series of bit-fields does not add up to the size of an int, padding can 
  1864. take place. The amount of padding is determined by the alignment 
  1865. characteristics of the members of the structure.  In some instances, bit-fields 
  1866. can cross word boundaries. 
  1867.  
  1868. Example of a Structure with Bit-Fields 
  1869.  
  1870. All references to structure fields must be fully qualified. 
  1871.  
  1872. When you assign to a bit-field a value that is out of range for that bit-field, 
  1873. the bit pattern is preserved and the appropriate bits are assigned. The 
  1874. following expression sets the toaster field of the kitchen structure to 0 
  1875. because only the least significant bit is assigned to the toaster field: 
  1876.  
  1877. kitchen.toaster = 2;
  1878.  
  1879. Related Information 
  1880.  
  1881. o Structures 
  1882. o Structure and Union Member Specification  .  -> 
  1883. o Declarators 
  1884. o Initializers 
  1885.  
  1886.  
  1887. ΓòÉΓòÉΓòÉ 2.6.8.3. Declaring a Packed Structure ΓòÉΓòÉΓòÉ
  1888.  
  1889. Data elements of a structure are stored in memory on an address boundary 
  1890. specific for that data type.  For example, a double value is stored in memory 
  1891. on a doubleword (8-byte) boundary. Gaps may be left in memory between elements 
  1892. of a structure to align elements on their natural boundaries.  You can reduce 
  1893. the padding of bytes within a structure by using the _Packed qualifier on the 
  1894. structure declaration. 
  1895.  
  1896. Related Information 
  1897.  
  1898. o Structures 
  1899. o Structure and Union Member Specification  .  -> 
  1900. o _Packed Qualifier 
  1901. o Declarators 
  1902. o Initializers 
  1903.  
  1904.  
  1905. ΓòÉΓòÉΓòÉ 2.6.9. Unions ΓòÉΓòÉΓòÉ
  1906.  
  1907. A union is an object that can hold any one of a set of named members. The 
  1908. members of the named set can be of any data type. Members are overlaid in 
  1909. storage. 
  1910.  
  1911. Declaring a Union 
  1912. The storage allocated for a union is the storage required for the largest 
  1913. member of the union (plus any padding which is required so that the union will 
  1914. end at a natural boundary of its strictest member). 
  1915.  
  1916. A union type declaration contains the union keyword followed by an identifier 
  1917. (optional) and a brace-enclosed list of members. 
  1918.  
  1919. Syntax of a Union 
  1920.  
  1921. The identifier is a tag given to the union specified by the member list.  If 
  1922. you specify a tag, any subsequent declaration of the union (in the same scope) 
  1923. can be made by declaring the tag and omitting the member list.  If you do not 
  1924. specify a tag, you must place all variable definitions that refer to that union 
  1925. within the statement that defines the data type. 
  1926.  
  1927. The list of members provides the data type with a description of the objects 
  1928. that can be stored in the union. 
  1929.  
  1930. Syntax of a Union Member 
  1931.  
  1932. You can reference one of the possible members of a union as you reference a 
  1933. member of a structure.  For example: 
  1934.  
  1935. union {
  1936.       char birthday[9];
  1937.       int sex:1;  /*  0 = male; 1 = female  */
  1938.       float weight;
  1939.       } people;
  1940.  
  1941. people.birthday[0] = '\n';
  1942.  
  1943. assigns '\n' to the first element in the character array birthday, a member of 
  1944. the union people.  At any given time, a union can represent only one of its 
  1945. members.  In the preceding example, the union people will contain either sex, 
  1946. birthday, or weight but never more than one of these. For example, the 
  1947. following is not allowed: 
  1948.  
  1949. 1  people.birthday = "25/10/67";
  1950. 2  people.sex = 1;
  1951. 3  printf("%d\n", people.weight);
  1952.  
  1953. Both lines 2 and 3 are not allowed since in line 1, people.birthday is assigned 
  1954. a value. 
  1955.  
  1956. Defining a Variable that has Union Data Type 
  1957. A union variable definition contains a storage class keyword, the union 
  1958. keyword, a union tag, and a declarator.  The union tag indicates the data type 
  1959. of the union variable. 
  1960.  
  1961. Type Specifier 
  1962. The type specifier contains the keyword union followed by the name of the union 
  1963. type.  You must declare the union data type before you can define a union 
  1964. having that type. 
  1965.  
  1966. You can define a union data type and a union of that type in the same statement 
  1967. by placing the variable declarator after the data type definition. 
  1968.  
  1969. Declarator 
  1970. The declarator is an identifier, possibly with the volatile or const qualifier. 
  1971.  
  1972. Initializer 
  1973. You can only initialize the first member of a union. 
  1974.  
  1975. Example of Initializing a Union 
  1976.  
  1977. Defining a Union Type and a Union Variable in the Same Statement 
  1978. You can place a type definition and a variable definition in one statement by 
  1979. placing a declarator after the type definition.  If you want to specify a 
  1980. storage class specifier for the variable, you must place the storage class 
  1981. specifier at the beginning of the statement. 
  1982.  
  1983. Defining a Packed Union 
  1984. You can use _Packed to qualify a union.  However, the memory layout of the 
  1985. union members is not affected.  Each member starts at offset zero.  The _Packed 
  1986. qualifier does affect the total alignment restriction of the whole union. 
  1987.  
  1988.  
  1989. ΓòÉΓòÉΓòÉ 2.6.9.1. Anonymous Unions ΓòÉΓòÉΓòÉ
  1990.  
  1991. The C/C++ for OS/2 compiler allows unions to be declared without declarators if 
  1992. they are members of another structure or union. Unions without declarators are 
  1993. called anonymous unions. 
  1994.  
  1995. Members of an anonymous union can be accessed as if they were declared directly 
  1996. in the containing structure or union. For example, given the following 
  1997. structure: 
  1998.  
  1999.    struct s {
  2000.       int a;
  2001.       union {
  2002.         int b;
  2003.         float c;
  2004.       };        /* no declarator */
  2005.    } kurt;
  2006. you can make the following statements: 
  2007.  
  2008.    kurt.a = 5;
  2009.    kurt.b = 36;
  2010.  
  2011. You can also declare an anonymous union: 
  2012.  
  2013.  1. By creating a typedef and using the typedef name without a declarator: 
  2014.  
  2015.            typedef union {
  2016.               int a;
  2017.               int b;
  2018.            }  UNION_T;
  2019.  
  2020.            struct s1 {
  2021.               UNION_T;
  2022.               int c;
  2023.            } dave;
  2024.  
  2025.  2. By using an existing union tag without a declarator: 
  2026.  
  2027.            union u1 {
  2028.               int a;
  2029.               int b;
  2030.            };
  2031.  
  2032.            struct s1 {
  2033.               union u1;
  2034.               int c;
  2035.            } dave;
  2036.  
  2037. In both of the preceding examples, the members can be accessed as dave.a, 
  2038. dave.b, and dave.c. 
  2039.  
  2040. An anonymous union must be a member of, or nested within another anonymous 
  2041. union that is a member of, a named structure or union.  If a union is declared 
  2042. at file scope without a declarator, its members are not available to the 
  2043. surrounding scope.  For example, the following union only declares the union 
  2044. tag tom: 
  2045.  
  2046.    union tom {
  2047.       int b;
  2048.       float c;
  2049.    };
  2050. The variables b and c from this union cannot be used at file scope, and the 
  2051. following statements will generate errors: 
  2052.  
  2053.    b = 5;
  2054.    c = 2.5;
  2055.  
  2056. Portability Information  Anonymous unions are treated differently in the C++ 
  2057.                          language. Given these declarations: 
  2058.  
  2059.                                                      union don {
  2060.                                                         int a;
  2061.                                                         int b;
  2062.                                                      };
  2063.  
  2064.                                                      struct pete {
  2065.                                                         union don;
  2066.                                                      };
  2067.                          in C/C++ for OS/2 C, union don; declares an anonymous 
  2068.                          union as a member of pete.  In C/C++ for OS/2 C++, the 
  2069.                          statement is treated as a forward or incomplete 
  2070.                          declaration of a nested union, not as an anonymous 
  2071.                          union. 
  2072.  
  2073. Examples of Unions 
  2074.  
  2075. Related Information 
  2076.  
  2077. o Structure and Union Member Specification  .  -> 
  2078. o _Packed Qualifier 
  2079. o Declarators 
  2080. o Initializers 
  2081.  
  2082.  
  2083. ΓòÉΓòÉΓòÉ 2.6.10. typedef ΓòÉΓòÉΓòÉ
  2084.  
  2085. C language typedef declarations allow you to define your own identifiers that 
  2086. can be used in place of C type specifiers such as int, float, and double.  The 
  2087. data types you define using typedef are not new data types.  The identifiers 
  2088. you define are synonyms for the primary data types used by the C language or 
  2089. data types derived by combining the primary data types. 
  2090.  
  2091. Syntax of a typedef Declaration 
  2092.  
  2093. A typedef declaration does not reserve storage. 
  2094.  
  2095. When an object is defined using a typedef identifier, the properties of the 
  2096. defined object are exactly the same as if the object were defined by explicitly 
  2097. listing the data type associated with the identifier. 
  2098.  
  2099. Examples of typedef 
  2100.  
  2101. Related Information 
  2102.  
  2103. o Characters 
  2104. o Floating-Point Variables 
  2105. o Integers 
  2106. o void Type 
  2107. o Arrays 
  2108. o Enumerations 
  2109. o Pointers 
  2110. o Structures 
  2111. o Unions 
  2112.  
  2113.  
  2114. ΓòÉΓòÉΓòÉ 2.7. Functions ΓòÉΓòÉΓòÉ
  2115.  
  2116. This section describes the structure and usage of functions. 
  2117.  
  2118. o main 
  2119. o Function Definition 
  2120. o Function Declarations 
  2121. o Calling Functions and Passing Arguments 
  2122.  
  2123.  
  2124. ΓòÉΓòÉΓòÉ 2.7.1. main ΓòÉΓòÉΓòÉ
  2125.  
  2126. When you begin the execution of a program, the system automatically calls the 
  2127. function main.  Every program must have one and only one function named main 
  2128. with the name main written in lowercase letters. 
  2129.  
  2130. Syntax of a main Function 
  2131.  
  2132. The function main can declare either none or two parameters. The C/C++ for OS/2 
  2133. compiler also supports an optional third parameter. Although any name can be 
  2134. given to these parameters, they are usually referred to as argc and argv. The 
  2135. third parameter is referred to as envp. The first parameter, argc (argument 
  2136. count), has type int and indicates how many arguments were entered on the 
  2137. command line.  The second parameter, argv (argument vector), has type array of 
  2138. pointers to char array objects.  char objects are null-terminated strings. 
  2139.  
  2140. The third parameter, envp, is a pointer to an array of char pointers to the 
  2141. environment strings.  A NULL pointer terminates the array.  You can use the 
  2142. pointer to the array to access the value of the environment settings. The envp 
  2143. parameter is optional, but to declare it, you must also declare the first two 
  2144. parameters. 
  2145.  
  2146. Note:  The envp parameter is not available when you are using the subsystem 
  2147. libraries. 
  2148.  
  2149. The value of argc indicates the number of pointers in the array argv.  If a 
  2150. program name is available, the first element in argv points to a character 
  2151. array that contains the program name or the invocation name of the program that 
  2152. is being executed.  If the name cannot be determined, the first element in argv 
  2153. points to a null character.  This name is counted as one of the arguments to 
  2154. the function main.  For example, if only the program name is entered on the 
  2155. command line, argc has a value of 1 and argv[0] points to the program name. 
  2156.  
  2157. Regardless of the number of arguments entered on the command line, argv[argc] 
  2158. always contains NULL. 
  2159.  
  2160. Example of Arguments to main 
  2161.  
  2162. Note:  Be careful when entering mixed case characters on a command line because 
  2163. some environments are not case sensitive. Also, the exact format of the string 
  2164. pointed to by argv[0] is system dependent. 
  2165.  
  2166. Related Information 
  2167.  
  2168. o envp Parameter to main 
  2169. o Function Definition 
  2170. o Calling Functions and Passing Arguments 
  2171. o Types 
  2172. o Identifiers 
  2173. o Block 
  2174.  
  2175.  
  2176. ΓòÉΓòÉΓòÉ 2.7.2. envp Parameter to main ΓòÉΓòÉΓòÉ
  2177.  
  2178. The C/C++ for OS/2 compiler accepts an optional third parameter to the main 
  2179. function: 
  2180.  
  2181.    int main(int argc, char **argv, char **envp)
  2182.  
  2183. The third argument is a pointer to an array of char pointers to the environment 
  2184. strings. A NULL pointer terminates the array. You can use the pointer to the 
  2185. array to access the value of the environment settings. 
  2186.  
  2187. To use the third argument, you must declare the first and second arguments, 
  2188. even if you do not use them. 
  2189.  
  2190. Note:  The envp parameter is not available when you are using the subsystem 
  2191. libraries. 
  2192.  
  2193. Related Information 
  2194.  
  2195. o main 
  2196.  
  2197.  
  2198. ΓòÉΓòÉΓòÉ 2.7.3. Function Definition ΓòÉΓòÉΓòÉ
  2199.  
  2200. A function definition specifies the name, formal parameters, and body of a 
  2201. function.  You can also specify the function's return type and storage class. 
  2202.  
  2203. Syntax of a Function Definition 
  2204.  
  2205. There are two ways to define a function:  prototype and non-prototype. It is 
  2206. recommended that you use the prototype method because of the parameter type 
  2207. checking that can be performed. 
  2208.  
  2209. A function definition (either prototype or non-prototype) contains the 
  2210. following: 
  2211.  
  2212. o The optional storage class specifier extern or static, which determines the 
  2213.   scope of the function.  If a storage class specifier is not given, the 
  2214.   function has external linkage. 
  2215.  
  2216. o An optional linkage keyword, which determines the calling convention used to 
  2217.   call the function.  The keywords are a C/C++ for OS/2 extension to the SAA C 
  2218.   definition. The default calling convention is optlink. 
  2219.  
  2220. o An optional type specifier, which determines the type of value that the 
  2221.   function returns.  If a type specifier is not given, the function has type 
  2222.   int. 
  2223.  
  2224. o A function declarator, which provides the function with a name, can further 
  2225.   describe the type of the value that the function returns, and can list any 
  2226.   parameters (and their types) that the function expects. The parameters which 
  2227.   the function is expecting are enclosed in parenthesis. 
  2228.  
  2229. o A block statement, which contains data definitions and code. 
  2230.  
  2231. In addition, the non-prototype function definition may also have parameter 
  2232. declarations, which describe the types of parameters that the function 
  2233. receives. In non-prototype functions, parameters that are not declared have 
  2234. type int. 
  2235.  
  2236. A function can be called by itself or by other functions. Unless a function 
  2237. definition has the storage class specifier static, the function also can be 
  2238. called by functions that appear in other files.  If the function has a storage 
  2239. class specifier of static, it can only be directly invoked from within the same 
  2240. source file.  If a function has the storage class specifier static or a return 
  2241. type other than int, the function definition or a declaration for the function 
  2242. must appear before, and in the same file as, a call to the function. If a 
  2243. function definition has external linkage and a return type of int, calls to the 
  2244. function can be made before it is visible because an implicit declaration of 
  2245. extern int func(); is assumed. 
  2246.  
  2247. All declarations for a given function must be compatible; that is, the return 
  2248. type is the same and the parameters have the same type. 
  2249.  
  2250. The default type for the return value and parameters of a function is int and 
  2251. the default storage class specifier is extern. If the function does not return 
  2252. a value or it is not passed any parameters, use the keyword void as the type 
  2253. specifier. 
  2254.  
  2255. You can include ellipses (...) at the end of your parameter list to indicate 
  2256. that a variable number of arguments will be passed to the function.  Note that 
  2257. parameter promotions will be performed and no type checking is done. 
  2258.  
  2259. You cannot declare a function as a struct or union member. 
  2260.  
  2261. A function cannot have a return type of function, array or any type having the 
  2262. volatile or const qualifier. However, it can return a pointer to an object with 
  2263. a volatile or const type. 
  2264.  
  2265. You cannot define an array of functions.  You can, however, define an array of 
  2266. pointers to functions. 
  2267.  
  2268. Example of a Function Definition 
  2269.  
  2270. Related Information 
  2271.  
  2272. o Storage Class Specifiers 
  2273. o Linkage Keywords 
  2274. o Types 
  2275. o Function Declarator 
  2276. o Block 
  2277. o volatile and const Qualifiers 
  2278. o Function Declarations 
  2279.  
  2280.  
  2281. ΓòÉΓòÉΓòÉ 2.7.4. Linkage Keywords ΓòÉΓòÉΓòÉ
  2282.  
  2283. Linkage keywords are an alternative to the #pragma linkage directive for 
  2284. setting linkage conventions for function calls. Each linkage convention has a 
  2285. corresponding keyword that you can use with a function name to set the 
  2286. convention for that function.  The keywords are: 
  2287.  
  2288. _Optlink                        C/C++ for OS/2 default linkage. 
  2289. _System                         OS/2 system linkage. 
  2290. _Pascal                         32-bit pascal linkage 
  2291. _Far32 _Pascal                  32-bit far pascal linkage 
  2292. _Far16 _Cdecl                   16-bit cdecl linkage 
  2293. _Far16 _Pascal                  16-bit pascal linkage 
  2294. _Far16 _Fastcall                16-bit fastcall linkage 
  2295.  
  2296.  1. You must specify the _Far16 keyword to use a 16-bit calling convention. If 
  2297.     you specify only _Far16, the _Far16 _Cdecl linkage is used. 
  2298.  
  2299.  2. Do not confuse the 32-bit pascal linkage with the 16-bit far16 pascal 
  2300.     linkage.  If you specify only the _Pascal keyword, the 32-bit convention is 
  2301.     used. 
  2302.  
  2303. You can use the linkage keywords at any language level. Using a keyword is 
  2304. generally quicker and easier than using a #pragma linkage directive. 
  2305.  
  2306. To set the calling convention for a function, place the linkage keyword 
  2307. immediately before the function name.  For example, 
  2308.  
  2309.    int _System jim(int);
  2310.    char (* _Far16 _Cdecl donna)(int);
  2311.  
  2312. These two statements are equivalent to using the following #pragma linkage 
  2313. directives and declarations: 
  2314.  
  2315.    #pragma linkage(jim, system)
  2316.    int jim(int);
  2317.  
  2318.    #pragma linkage(donnatype, far16 cdecl)
  2319.    typedef char donnatype(int);
  2320.    donnatype donna;
  2321.  
  2322. Like the #pragma linkage directive, the linkage keywords take precedence over 
  2323. the compiler options that set calling conventions (/Mp and /Ms). If you specify 
  2324. conflicting linkage types for a function using both a #pragma linkage directive 
  2325. and a keyword, an error message is generated and your program will not compile. 
  2326. For more information on the different calling conventions and how they work, 
  2327. see the IBM C/C++ for OS/2 Programming Guide. 
  2328.  
  2329. Related Information 
  2330.  
  2331. o inf.#pragma linkage 
  2332. o Code Generation Options 
  2333.  
  2334.  
  2335. ΓòÉΓòÉΓòÉ 2.7.5. Function Declarator ΓòÉΓòÉΓòÉ
  2336.  
  2337. The function declarator names the function and lists the function parameters. A 
  2338. function declarator contains an identifier that names the function and a list 
  2339. of the function parameters. There are two types of function declarators: 
  2340. prototype and non-prototype. It is recommended you always use prototype 
  2341. function declarators because of the parameter checking that can be performed. 
  2342.  
  2343. Syntax of a Prototype Function Declarator 
  2344.  
  2345. Each parameter should be declared within the function declarator for prototype 
  2346. function declarations. Any calls to the function must pass the same number of 
  2347. arguments as there are parameters in the declaration. 
  2348.  
  2349. To indicate that a function does not receive any values, use the keyword void 
  2350. in place of the parameter. For example: 
  2351.  
  2352. int stop(void)
  2353. {
  2354. }
  2355.  
  2356. Examples of Prototype Function Declarators 
  2357.  
  2358. Syntax of a Non-prototype Function Declarator 
  2359.  
  2360. Each parameter should be declared in a parameter declaration list following the 
  2361. declarator.  If a parameter is not declared, it has type int. 
  2362.  
  2363. char and short parameters are widened to int and float to double. No type 
  2364. checking between the argument type and the parameter type is done for 
  2365. non-prototyped functions.  As well, there are no checks to ensure that the 
  2366. number of arguments matches the number of parameters. 
  2367.  
  2368. Each value that a function receives should be declared in a parameter 
  2369. declaration list for non-prototype function definitions which follows the 
  2370. declarator. 
  2371.  
  2372. A parameter declaration determines the storage class specifier and the data 
  2373. type of the value. 
  2374.  
  2375. Syntax of a Parameter Declaration 
  2376.  
  2377. The only storage class specifier allowed is the register storage class 
  2378. specifier. Any type specifier for a parameter is allowed. If you do not specify 
  2379. the register storage class specifier, the parameter will have the auto storage 
  2380. class specifier. If you omit the type specifier and you are not using the 
  2381. prototype form to define the function, the parameter will have type int. 
  2382.  
  2383.     int func(i,j)
  2384.     {
  2385.        /*  i and j have type int  */
  2386.     }
  2387.  
  2388. You cannot declare a parameter in the parameter declaration list if it is not 
  2389. listed within the declarator. 
  2390.  
  2391. Related Information 
  2392.  
  2393. o Storage Class Specifiers 
  2394. o Types 
  2395. o Function Definition 
  2396. o Function Declarations 
  2397. o void Type 
  2398.  
  2399.  
  2400. ΓòÉΓòÉΓòÉ 2.7.6. Function Body ΓòÉΓòÉΓòÉ
  2401.  
  2402. The body of a function is a block statement. (For more information on block 
  2403. statements, see Block.) The following function has an empty body: 
  2404.  
  2405. void stub1(void)
  2406. {
  2407. }
  2408.  
  2409. The following function body contains a definition for the integer variable 
  2410. big_num, an if-else control statement and a call to the function printf: 
  2411.  
  2412. void largest(int num1, int num2)
  2413. {
  2414.    int big_num;
  2415.  
  2416.    if (num1 >= num2)
  2417.       big_num = num1;
  2418.    else
  2419.       big_num = num2;
  2420.  
  2421.    printf("big_num = %d\n", big_num);
  2422. }
  2423.  
  2424. Related Information 
  2425.  
  2426. o Block 
  2427. o Function Definition 
  2428. o Function Declarations 
  2429.  
  2430.  
  2431. ΓòÉΓòÉΓòÉ 2.8. Function Declarations ΓòÉΓòÉΓòÉ
  2432.  
  2433. A function declaration establishes the name of the function and the parameters 
  2434. of the function.  A function is declared implicitly by its appearance in an 
  2435. expression if it has not been defined or declared previously;  the implicit 
  2436. declaration is equivalent to a declaration of extern int func_name(). 
  2437.  
  2438. If the called function returns a value that has a type other than int, you must 
  2439. declare the function before the function call.  Even if a called function 
  2440. returns a type int, explicitly declaring the function prior to its call is good 
  2441. programming practice. 
  2442.  
  2443. Some declarations do not have parameter lists; the declarations simply specify 
  2444. the types of parameters and the return values, such as in the following 
  2445. example: 
  2446.  
  2447.    int func(int,long);
  2448.  
  2449. Examples of Function Declaration 
  2450.  
  2451. Related Information 
  2452.  
  2453. o Function Declarator 
  2454. o Function Definition 
  2455. o extern Storage Class Specifier. 
  2456.  
  2457.  
  2458. ΓòÉΓòÉΓòÉ 2.9. Calling Functions and Passing Arguments ΓòÉΓòÉΓòÉ
  2459.  
  2460. A function call specifies a function name and a list of arguments.  The calling 
  2461. function passes the value of each argument to the specified function.  The 
  2462. argument list is surrounded by parentheses, and each argument is separated by a 
  2463. comma.  The argument list can be empty. 
  2464.  
  2465. The arguments to a function are evaluated before the function is called.  When 
  2466. an argument is passed in a function call, the function receives a copy of the 
  2467. argument value.  If the value of the argument is an address, the called 
  2468. function can use indirection to change the contents pointed to by the address. 
  2469. If a function or array is passed as an argument, the argument is converted to a 
  2470. pointer which points to the function or array. 
  2471.  
  2472. Arguments passed to parameters in prototype declarations will be converted to 
  2473. the declared parameter type. For non-prototype function declarations, char and 
  2474. short parameters are promoted to int and float to double. 
  2475.  
  2476. You can pass a packed structure argument to a function expecting a nonpacked 
  2477. structure of the same type and vice versa. (The same applies to packed and 
  2478. nonpacked unions.) 
  2479.  
  2480. Note:  If you do not use a function prototype and you send a packed structure 
  2481. when a nonpacked structure is expected, a run-time error may occur. 
  2482.  
  2483. The order in which arguments are evaluated and passed to the function is 
  2484. implementation-defined.  For example, the following sequence of statements 
  2485. calls the function tester: 
  2486.  
  2487. int x;
  2488. x = 1;
  2489. tester(x++, x);
  2490.  
  2491. The call to tester in the preceding example may produce different results on 
  2492. different compilers.  Depending on the implementation, x++ may be evaluated 
  2493. first or x may be evaluated first.  To avoid ambiguity, if you want x++ to be 
  2494. evaluated first, you can replace the preceding sequence of statements with the 
  2495. following: 
  2496.  
  2497. int x, y;
  2498. x = 1;
  2499. y = x++;
  2500. tester(y, x);
  2501.  
  2502. Examples of Calling Functions and Passing Values 
  2503.  
  2504. Related Information 
  2505.  
  2506. o Function Declarator 
  2507. o Function Declarations 
  2508. o Function Definition 
  2509. o Types 
  2510.  
  2511.  
  2512. ΓòÉΓòÉΓòÉ 3. Expressions and Operators ΓòÉΓòÉΓòÉ
  2513.  
  2514. This section describes C language expressions.  Expressions are grouped 
  2515. according to the operators they contain and the contexts in which the 
  2516. expressions can be used: 
  2517.  
  2518. o Primary Expression 
  2519. o Unary Expression 
  2520. o Binary Expression 
  2521. o Conditional Expression  ? : 
  2522. o Assignment Expression 
  2523. o Comma Expression  , 
  2524. o Lvalue 
  2525. o Constant Expression 
  2526.  
  2527. Operator Precedence shows the order of evaluation of the expressions and 
  2528. operators. 
  2529.  
  2530. Most expressions can contain several different, but related, types of operands. 
  2531. The following type classes describe related types of operands: 
  2532.  
  2533. Integral    Character objects and constants, objects having an enumeration 
  2534.             type, and objects having the type short, int, long, unsigned short, 
  2535.             unsigned int, or unsigned long. 
  2536.  
  2537. Arithmetic  Integral objects and objects having the type float, double, and 
  2538.             long double. 
  2539.  
  2540. Scalar      Arithmetic objects, and pointers to objects of any type. 
  2541.  
  2542. Aggregate   Arrays, structures, and unions. 
  2543.  
  2544. Many C language operators cause conversions from one data type to another. 
  2545. Conversions are discussed in Conversions. 
  2546.  
  2547.  
  2548. ΓòÉΓòÉΓòÉ 3.1. Operator Precedence ΓòÉΓòÉΓòÉ
  2549.  
  2550. Two operator characteristics determine how operands group with operators: 
  2551. precedence and associativity.  Precedence provides a priority system for 
  2552. grouping different types of operators with their operands.  Associativity 
  2553. provides a left-to-right or right-to-left order for grouping operands to 
  2554. operators that have the same precedence. For example, in the following 
  2555. statements, the value of 5 is assigned to both a and b because of the 
  2556. right-to-left associativity of the = operator. The value of c is assigned to b 
  2557. first and then the value of b is assigned to a. 
  2558.  
  2559. b = 9;
  2560. c = 5;
  2561. a = b = c;
  2562.  
  2563. Because the order of expression evaluation is not specified, you can explicitly 
  2564. force the grouping of operands with operators by using parentheses. 
  2565.  
  2566. In the expression a + b * c / d, the * and / operations are performed before + 
  2567. because of precedence.  b is multiplied by c before it is divided by d because 
  2568. of associativity. 
  2569.  
  2570. The following table lists the C language operators in order of precedence and 
  2571. shows the direction of associativity for each operator.  The primary operators 
  2572. have the highest precedence.  The comma operator has the lowest precedence. 
  2573. Operators that appear in the same group have the same precedence. 
  2574.  
  2575. Table of Operator Precedence and Associativity 
  2576.  
  2577. The order of evaluation for function call arguments or for the operands of 
  2578. binary operators is not specified. Thus, avoid writing such ambiguous 
  2579. expressions as: 
  2580.  
  2581. z = (x * ++y) / func1(y);
  2582. func2(++i, x[i]);
  2583.  
  2584. In the example above, the order of evaluation of ++y and func1(y) is not 
  2585. defined. If y had the value of 1 before the first statement, it is not known 
  2586. whether or not the value of 1 or 2 is passed to func1().  In the second 
  2587. statement, if i had the value of 1, it is not known whether or not the first or 
  2588. second array element of x[] is passed as the second argument to func2(). Do not 
  2589. write code that depends on a particular order of evaluation of operators with 
  2590. the same precedence. 
  2591.  
  2592. The order of grouping operands with operators in an expression containing more 
  2593. than one instance of an operator with both associative and commutative 
  2594. properties is not specified. The operators that have the same associative and 
  2595. commutative properties are:  *, +, &, |, and ^ (or ╨║).  The grouping of 
  2596. operands can be forced by grouping the expression in parentheses. 
  2597.  
  2598. Examples of Expressions 
  2599.  
  2600. Related Information 
  2601.  
  2602. o Parenthesized Expression ( ) 
  2603. o Expressions and Operators 
  2604.  
  2605.  
  2606. ΓòÉΓòÉΓòÉ 3.2. Lvalue ΓòÉΓòÉΓòÉ
  2607.  
  2608. An lvalue is an expression that represents an object. A modifiable lvalue is an 
  2609. expression representing an object that can be changed. A modifiable lvalue is 
  2610. the left operand in an assignment expression. However, arrays and const objects 
  2611. are not modifiable lvalues. 
  2612.  
  2613. Usage 
  2614. All assignment operators evaluate their right operand and assign that value to 
  2615. their left operand.  The left operand must evaluate to a reference to an 
  2616. object. 
  2617.  
  2618. The assignment operators are not the only operators that require an operand to 
  2619. be an lvalue.  The address operator requires an lvalue as an operand while the 
  2620. increment and the decrement operators require a modifiable lvalue as an 
  2621. operand. 
  2622.  
  2623. Examples of Lvalues 
  2624.  
  2625. Related Information 
  2626.  
  2627. o Assignment Expression 
  2628. o Address  & 
  2629. o Structure and Union Member Specification  .  -> 
  2630.  
  2631.  
  2632. ΓòÉΓòÉΓòÉ 3.3. Constant Expression ΓòÉΓòÉΓòÉ
  2633.  
  2634. A constant expression is an expression with a value that is determined during 
  2635. compilation and cannot be changed during execution.  It can be evaluated only. 
  2636. Constant expressions can be composed of integer constants, character constants, 
  2637. floating-point constants, and enumeration constants. 
  2638.  
  2639. Usage 
  2640. The C language requires constant expressions in the following places: 
  2641.  
  2642. o In the subscript declarator, as the description of an array bound 
  2643. o After the keyword case in a switch statement 
  2644. o In an enumerator, as the numeric value of an enum constant 
  2645. o In a bit-field width specifier 
  2646. o In the preprocessor if statement 
  2647. o In the initializer of a file scope data definition. 
  2648.  
  2649. In all the cases above except for an initializer of a file scope data 
  2650. definition, the constant expression can contain integer, character, and 
  2651. enumeration constants, casts to integral types, and sizeof expressions. 
  2652.  
  2653. In a file scope data definition, the initializer must evaluate to a constant or 
  2654. to the address of a static storage (extern or static) object (plus or minus an 
  2655. integer constant) that is defined or declared earlier in the file.  Thus, the 
  2656. constant expression in the initializer can contain integer, character, 
  2657. enumeration, and float constants, casts to any type, sizeof expressions, and 
  2658. addresses (possibly modified by constants) of static objects. 
  2659.  
  2660. Examples of Constant Expressions 
  2661.  
  2662. Related Information 
  2663.  
  2664. o Arrays 
  2665. o Initializers 
  2666. o File Scope Data Declarations 
  2667. o switch 
  2668. o Enumerations 
  2669. o Structures 
  2670. o Conditional Compilation 
  2671.  
  2672.  
  2673. ΓòÉΓòÉΓòÉ 3.4. Primary Expression ΓòÉΓòÉΓòÉ
  2674.  
  2675. A primary expression can be: 
  2676.  
  2677. o Identifiers 
  2678. o Parenthesized Expression ( ) 
  2679. o Constant Expression 
  2680. o Function Call ( ) 
  2681. o Array Subscript  [ ] 
  2682. o Structure and Union Member Specification  .  -> 
  2683.  
  2684. All primary operators have the same precedence and have left-to-right 
  2685. associativity. 
  2686.  
  2687. Related Information 
  2688.  
  2689. o Expressions and Operators 
  2690. o Operator Precedence 
  2691.  
  2692.  
  2693. ΓòÉΓòÉΓòÉ 3.4.1. Parenthesized Expression ( ) ΓòÉΓòÉΓòÉ
  2694.  
  2695. You can use parentheses to explicitly force the order of expression evaluation. 
  2696. The following expression does not contain any parentheses used for grouping 
  2697. operands and operators.  The parentheses surrounding weight, zipcode are used 
  2698. to form a function call.  Notice how the the operands and operators are grouped 
  2699. in this expression according to the rules for operator precedence and 
  2700. associativity: 
  2701.  
  2702.  
  2703. -discount * item + handling(weight, zipcode) < .10 * item
  2704. Γöé       Γöé      Γöé   Γöé                       Γöé   Γöé        Γöé
  2705. ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ      Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
  2706.     ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ               Γöé                    Γöé
  2707.          ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  2708.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2709.  
  2710. The following expression is similar to the previous expression.  This 
  2711. expression, however, contains parentheses that change how the operands and 
  2712. operators group: 
  2713.  
  2714.  
  2715. (-discount * (item + handling(weight, zipcode) ) ) < (.10 * item)
  2716.  Γöé       Γöé    Γöé      Γöé                       Γöé       Γöé          Γöé
  2717.  ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ    Γöé      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  2718.      Γöé        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                          Γöé
  2719.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                                   Γöé
  2720.              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2721.  
  2722. In an expression that contains both associative and commutative operators, you 
  2723. can use parentheses to specify the grouping of operands with operators.  The 
  2724. parentheses in the following expression guarantee the order of grouping 
  2725. operands with the operators: 
  2726.  
  2727. x = f + (g + h);
  2728.  
  2729. Related Information 
  2730.  
  2731. o Operator Precedence 
  2732. o Function Call ( ) 
  2733. o Expressions and Operators 
  2734.  
  2735.  
  2736. ΓòÉΓòÉΓòÉ 3.4.2. Function Call ( ) ΓòÉΓòÉΓòÉ
  2737.  
  2738. A function call is a primary expression containing a parenthesized argument 
  2739. list.  The argument list can contain any number of expressions separated by 
  2740. commas.  For example: 
  2741.  
  2742. stub()
  2743. overdue(account, date, amount)
  2744. notify(name, date + 5)
  2745. report(error, time, date, ++num)
  2746.  
  2747. The arguments are evaluated, and each parameter is assigned the value of the 
  2748. corresponding argument.  Assigning a value to a parameter within the function 
  2749. body changes the value of the parameter within the function, but has no effect 
  2750. on the argument. 
  2751.  
  2752. When you define a function as returning a certain type, for example type int, 
  2753. the result of the function call has that type. 
  2754.  
  2755. If you want a function to change the value of a variable, pass a pointer to the 
  2756. variable you want changed. When a pointer is passed as a parameter, the pointer 
  2757. is copied;  the object pointed to is not copied.  (See Pointers.) 
  2758.  
  2759. All arrays and functions are converted to pointers when passed as function 
  2760. arguments. Arguments passed to non-prototyped functions undergo conversions: 
  2761. type short or char parameters will be converted to int and float parameters to 
  2762. double. Use a cast expression for other conversions. (See Cast.) 
  2763.  
  2764. If the function has not been previously declared, an implicit declaration of 
  2765. extern int func(); is assumed. 
  2766.  
  2767. The compiler compares the data types provided by the calling function with the 
  2768. data types that the called function expects and the compiler may also perform 
  2769. type conversions if the declaration of the function is: 
  2770.  
  2771. o in function prototype format 
  2772. o visible at the point where the function is called. 
  2773.  
  2774. The order in which parameters are evaluated is not specified.  Avoid such calls 
  2775. as: 
  2776.  
  2777. method(samp1, bat.proc--, bat.proc);
  2778.  
  2779. In the preceding example, bat.proc-- may be evaluated last, causing the last 
  2780. two arguments to be passed with the same value. 
  2781.  
  2782. A function can call itself. 
  2783.  
  2784. Example of a Function Call 
  2785.  
  2786. Related Information 
  2787.  
  2788. o Functions 
  2789. o Pointers 
  2790. o Cast 
  2791. o Primary Expression 
  2792.  
  2793.  
  2794. ΓòÉΓòÉΓòÉ 3.4.3. Array Subscript  [ ] ΓòÉΓòÉΓòÉ
  2795.  
  2796. A primary expression followed by an expression in [ ] (square brackets) 
  2797. specifies an element of an array. The expression within the square brackets is 
  2798. referred to as a subscript. 
  2799.  
  2800. The primary expression must have a pointer type, and the subscript must have 
  2801. integral type.  The result of an array subscript is an lvalue. 
  2802.  
  2803. The first element of each array has the subscript 0 (zero).  Thus, the 
  2804. expression contract[35] refers to the 36th element in the array contract. 
  2805.  
  2806. In a multidimensional array, you can reference each element (in the order of 
  2807. their increasing storage locations) by incrementing the right-most subscript 
  2808. most frequently.  For example, the following statement gives the value 100 to 
  2809. each element in the array code[4][3][6]: 
  2810.  
  2811. for (first = 0; first <= 3; ++first)
  2812.    for (second = 0; second <= 2; ++second)
  2813.       for (third = 0; third <= 5; ++third)
  2814.          code[first][second][third] = 100;
  2815.  
  2816. Related Information 
  2817.  
  2818. o Arrays 
  2819. o Lvalue 
  2820. o Primary Expression 
  2821.  
  2822.  
  2823. ΓòÉΓòÉΓòÉ 3.4.4. Structure and Union Member Specification  .  -> ΓòÉΓòÉΓòÉ
  2824.  
  2825. Two primary operators enable you to specify structure and union members: 
  2826. . (dot) and -> (arrow). 
  2827.  
  2828. The dot (a period) and arrow (formed by a minus and a greater than symbol) 
  2829. operators are always preceded by a primary expression and followed by an 
  2830. identifier. 
  2831.  
  2832. When you use the dot operator, the primary expression must be an instance of a 
  2833. type of structure or union, and the identifier must name a member of that 
  2834. structure or union.  The result is the value associated with the named 
  2835. structure or union member.  The result is an lvalue if the first expression is 
  2836. an lvalue. 
  2837.  
  2838. Some sample dot expressions follow: 
  2839.  
  2840. roster[num].name
  2841. roster[num].name[1]
  2842.  
  2843. When you use the arrow operator, the primary expression must be a pointer to a 
  2844. structure or a union, and the identifier must name a member of the structure or 
  2845. union.  The result is the value of the named structure or union member to which 
  2846. the pointer expression refers.  In the following example, name is an int: 
  2847.  
  2848. roster -> name
  2849.  
  2850. Related Information 
  2851.  
  2852. o Unions 
  2853. o Structures 
  2854. o Primary Expression 
  2855.  
  2856.  
  2857. ΓòÉΓòÉΓòÉ 3.5. Unary Expression ΓòÉΓòÉΓòÉ
  2858.  
  2859. A unary expression contains one operand and a unary operator.  All unary 
  2860. operators have the same precedence and have right-to-left associativity. 
  2861.  
  2862. o Increment  ++ 
  2863. o Decrement  - - 
  2864. o Unary Plus  + 
  2865. o Unary Minus  - 
  2866. o Logical Negation  ! 
  2867. o Bitwise Negation  ~ 
  2868. o Address  & 
  2869. o Indirection  * 
  2870. o Cast 
  2871. o Size of an Object (sizeof) 
  2872.  
  2873. Related Information 
  2874.  
  2875. o Binary Expression 
  2876. o Expressions and Operators 
  2877. o Operator Precedence 
  2878.  
  2879.  
  2880. ΓòÉΓòÉΓòÉ 3.5.1. Increment  ++ ΓòÉΓòÉΓòÉ
  2881.  
  2882. The ++ (increment) operator adds 1 (one) to the value of the scalar operand, or 
  2883. if the operand is a pointer, increments the operand by the size of the object 
  2884. to which it points.  The operand receives the result of the increment 
  2885. operation.  Thus, the operand must be a modifiable lvalue. 
  2886.  
  2887. You can place the ++ before or after the operand.  If the ++ appears before the 
  2888. operand, the operand is incremented.  Then the incremented value is used in the 
  2889. expression.  If you place the ++ after the operand, the current value of the 
  2890. operand is used in the expression.  Then the operand is incremented.  For 
  2891. example: 
  2892.  
  2893. play = ++play1 + play2++;
  2894.  
  2895. is equivalent to the following three expressions: 
  2896.  
  2897. play1 = play1 + 1;
  2898. play  = play1 + play2;
  2899. play2 = play2 + 1;
  2900.  
  2901. The type of the increment expression is the same type as that of the operand. 
  2902.  
  2903. Related Information 
  2904.  
  2905. o Decrement  - - 
  2906. o Addition  + 
  2907. o Unary Expression 
  2908. o Usual Arithmetic Conversions 
  2909.  
  2910.  
  2911. ΓòÉΓòÉΓòÉ 3.5.2. Decrement  - - ΓòÉΓòÉΓòÉ
  2912.  
  2913. The -- (decrement) operator subtracts 1 (one) from the value of the scalar 
  2914. operand, or if the operand is a pointer, decreases the operand by the size of 
  2915. the object to which it points.  The operand receives the result of the 
  2916. decrement operation.  Thus, the operand must be a modifiable lvalue. 
  2917.  
  2918. You can place the -- before or after the operand.  If the -- appears before the 
  2919. operand, the operand is decremented, and then the decremented value is used in 
  2920. the expression.  If the -- appears after the operand, the current value of the 
  2921. operand is used in the expression and then the operand is decremented. 
  2922.  
  2923. For example: 
  2924.  
  2925. play = --play1 + play2--;
  2926.  
  2927. is equivalent to the following three expressions: 
  2928.  
  2929. play1 = play1 - 1;
  2930. play = play1 + play2;
  2931. play2 = play2 - 1;
  2932.  
  2933. The type of the decrement expression is the same type as that of the operand. 
  2934.  
  2935. Related Information 
  2936.  
  2937. o Increment  ++ 
  2938. o Subtraction  - 
  2939. o Unary Expression 
  2940. o Usual Arithmetic Conversions 
  2941.  
  2942.  
  2943. ΓòÉΓòÉΓòÉ 3.5.3. Unary Plus  + ΓòÉΓòÉΓòÉ
  2944.  
  2945. The + (unary plus) operator maintains the value of the operand.  The operand 
  2946. can have any arithmetic type.  The result is not an lvalue. 
  2947.  
  2948. The result of the unary plus expression has the same type as the operand after 
  2949. any integral promotions (for example, char to int). 
  2950.  
  2951. Note:  Any plus sign preceding a constant is not part of the constant. 
  2952.  
  2953. Related Information 
  2954.  
  2955. o Unary Minus  - 
  2956. o Unary Expression 
  2957. o Usual Arithmetic Conversions 
  2958.  
  2959.  
  2960. ΓòÉΓòÉΓòÉ 3.5.4. Unary Minus  - ΓòÉΓòÉΓòÉ
  2961.  
  2962. The - (unary minus) operator negates the value of the operand.  The operand can 
  2963. have any arithmetic type.  The result is not an lvalue. 
  2964.  
  2965. For example, if quality has the value 100, then -quality has the value -100. 
  2966.  
  2967. The result of the unary minus expression has the same type as the operand after 
  2968. any integral promotions (for example, char to int). 
  2969.  
  2970. Note:  Any minus sign preceding a constant is not part of the constant. 
  2971.  
  2972. Related Information 
  2973.  
  2974. o Unary Plus  + 
  2975. o Unary Expression 
  2976. o Usual Arithmetic Conversions 
  2977.  
  2978.  
  2979. ΓòÉΓòÉΓòÉ 3.5.5. Logical Negation  ! ΓòÉΓòÉΓòÉ
  2980.  
  2981. The ! (logical negation) operator determines whether the operand evaluates to 0 
  2982. (false) or nonzero (true). The expression yields the value 1 (true) if the 
  2983. operand evaluates to 0 and yields the value 0 (false) if the operand evaluates 
  2984. to a non-zero value. The operand must have a scalar data type, but the result 
  2985. of the operation has always type int and is not an lvalue. 
  2986.  
  2987. The following two expressions are equivalent: 
  2988.  
  2989. !right;
  2990. right == 0;
  2991.  
  2992. Related Information 
  2993.  
  2994. o Equality  ==  != 
  2995. o Relational  <  >  <=  >= 
  2996. o Unary Expression 
  2997. o Usual Arithmetic Conversions 
  2998.  
  2999.  
  3000. ΓòÉΓòÉΓòÉ 3.5.6. Bitwise Negation  ~ ΓòÉΓòÉΓòÉ
  3001.  
  3002. The ~ (bitwise negation) operator yields the bitwise complement of the operand. 
  3003. In the binary representation of the result, every bit has the opposite value of 
  3004. the same bit in the binary representation of the operand.  The operand must 
  3005. have an integral type.  The result has the same type as the operand but is not 
  3006. an lvalue. 
  3007.  
  3008. Suppose x represents the decimal value 5.  The  16-bit binary representation of 
  3009. x is: 
  3010.  
  3011. 0000000000000101
  3012.  
  3013. The expression ~x yields the following result (represented here as a 16-bit 
  3014. binary number): 
  3015.  
  3016. 1111111111111010
  3017. Note that the ~ character can be represented by the trigraph ??-. 
  3018.  
  3019. The 16-bit binary representation of ~0 is: 
  3020.  
  3021. 1111111111111111
  3022.  
  3023. Related Information 
  3024.  
  3025. o Bitwise Left and Right Shift  <<  >> 
  3026. o Bitwise AND  & 
  3027. o Bitwise Exclusive OR  ^ 
  3028. o Bitwise Inclusive OR  | 
  3029. o Unary Expression 
  3030. o Usual Arithmetic Conversions 
  3031.  
  3032.  
  3033. ΓòÉΓòÉΓòÉ 3.5.7. Address  & ΓòÉΓòÉΓòÉ
  3034.  
  3035. The & (address) operator yields a pointer to its operand.  The operand must be 
  3036. an lvalue or function designator.  It cannot be a bit-field or have the storage 
  3037. class specifier register.  The result is a pointer to an object or function 
  3038. having the type of the operand.  Thus, if the operand has type int, the result 
  3039. is a pointer to an object having type int.  The result is not an lvalue. 
  3040.  
  3041. If p_to_y is defined as a pointer to an int and y as an int, the following 
  3042. expression assigns the address of the variable y to the pointer p_to_y: 
  3043.  
  3044. p_to_y = &y;
  3045.  
  3046. Related Information 
  3047.  
  3048. o Pointers 
  3049. o Lvalue 
  3050. o register Storage Class Specifier 
  3051. o Unary Expression 
  3052.  
  3053.  
  3054. ΓòÉΓòÉΓòÉ 3.5.8. Indirection  * ΓòÉΓòÉΓòÉ
  3055.  
  3056. The * (indirection) operator determines the value referred to by the 
  3057. pointer-type operand.  The operand cannot be a pointer to void.  The operation 
  3058. yields an lvalue, or a function designator if the operand points to a function. 
  3059. Arrays and functions are converted to pointers. 
  3060.  
  3061. The type of the operand determines the type of the result.  Thus, if the 
  3062. operand is a pointer to an int, the result has type int. 
  3063.  
  3064. Do not apply the indirection operator to any pointer that contains an invalid 
  3065. address such as NULL.  The result of applying an indirection operator to such a 
  3066. pointer is not defined. 
  3067.  
  3068. If p_to_y is defined as a pointer to an int and y as an int, the expressions: 
  3069.  
  3070. p_to_y = &y;
  3071. *p_to_y = 3;
  3072.  
  3073. cause the variable y to receive the value 3. 
  3074.  
  3075. Related Information 
  3076.  
  3077. o Pointers 
  3078. o Lvalue 
  3079. o Functions 
  3080. o Unary Expression 
  3081.  
  3082.  
  3083. ΓòÉΓòÉΓòÉ 3.5.9. Cast ΓòÉΓòÉΓòÉ
  3084.  
  3085. A cast operator converts the type of the operand to a specified data type and 
  3086. performs the necessary conversions to the operand for the type. 
  3087.  
  3088. The cast operator is a parenthesized type specifier.  This type and the operand 
  3089. must be scalar;  the type may also be void. Conversions describes how the C 
  3090. language performs conversions.  The result has the type of the specified data 
  3091. type but is not an lvalue. 
  3092.  
  3093. The following expression contains a cast expression to convert an operand of 
  3094. type int to a value of type double: 
  3095.  
  3096. int x;
  3097. printf("x=%f\n", (double)x);
  3098.  
  3099. The function printf receives the value of x as a double.  The variable x 
  3100. remains unchanged by the cast. 
  3101.  
  3102. Related Information 
  3103.  
  3104. o Conversions 
  3105. o Types 
  3106. o Unary Expression 
  3107.  
  3108.  
  3109. ΓòÉΓòÉΓòÉ 3.5.10. Size of an Object (sizeof) ΓòÉΓòÉΓòÉ
  3110.  
  3111. The sizeof operator yields the size in bytes of the operand. The sizeof 
  3112. operation cannot be performed on a bit-field, a function, or an incomplete type 
  3113. such as void. The operand may be the parenthesized name of a type. 
  3114.  
  3115. The compiler must be able to evaluate the size at compile time. The expression 
  3116. is not evaluated;  there are no side effects. For example, the value of b is 5 
  3117. from initialization to program termination: 
  3118.  
  3119. #include <stdio.h>
  3120.  
  3121. int main(void){
  3122.   int b = 5;
  3123.   sizeof(b++);
  3124. }
  3125.  
  3126. The size of a char object is the size of a byte.  Given that the variable x has 
  3127. type char, the expression sizeof(x) always evaluates to 1. 
  3128.  
  3129. The result of a sizeof operation has type size_t.  size_t is an unsigned 
  3130. integral type defined in the <stddef.h> header. 
  3131.  
  3132. The compiler determines the size of an object on the basis of the object's 
  3133. definition.  The sizeof operator does not perform any conversions.  However, if 
  3134. the operand contains operators that perform conversions, the compiler takes 
  3135. these conversions into consideration.  The following expression causes the 
  3136. usual arithmetic conversions to be performed. The result of the expression 
  3137. x +1 has type int (if x has type char, short, or int or any enumeration type) 
  3138. and is equivalent to sizeof(int): 
  3139.  
  3140. sizeof (x + 1)
  3141.  
  3142. When you perform the sizeof operation on an array, the result is the total 
  3143. number of bytes in the array.  The compiler does not convert the array to a 
  3144. pointer before evaluating the expression. 
  3145.  
  3146. You can use a sizeof expression wherever a constant or unsigned constant is 
  3147. required.  One of the most common uses for the sizeof operator is to determine 
  3148. the size of objects that are being communicated to or from storage allocation, 
  3149. input, and output functions. 
  3150.  
  3151. For portability of code, you should use the sizeof operator to determine the 
  3152. size that a data type represents.  In this instance, the name of the data type 
  3153. must be placed in parentheses after the sizeof operator.  For example: 
  3154.  
  3155. sizeof(int)
  3156.  
  3157. Related Information 
  3158.  
  3159. o Constant Expression 
  3160. o Conversions 
  3161. o Types 
  3162. o -- Reference stddfh not found -- 
  3163. o Unary Expression 
  3164.  
  3165.  
  3166. ΓòÉΓòÉΓòÉ 3.6. Binary Expression ΓòÉΓòÉΓòÉ
  3167.  
  3168. A binary expression contains two operands separated by one operator. 
  3169.  
  3170. Not all binary operators have the same precedence. The table in the section 
  3171. Operator Precedence shows the order of precedence among operators.  All binary 
  3172. operators have left-to-right associativity. 
  3173.  
  3174. The order in which the operands of most binary operators are evaluated is not 
  3175. specified. Therefore, to ensure correct results, avoid creating binary 
  3176. expressions that depend on the order in which the compiler evaluates the 
  3177. operands. 
  3178.  
  3179. o Multiplication  * 
  3180. o Division  / 
  3181. o Remainder  % 
  3182. o Addition  + 
  3183. o Subtraction  - 
  3184. o Bitwise Left and Right Shift  <<  >> 
  3185. o Relational  <  >  <=  >= 
  3186. o Equality  ==  != 
  3187. o Bitwise AND  & 
  3188. o Bitwise Exclusive OR  ^ 
  3189. o Bitwise Inclusive OR  | 
  3190. o Logical AND  && 
  3191. o Logical OR  || 
  3192.  
  3193. Related Information 
  3194.  
  3195. o Unary Expression 
  3196. o Expressions and Operators 
  3197. o Operator Precedence 
  3198.  
  3199.  
  3200. ΓòÉΓòÉΓòÉ 3.6.1. Multiplication  * ΓòÉΓòÉΓòÉ
  3201.  
  3202. The * (multiplication) operator yields the product of its operands.  The 
  3203. operands must have an arithmetic type.  The result is not an lvalue. 
  3204.  
  3205. Because the multiplication operator has both associative and commutative 
  3206. properties, the compiler may rearrange the operands in an expression that 
  3207. contains more than one multiplication operator. For example, the expression 
  3208.  
  3209. sites * number * cost
  3210.  
  3211. can be interpreted in any of the following ways: 
  3212.  
  3213. (sites * number) * cost
  3214. sites * (number * cost)
  3215. (cost * sites) * number
  3216.  
  3217. Related Information 
  3218.  
  3219. o Division  / 
  3220. o Remainder  % 
  3221. o Binary Expression 
  3222. o Usual Arithmetic Conversions 
  3223.  
  3224.  
  3225. ΓòÉΓòÉΓòÉ 3.6.2. Division  / ΓòÉΓòÉΓòÉ
  3226.  
  3227. The / (division) operator yields the quotient of its operands.  The operands 
  3228. must have an arithmetic type. The result is not an lvalue. 
  3229.  
  3230. If both operands are positive integers and the operation produces a remainder, 
  3231. the remainder is ignored. Thus, the expression 7 / 4 yields the value 1 (rather 
  3232. than 1.75 or 2). 
  3233.  
  3234. For SAA-compliant compilers, including the C/C++ for OS/2 compiler, the result 
  3235. of -7 / 4 is -1 with a remainder of -3, assuming both -7 and 4 are signed.  If 
  3236. 4 is unsigned, -7 is converted to unsigned. 
  3237.  
  3238. The result is undefined if the second operand evaluates to 0 (zero). 
  3239.  
  3240. Related Information 
  3241.  
  3242. o Multiplication  * 
  3243. o Remainder  % 
  3244. o Binary Expression 
  3245. o Usual Arithmetic Conversions 
  3246.  
  3247.  
  3248. ΓòÉΓòÉΓòÉ 3.6.3. Remainder  % ΓòÉΓòÉΓòÉ
  3249.  
  3250. The % (remainder) operator yields the remainder from the division of the left 
  3251. operand by the right operand.  For example, the expression 5 % 3 yields 2.  The 
  3252. result is not an lvalue. 
  3253.  
  3254. Both operands must have an integral type.  If the right operand evaluates to 0 
  3255. (zero), the result is undefined.  If either operand has a negative value, the 
  3256. result is such that the following always holds true. The following expression 
  3257. always yields the value of a if b is not 0 (zero) and a/b is representable: 
  3258.  
  3259.    ( a / b ) * b + a % b;
  3260.  
  3261. Related Information 
  3262.  
  3263. o Multiplication  * 
  3264. o Division  / 
  3265. o Binary Expression 
  3266. o Usual Arithmetic Conversions 
  3267.  
  3268.  
  3269. ΓòÉΓòÉΓòÉ 3.6.4. Addition  + ΓòÉΓòÉΓòÉ
  3270.  
  3271. The + (addition) operator yields the sum of its operands.  Both operands must 
  3272. have an arithmetic type, or one operand must be a pointer to an object type and 
  3273. the other operand must have an integral type. 
  3274.  
  3275. When both operands have an arithmetic type, the usual arithmetic conversions on 
  3276. the operands are performed. The result has the type produced by the conversions 
  3277. on the operands and is not an lvalue. 
  3278.  
  3279. When one of the operands is a pointer, the compiler converts the other operand 
  3280. to an address offset. The result is a pointer of the same type as the pointer 
  3281. operand. 
  3282.  
  3283. Related Information 
  3284.  
  3285. o Pointers 
  3286. o Unary Plus  + 
  3287. o Subtraction  - 
  3288. o Binary Expression 
  3289. o Usual Arithmetic Conversions 
  3290.  
  3291.  
  3292. ΓòÉΓòÉΓòÉ 3.6.5. Subtraction  - ΓòÉΓòÉΓòÉ
  3293.  
  3294. The - (subtraction) operator yields the difference of its operands.  Both 
  3295. operands must have an arithmetic type, or the left operand must have a pointer 
  3296. type and the right operand must have the same pointer type or an integral type. 
  3297.  
  3298. When both operands have an arithmetic type, the usual arithmetic conversions on 
  3299. the operands are performed. The result has the type produced by the conversions 
  3300. on the operands and is not an lvalue. 
  3301.  
  3302. When the left operand is a pointer and the right operand has an integral type, 
  3303. the compiler converts the value of the right operand to an address offset. The 
  3304. result is a pointer of the same type as the pointer operand. 
  3305.  
  3306. If both operands are pointers to the same type, the compiler converts the 
  3307. result to an integral type that represents the number of objects separating the 
  3308. two addresses. Behavior is undefined if the pointers do not refer to objects in 
  3309. the same array. 
  3310.  
  3311. Related Information 
  3312.  
  3313. o Pointers 
  3314. o Unary Minus  - 
  3315. o Addition  + 
  3316. o Binary Expression 
  3317. o Usual Arithmetic Conversions 
  3318.  
  3319.  
  3320. ΓòÉΓòÉΓòÉ 3.6.6. Bitwise Left and Right Shift  <<  >> ΓòÉΓòÉΓòÉ
  3321.  
  3322. The bitwise shift operators move the bit values of a binary object.  The left 
  3323. operand specifies the value to be shifted.  The right operand specifies the 
  3324. number of positions that the bits in the value are to be shifted.  The result 
  3325. is not an lvalue. 
  3326.  
  3327. The << (bitwise left shift) operator indicates the bits are to be shifted to 
  3328. the left.  The >> (bitwise right shift) operator indicates the bits are to be 
  3329. shifted to the right. 
  3330.  
  3331. Each operand must have an integral type.  The compiler performs integral 
  3332. promotions on the operands.  Then the right operand is converted to type int. 
  3333. The result has the same type as the left operand (after the arithmetic 
  3334. conversions). 
  3335.  
  3336. If the right operand has a negative value or a value that is greater than or 
  3337. equal to the width in bits of the expression being shifted, the result is 
  3338. undefined. 
  3339.  
  3340. If the right operand has the value 0 (zero), the result is the value of the 
  3341. left operand (after the usual arithmetic conversions). 
  3342.  
  3343. The << operator fills vacated bits with zeros.  For example, if l_op has the 
  3344. value 4019, the bit pattern (in 16-bit format) of l_op is: 
  3345.  
  3346. 0000111110110011
  3347.  
  3348. The expression l_op << 3 yields: 
  3349.  
  3350. 0111110110011000
  3351.  
  3352. If the left operand has an unsigned type, the >> operator fills vacated bits 
  3353. with zeros.  Otherwise, the compiler will fill the vacated bits of a signed 
  3354. value with a copy of the value's sign bit. For example, if l_op has the value 
  3355. -25, the bit pattern (in 16-bit format) of l_op is: 
  3356.  
  3357. 1111111111100111
  3358.  
  3359. The expression l_op >> 3 yields: 
  3360.  
  3361. 1111111111111100
  3362.  
  3363. Related Information 
  3364.  
  3365. o Bitwise Negation  ~ 
  3366. o Bitwise AND  & 
  3367. o Bitwise Exclusive OR  ^ 
  3368. o Bitwise Inclusive OR  | 
  3369. o Binary Expression 
  3370. o Usual Arithmetic Conversions 
  3371.  
  3372.  
  3373. ΓòÉΓòÉΓòÉ 3.6.7. Relational  <  >  <=  >= ΓòÉΓòÉΓòÉ
  3374.  
  3375. The relational operators compare two operands and determine the validity of a 
  3376. relationship.  If the relationship stated by the operator is true, the value of 
  3377. the result is 1.  Otherwise, the value of the result is 0. 
  3378.  
  3379. The following table describes the relational operators: 
  3380.  
  3381. Operator   Usage 
  3382.  
  3383. <          Indicates whether the value of the left operand is less than the 
  3384.            value of the right operand. 
  3385.  
  3386. >          Indicates whether the value of the left operand is greater than the 
  3387.            value of the right operand. 
  3388.  
  3389. <=         Indicates whether the value of the left operand is less than or 
  3390.            equal to the value of the right operand. 
  3391.  
  3392. >=         Indicates whether the value of the left operand is greater than or 
  3393.            equal to the value of the right operand. 
  3394.  
  3395. Both operands must have arithmetic types or be pointers to the same type.  The 
  3396. result has type int. If the operands have arithmetic types, the usual 
  3397. arithmetic conversions on the operands are performed. 
  3398.  
  3399. When the operands are pointers, the result is determined by the locations of 
  3400. the objects to which the pointers refer.  If the pointers do not refer to 
  3401. objects in the same array, the result is not defined. 
  3402.  
  3403. Relational operators have left-to-right associativity.  Therefore, the 
  3404. expression: 
  3405.  
  3406. a < b <= c
  3407.  
  3408. is interpreted as: 
  3409.  
  3410. (a < b) <= c
  3411.  
  3412. If the value of a is less than the value of b, the first relationship is true 
  3413. and yields the value 1 (one).  The compiler then compares the value 1 (one) 
  3414. with the value of c. 
  3415.  
  3416. Related Information 
  3417.  
  3418. o Equality  ==  != 
  3419. o Logical Negation  ! 
  3420. o Pointers 
  3421. o Binary Expression 
  3422. o Usual Arithmetic Conversions 
  3423.  
  3424.  
  3425. ΓòÉΓòÉΓòÉ 3.6.8. Equality  ==  != ΓòÉΓòÉΓòÉ
  3426.  
  3427. :isyn root=equal.equal equals equality inequality 
  3428.  
  3429. The equality operators, like the relational operators, compare two operands for 
  3430. the validity of a relationship.  The equality operators, however, have a lower 
  3431. precedence than the relational operators.  If the relationship stated by an 
  3432. equality operator is true, the value of the result is 1 (one).  Otherwise, the 
  3433. value of the result is 0 (zero). 
  3434.  
  3435. The following table describes the equality operators: 
  3436.  
  3437. Operator   Usage 
  3438.  
  3439. ==         Indicates whether the value of the left operand is equal to the 
  3440.            value of the right operand. 
  3441.  
  3442. !=         Indicates whether the value of the left operand is not equal to the 
  3443.            value of the right operand. 
  3444.  
  3445. Both operands must have arithmetic types or be pointers to the same type, or 
  3446. one operand must have a pointer type and the other operand must be a pointer to 
  3447. void or NULL.  The result has type int. 
  3448.  
  3449. If the operands have arithmetic types, the usual arithmetic conversions on the 
  3450. operands are performed. If the operands are pointers, the result is determined 
  3451. by the locations of the objects to which the pointers refer. 
  3452.  
  3453. If one operand is a pointer and the other operand is an integer having the 
  3454. value 0 (zero), the expression is true only if the pointer operand evaluates to 
  3455. NULL. 
  3456.  
  3457. Note:  The equality operator (==) should not be confused with the assignment 
  3458. operator (=). For example, 
  3459.  
  3460.   if(x == 3) evaluates to 1 if x is equal to three
  3461. while
  3462.   if(x = 3) always evaluates to 1 and assigns the value 3 to x.
  3463.  
  3464. Related Information 
  3465.  
  3466. o Relational  <  >  <=  >= 
  3467. o Logical Negation  ! 
  3468. o Pointers 
  3469. o Binary Expression 
  3470. o Usual Arithmetic Conversions 
  3471.  
  3472.  
  3473. ΓòÉΓòÉΓòÉ 3.6.9. Bitwise AND  & ΓòÉΓòÉΓòÉ
  3474.  
  3475. The & (bitwise AND) operator compares each bit of its first operand to the 
  3476. corresponding bit of the second operand.  If both bits are 1's, the 
  3477. corresponding bit of the result is set to 1.  Otherwise, it sets the 
  3478. corresponding result bit to 0. 
  3479.  
  3480. Both operands must have an integral type.  The usual arithmetic conversions on 
  3481. each operand are performed. The result has the same type as the converted 
  3482. operands. 
  3483.  
  3484. Because the bitwise AND operator has both associative and commutative 
  3485. properties, the compiler may rearrange the operands in an expression that 
  3486. contains more than one bitwise AND operator. 
  3487.  
  3488. The following example shows the values of a, b, and the result of a & b 
  3489. represented as 16-bit binary numbers: 
  3490.  
  3491. bit pattern of a              0000000001011100 
  3492. bit pattern of b              0000000000101110 
  3493. bit pattern of a & b          0000000000001100 
  3494.  
  3495. Note:  The bitwise AND (&) should not be confused with the logical AND (&&) 
  3496. operator.  For example, 
  3497.  
  3498.   1 & 4 evaluates to 0
  3499. while
  3500.   1 && 4 evaluates to 1
  3501.  
  3502. Related Information 
  3503.  
  3504. o Bitwise Exclusive OR  ^ 
  3505. o Bitwise Inclusive OR  | 
  3506. o Logical AND  && 
  3507. o Binary Expression 
  3508. o Usual Arithmetic Conversions 
  3509.  
  3510.  
  3511. ΓòÉΓòÉΓòÉ 3.6.10. Bitwise Exclusive OR  ^ ΓòÉΓòÉΓòÉ
  3512.  
  3513. The bitwise exclusive OR operator (in EBCDIC, the ^ symbol is represented by 
  3514. the ╨║ symbol) compares each bit of its first operand to the corresponding bit 
  3515. of the second operand.  If both bits are 1's or both bits are 0's, the 
  3516. corresponding bit of the result is set to 0.  Otherwise, it sets the 
  3517. corresponding result bit to 1. 
  3518.  
  3519. Both operands must have an integral type.  The usual arithmetic conversions on 
  3520. each operand are performed. The result has the same type as the converted 
  3521. operands and is not an lvalue. 
  3522.  
  3523. Because the bitwise exclusive OR operator has both associative and commutative 
  3524. properties, the compiler may rearrange the operands in an expression that 
  3525. contains more than one bitwise exclusive OR operator. Note that the ^ character 
  3526. can be represented by the trigraph ??'. 
  3527.  
  3528. The following example shows the values of a, b, and the result of a ^ b 
  3529. represented as 16-bit binary numbers: 
  3530.  
  3531. bit pattern of a              0000000001011100 
  3532. bit pattern of b              0000000000101110 
  3533. bit pattern of a ^ b          0000000001110010 
  3534.  
  3535. Related Information 
  3536.  
  3537. o Bitwise Inclusive OR  | 
  3538. o Bitwise AND  & 
  3539. o Logical OR  || 
  3540. o Binary Expression 
  3541. o Usual Arithmetic Conversions 
  3542.  
  3543.  
  3544. ΓòÉΓòÉΓòÉ 3.6.11. Bitwise Inclusive OR  | ΓòÉΓòÉΓòÉ
  3545.  
  3546. The | (bitwise inclusive OR) operator compares the values (in binary format) of 
  3547. each operand and yields a value whose bit pattern shows which bits in either of 
  3548. the operands had the value 1. If both of the bits are 0, the result of that bit 
  3549. is 0;  otherwise, the result is 1 (one). 
  3550.  
  3551. Both operands must have an integral type.  The usual arithmetic conversions on 
  3552. each operand are performed. The result has the same type as the converted 
  3553. operands and is not an lvalue. 
  3554.  
  3555. Because the bitwise inclusive OR operator has both associative and commutative 
  3556. properties, the compiler may rearrange the operands in an expression that 
  3557. contains more than one bitwise inclusive OR operator. Note that the | character 
  3558. can be represented by the trigraph ??!. 
  3559.  
  3560. The following example shows the values of a, b, and the result of a | b 
  3561. represented as 16-bit binary numbers: 
  3562.  
  3563. bit pattern of a              0000000001011100 
  3564. bit pattern of b              0000000000101110 
  3565. bit pattern of a | b          0000000001111110 
  3566.  
  3567. Note:  The bitwise OR (|) should not be confused with the logical OR (||) 
  3568. operator.  For example, 
  3569.  
  3570.   1 | 4 evaluates to 5
  3571. while
  3572.   1 || 4 evaluates to 1
  3573.  
  3574. Related Information 
  3575.  
  3576. o Bitwise Exclusive OR  ^ 
  3577. o Bitwise AND  & 
  3578. o Logical OR  || 
  3579. o Binary Expression 
  3580. o Usual Arithmetic Conversions 
  3581.  
  3582.  
  3583. ΓòÉΓòÉΓòÉ 3.6.12. Logical AND  && ΓòÉΓòÉΓòÉ
  3584.  
  3585. The && (logical AND) operator indicates whether both operands have a nonzero 
  3586. value.  If both operands have nonzero values, the result has the value 1 (one). 
  3587. Otherwise, the result has the value 0 (zero). 
  3588.  
  3589. Both operands must have a scalar type.  The usual arithmetic conversions on 
  3590. each operand are performed. The result has type int and is not an lvalue. 
  3591.  
  3592. The logical AND operator guarantees left-to-right evaluation of the operands. 
  3593. If the left operand evaluates to 0 (zero), the right operand is not evaluated. 
  3594.  
  3595. The following examples show how the expressions that contain the logical AND 
  3596. operator are evaluated: 
  3597.  
  3598. Expression          Result 
  3599. 1 && 0              0 
  3600. 1 && 4              1 
  3601. 0 && 0              0 
  3602.  
  3603. The following example uses the logical AND operator to avoid a divide-by-zero 
  3604. situation: 
  3605.  
  3606. y && (x / y)
  3607.  
  3608. The expression x / y is not evaluated when y is 0. 
  3609.  
  3610. Note:  The logical AND (&&) should not be confused with the inf.bitwise AND (&) 
  3611. operator.  For example, 
  3612.  
  3613.   1 && 4 evaluates to 1
  3614. while
  3615.   1 & 4 evaluates to 0
  3616.  
  3617. Related Information 
  3618.  
  3619. o Logical OR  || 
  3620. o Bitwise AND  & 
  3621. o Binary Expression 
  3622. o Usual Arithmetic Conversions 
  3623.  
  3624.  
  3625. ΓòÉΓòÉΓòÉ 3.6.13. Logical OR  || ΓòÉΓòÉΓòÉ
  3626.  
  3627. The || (logical OR) operator indicates whether either operand has a nonzero 
  3628. value.  If either operand has a nonzero value, the result has the value 1 
  3629. (one).  Otherwise, the result has the value 0 (zero). 
  3630.  
  3631. Both operands must have a scalar type.  The the usual arithmetic conversions on 
  3632. each operand are performed. The result has type int and is not an lvalue. 
  3633.  
  3634. The logical OR operator guarantees left-to-right evaluation of the operands. 
  3635. If the left operand has a nonzero value, the right operand is not evaluated. 
  3636.  
  3637. The following examples show how expressions that contain the logical OR 
  3638. operator are evaluated: 
  3639.  
  3640. Expression          Result 
  3641. 1 || 0              1 
  3642. 1 || 4              1 
  3643. 0 || 0              0 
  3644.  
  3645. The following example uses the logical OR operator to conditionally increment 
  3646. y: 
  3647.  
  3648. ++x || ++y;
  3649.  
  3650. The expression ++y is not evaluated when the expression ++x evaluates to a 
  3651. nonzero quantity. 
  3652.  
  3653. Note:  The logical OR (||) should not be confused with the inf.bitwise OR (|) 
  3654. operator.  For example, 
  3655.  
  3656.   1 || 4 evaluates to 1
  3657. while
  3658.   1 | 4 evaluates to 5
  3659.  
  3660. Related Information 
  3661.  
  3662. o Logical AND  && 
  3663. o Bitwise Inclusive OR  | 
  3664. o Binary Expression 
  3665. o Usual Arithmetic Conversions 
  3666.  
  3667.  
  3668. ΓòÉΓòÉΓòÉ 3.7. Conditional Expression  ? : ΓòÉΓòÉΓòÉ
  3669.  
  3670. A conditional expression is a compound expression that contains a condition 
  3671. (the first expression), an expression to be evaluated if the condition has a 
  3672. nonzero value (the second expression), and an expression to be evaluated if the 
  3673. condition has the value 0 (zero). 
  3674.  
  3675. The conditional expression contains one two-part operator.  The ? symbol 
  3676. follows the condition, and the : symbol appears between the two action 
  3677. expressions. All expressions that occur between the ? and : are treated as one 
  3678. expression. 
  3679.  
  3680. The first operand must have a scalar type.  The second and third operands must 
  3681. have arithmetic types, compatible structure type, compatible union type, or 
  3682. compatible pointer type.  A type is compatible when it has the same type but 
  3683. not necessarily the same qualifiers (volatile, const, or _Packed). Also, the 
  3684. second and third operands may be a pointer and a NULL pointer constant, or a 
  3685. pointer to an object and a pointer to void. 
  3686.  
  3687. The first expression is evaluated first. If the first expression has a nonzero 
  3688. value, the second expression is evaluated and the third operand is not 
  3689. evaluated. and its result is converted to the result type. If the expression is 
  3690. an arithmetic type, the usual arithmetic conversions on the second expression 
  3691. are performed. If the first expression has a zero value, the third expression 
  3692. is evaluated with the usual arithmetic conversions performed on it if it has an 
  3693. arithmetic type. The types of the second and third operands determine the type 
  3694. of the result as shown in the following table. 
  3695.  
  3696. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3697. Γöé TYPE OF ONE OPERAND Γöé TYPE OF OTHER       Γöé TYPE OF RESULT     Γöé
  3698. Γöé                     Γöé OPERAND             Γöé                    Γöé
  3699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3700. Γöé Arithmetic          Γöé Arithmetic          Γöé Arithmetic after   Γöé
  3701. Γöé                     Γöé                     Γöé usual arithmetic   Γöé
  3702. Γöé                     Γöé                     Γöé conversions        Γöé
  3703. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3704. Γöé "struct/union" type Γöé Compatible          Γöé "struct/union"     Γöé
  3705. Γöé                     Γöé "struct/union" type Γöé type with all the  Γöé
  3706. Γöé                     Γöé                     Γöé qualifiers on both Γöé
  3707. Γöé                     Γöé                     Γöé operands           Γöé
  3708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3709. Γöé "void"              Γöé "void"              Γöé "void"             Γöé
  3710. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3711. Γöé Pointer to compat-  Γöé Pointer to compat-  Γöé Pointer to type    Γöé
  3712. Γöé ible type           Γöé ible type           Γöé with all the qual- Γöé
  3713. Γöé                     Γöé                     Γöé ifiers specified   Γöé
  3714. Γöé                     Γöé                     Γöé for the type       Γöé
  3715. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3716. Γöé Pointer to type     Γöé "NULL" pointer      Γöé Pointer to type    Γöé
  3717. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3718. Γöé Pointer to object   Γöé Pointer to "void"   Γöé Pointer to "void"  Γöé
  3719. Γöé or incomplete type  Γöé                     Γöé with all the qual- Γöé
  3720. Γöé                     Γöé                     Γöé ifiers specified   Γöé
  3721. Γöé                     Γöé                     Γöé for the type       Γöé
  3722. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3723.          Type of the Conditional Expression
  3724.  
  3725. Conditional expressions have right-to-left associativity. 
  3726.  
  3727. Examples of Conditional Expressions 
  3728.  
  3729. Related Information 
  3730.  
  3731. o Types 
  3732. o Declarators 
  3733. o Expressions and Operators 
  3734. o Usual Arithmetic Conversions 
  3735. o Operator Precedence 
  3736.  
  3737.  
  3738. ΓòÉΓòÉΓòÉ 3.8. Assignment Expression ΓòÉΓòÉΓòÉ
  3739.  
  3740. An assignment expression stores a value in the object designated by the left 
  3741. operand. 
  3742.  
  3743. The left operand in all assignment expressions must be a modifiable lvalue. 
  3744. The type of the expression is the type of the left operand.  The value of the 
  3745. expression is the value of the left operand after the assignment has completed. 
  3746. The result of an assignment expression is not an lvalue. 
  3747.  
  3748. All assignment operators have the same precedence and have right-to-left 
  3749. associativity. 
  3750.  
  3751. There are two types of assignment operators, simple assignment and compound 
  3752. assignment operators.  The following sections describe these operators. 
  3753.  
  3754. o Simple Assignment  = 
  3755. o Compound Assignment 
  3756.  
  3757. Related Information 
  3758.  
  3759. o Expressions and Operators 
  3760. o Operator Precedence 
  3761.  
  3762.  
  3763. ΓòÉΓòÉΓòÉ 3.8.1. Simple Assignment  = ΓòÉΓòÉΓòÉ
  3764.  
  3765. The simple assignment operator stores the value of the right operand in the 
  3766. object designated by the left operand. 
  3767.  
  3768. Both operands must have arithmetic types, the same structure type, or the same 
  3769. union type.  Otherwise, both operands must be pointers to the same type, or the 
  3770. left operand must be a pointer and the right operand must be the constant 0 
  3771. (zero) or NULL. 
  3772.  
  3773. If both operands have arithmetic types, the system converts the type of the 
  3774. right operand to the type of the left operand before the assignment. 
  3775.  
  3776. If the left operand is a pointer and the right operand is the constant 0 
  3777. (zero), the result is NULL. 
  3778.  
  3779. Pointers to void can appear on either side of the simple assignment operator. 
  3780.  
  3781. A packed structure or union can be assigned to a nonpacked structure or union 
  3782. of the same type, and vice versa. 
  3783.  
  3784. If one operand is packed and the other is not, the layout of the right operand 
  3785. is remapped to match the layout of the left.  This remapping of structures may 
  3786. degrade performance.  For efficiency, when you perform assignment operations 
  3787. with structures or unions, you should ensure that both operands are either 
  3788. packed or nonpacked. 
  3789.  
  3790. Note:  If you assign pointers to structures or unions, the objects they point 
  3791. to must both be either packed or nonpacked.  See Pointers for more information 
  3792. on assignments with pointers. 
  3793.  
  3794. You can assign values to operands with the type qualifier volatile. You cannot 
  3795. assign a pointer of an object with the type qualifier const to a pointer of an 
  3796. object without the const type qualifier such as in the following example: 
  3797.  
  3798. const int *p1;
  3799. int *p2;
  3800. p2 = p1;  /* is not allowed */
  3801.  
  3802. p1 = p2;  /* note that this is allowed */
  3803.  
  3804. Examples of Simple Assignments 
  3805.  
  3806. Note:  The assignment (=) operator should not be confused with the inf.equality 
  3807. (==) operator. For example, 
  3808.  
  3809.   if(x == 3) evaluates to 1 if x is equal to three
  3810. while
  3811.   if(x = 3) always evaluates to 1 and assigns the value 3 to x.
  3812.  
  3813. Related Information 
  3814.  
  3815. o Compound Assignment 
  3816. o Equality  ==  != 
  3817. o Pointers 
  3818. o volatile and const Qualifiers 
  3819. o Types 
  3820. o Usual Arithmetic Conversions 
  3821.  
  3822.  
  3823. ΓòÉΓòÉΓòÉ 3.8.2. Compound Assignment ΓòÉΓòÉΓòÉ
  3824.  
  3825. The compound assignment operators consist of a binary operator and the simple 
  3826. assignment operator. They perform the operation of the binary operator on both 
  3827. operands and give the result of that operation to the left operand. 
  3828.  
  3829. If the left operand of the += and -= operators is a pointer, the right operand 
  3830. must have an integral type;  otherwise, both operands must have an arithmetic 
  3831. type. 
  3832.  
  3833. Both operands of the *=, /=, and %= operators must have an arithmetic type. 
  3834.  
  3835. Both operands of the <<=, >>=, &=, ^=, and |= operators must have an integral 
  3836. type. 
  3837.  
  3838. Note that the expression a *= b + c is equivalent to a = a * (b + c), and not 
  3839. a = a * b + c. 
  3840.  
  3841. The following table lists the compound assignment operators and shows an 
  3842. expression using each operator: 
  3843.  
  3844. Operator    Example 
  3845.  
  3846. +=          index += 2 
  3847.                Equivalent expression:  index = index + 2 
  3848.  
  3849. -=          *(pointer++) -= 1 
  3850.                Equivalent expression:  *pointer = *(pointer++) - 1 
  3851.  
  3852. *=          bonus *= increase 
  3853.                Equivalent expression:  bonus = bonus * increase 
  3854.  
  3855. /=          time /= hours 
  3856.                Equivalent expression:  time = time / hours 
  3857.  
  3858. %=          allowance %= 1000 
  3859.                Equivalent expression:  allowance = allowance % 1000 
  3860.  
  3861. <<=         result <<= num 
  3862.                Equivalent expression:  result = result << num 
  3863.  
  3864. >>=         form >>= 1 
  3865.                Equivalent expression:  form = form >> 1 
  3866.  
  3867. &=          mask &= 2 
  3868.                Equivalent expression:  mask = mask & 2 
  3869.  
  3870. ^=          test ^= pre_test 
  3871.                Equivalent expression:  test = test ^ pre_test 
  3872.  
  3873. |=          flag |= ON 
  3874.                Equivalent expression:  flag = flag | ON 
  3875.  
  3876. Although the equivalent expression column shows the left operands (from the 
  3877. example column) evaluated twice, the left operand is evaluated only once. 
  3878.  
  3879. Related Information 
  3880.  
  3881. o Simple Assignment  = 
  3882. o Binary Expression 
  3883.  
  3884.  
  3885. ΓòÉΓòÉΓòÉ 3.9. Comma Expression  , ΓòÉΓòÉΓòÉ
  3886.  
  3887. A comma expression contains two operands separated by a comma.  Although the 
  3888. compiler evaluates both operands, the value of the right operand is the value 
  3889. of the expression.  The left operand is evaluated, possibly producing side 
  3890. effects, and then the value is discarded.  The result of a comma expression is 
  3891. not an lvalue. 
  3892.  
  3893. Both operands of a comma expression can have any type.  All comma expressions 
  3894. have left-to-right associativity. The left operand is fully evaluated before 
  3895. the right operand. 
  3896.  
  3897. If omega had the value 11, the following example would increment y and assign 
  3898. the value 3 to alpha: 
  3899.  
  3900. alpha = (y++, omega % 4);
  3901.  
  3902. Any number of expressions separated by commas can form a single expression. 
  3903. The compiler evaluates the leftmost expression first.  The value of the 
  3904. rightmost expression becomes the value of the entire expression.  For example, 
  3905. the value of the following expression is rotate(direction): 
  3906.  
  3907. intensity++, shade * increment, rotate(direction);
  3908.  
  3909. Restrictions 
  3910. You can place comma expressions within lists that contain commas (for example, 
  3911. argument lists and initializer lists).  However, because the comma has a 
  3912. special meaning, you must place parentheses around comma expressions in these 
  3913. lists.  The comma expression t = 3, t + 2 is in the following function call: 
  3914.  
  3915. f(a, (t = 3, t + 2), c);
  3916.  
  3917. The arguments to the function f are:  the value of a, the value 5, and the 
  3918. value of c. 
  3919.  
  3920. Related Information 
  3921.  
  3922. o Expressions and Operators 
  3923. o Operator Precedence 
  3924.  
  3925.  
  3926. ΓòÉΓòÉΓòÉ 3.10. Conversions ΓòÉΓòÉΓòÉ
  3927.  
  3928. Many C language operators cause conversions.  A conversion changes the form of 
  3929. a value and its type. For example, when you add values having different data 
  3930. types, the compiler converts the types of the objects to the same type before 
  3931. adding the values.  Addition of a short int value and an int value causes the 
  3932. compiler to convert the short int value to the int type. 
  3933.  
  3934. Conversions may occur, for example, when: 
  3935.  
  3936. o A cast operation is performed. 
  3937. o An operand is prepared for an arithmetic or logical operation. 
  3938. o An assignment is made to an lvalue that has different type from the assigned 
  3939.   value. 
  3940. o A prototyped function is given an argument that has a different type from the 
  3941.   parameter. 
  3942. o The type of the expression specified on a function's return statement has a 
  3943.   different type from the defined return type for the function. 
  3944.  
  3945. Although the C language contains some guidelines for conversions, many 
  3946. conversions contain implementation specific aspects.  These implementation 
  3947. specific aspects occur because: 
  3948.  
  3949. o The sizes of the data types vary. 
  3950. o The manner of handling signed data varies. 
  3951. o The data formats vary. 
  3952.  
  3953. The following sections describe conversions: 
  3954.  
  3955. o Usual Arithmetic Conversions 
  3956. o Type Conversions 
  3957.  
  3958. Related Information 
  3959.  
  3960. o Expressions and Operators 
  3961. o Types 
  3962. o Cast 
  3963. o Functions 
  3964.  
  3965.  
  3966. ΓòÉΓòÉΓòÉ 3.10.1. Usual Arithmetic Conversions ΓòÉΓòÉΓòÉ
  3967.  
  3968. Most C operators perform type conversions to bring the operands of an 
  3969. expression to a common type or to extend short values to the integer size used 
  3970. in machine operations.  The conversions performed by C operators depend on the 
  3971. specific operator and the type of the operand or operands.  However, many 
  3972. operators perform similar conversions on operands of integer and floating-point 
  3973. types.  These conversions are known as standard arithmetic conversions because 
  3974. they apply to the types of values ordinarily used in arithmetic. 
  3975.  
  3976. Integer promotions are performed when you use a char, short int, int bit-field 
  3977. or an enumeration type wherever an int or unsigned int is expected. If an int 
  3978. can hold the value, the value is converted to an int  otherwise, it is 
  3979. converted to an unsigned int. All other arithmetic types are unchanged by 
  3980. integer promotions. 
  3981.  
  3982. Type Conversions outlines the path of each type of conversion. 
  3983.  
  3984. Arithmetic conversion proceeds in the following order: 
  3985.  
  3986.  1. If one operand has long double type, the other operand is converted to long 
  3987.     double type. 
  3988.  
  3989.  2. If one operand has double type, the other operand is converted to double. 
  3990.  
  3991.  3. If one operand has float type, the other operand is converted to float. 
  3992.  
  3993.  4. If one operand has unsigned long int type, the other operand is converted 
  3994.     to unsigned long int. 
  3995.  
  3996.  5. If one operand has unsigned int type and the other operand has long int 
  3997.     type and the value of the unsigned int can be represented in a long int, 
  3998.     the operand with unsigned int type is converted to long int. 
  3999.  
  4000.  6. If one operand has unsigned int type and the other operand has long int 
  4001.     type and the value of the unsigned int cannot be represented in a long int, 
  4002.     both operands are converted to unsigned long int. 
  4003.  
  4004.  7. If one operand has long int type, the other operand is converted to long 
  4005.     int. 
  4006.  
  4007.  8. If one operand has unsigned int type, the other operand is converted to 
  4008.     unsigned int. 
  4009.  
  4010.  9. Both operands have int type, and the result is type int. 
  4011.  
  4012. Related Information 
  4013.  
  4014. o Type Conversions 
  4015. o Types 
  4016. o Expressions and Operators 
  4017.  
  4018.  
  4019. ΓòÉΓòÉΓòÉ 3.10.2. Type Conversions ΓòÉΓòÉΓòÉ
  4020.  
  4021. Type conversions are the assignment of a value to a variable of a different 
  4022. data type, when 
  4023.  
  4024. o a value is explicitly cast to another type, 
  4025. o an operator converts the type of its operand or operands before performing an 
  4026.   operation, 
  4027. o a value is passed as an argument to a function. 
  4028.  
  4029. The following sections outline the rules governing each kind of conversion. 
  4030.  
  4031. Assignment Conversions 
  4032.  
  4033. In assignment operations, the type of the value being assigned is converted to 
  4034. the type of the variable receiving the assignment.  C allows conversions by 
  4035. assignment between integer and floating-point types, even when the conversion 
  4036. entails loss of information. 
  4037.  
  4038. On IBM C compilers, int types are handled in the same manner as long types. 
  4039.  
  4040. The methods of carrying out the conversions depend upon the type: 
  4041.  
  4042. o Conversion from Signed Integer Types 
  4043. o Conversion from Unsigned Integer Types 
  4044. o Conversion from Floating-Point Types 
  4045. o Conversion to and from Pointer Types 
  4046. o Conversion from Other Types 
  4047.  
  4048. Related Information 
  4049.  
  4050. o Types 
  4051. o Expressions and Operators 
  4052. o Cast 
  4053. o Usual Arithmetic Conversions 
  4054.  
  4055.  
  4056. ΓòÉΓòÉΓòÉ 3.10.3. Conversion from Signed Integer Types ΓòÉΓòÉΓòÉ
  4057.  
  4058. :isyn root=convert.convert converting conversion 
  4059.  
  4060. C converts a signed integer to a shorter signed integer by truncating the 
  4061. high-order bits and converting to a longer signed integer by sign-extension. 
  4062. Conversion of signed integers to floating-point values takes place without loss 
  4063. of information, except that some precision can be lost when a long value is 
  4064. converted to a float.  To convert a signed integer to an unsigned integer, the 
  4065. signed integer is converted to the size of the unsigned integer and the result 
  4066. is interpreted as an unsigned value. 
  4067.  
  4068. The following chart summarizes conversions from signed integer types: 
  4069.  
  4070. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4071. Γöé FROM         Γöé TO           Γöé METHOD                    Γöé
  4072. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4073. Γöé "signed      Γöé "short"      Γöé Sign-extend.              Γöé
  4074. Γöé char"        Γöé              Γöé                           Γöé
  4075. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4076. Γöé              Γöé "int"        Γöé Sign-extend.              Γöé
  4077. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4078. Γöé              Γöé "long"       Γöé Sign-extend.              Γöé
  4079. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4080. Γöé              Γöé "unsigned    Γöé Preserve pattern; high-   Γöé
  4081. Γöé              Γöé char"        Γöé order bit loses function  Γöé
  4082. Γöé              Γöé              Γöé as sign bit.              Γöé
  4083. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4084. Γöé              Γöé "unsigned    Γöé Sign-extend to "short";   Γöé
  4085. Γöé              Γöé short"       Γöé convert "short" to        Γöé
  4086. Γöé              Γöé              Γöé "unsigned short".         Γöé
  4087. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4088. Γöé              Γöé "unsigned    Γöé Sign-extend to "long";    Γöé
  4089. Γöé              Γöé long"        Γöé convert "long" to         Γöé
  4090. Γöé              Γöé              Γöé "unsigned long".          Γöé
  4091. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4092. Γöé              Γöé "float"      Γöé Sign-extend to "long";    Γöé
  4093. Γöé              Γöé              Γöé convert "long" to         Γöé
  4094. Γöé              Γöé              Γöé "float".                  Γöé
  4095. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4096. Γöé              Γöé "double"     Γöé Sign-extend to "long";    Γöé
  4097. Γöé              Γöé              Γöé convert "long" to         Γöé
  4098. Γöé              Γöé              Γöé "double".                 Γöé
  4099. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4100. Γöé              Γöé "long        Γöé Sign-extend to "long";    Γöé
  4101. Γöé              Γöé double"      Γöé convert "long" to "long   Γöé
  4102. Γöé              Γöé              Γöé double".                  Γöé
  4103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4104. Γöé "short"      Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4105. Γöé              Γöé char"        Γöé                           Γöé
  4106. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4107. Γöé              Γöé "int"        Γöé Sign-extend.              Γöé
  4108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4109. Γöé              Γöé "long"       Γöé Sign-extend.              Γöé
  4110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4111. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4112. Γöé              Γöé char"        Γöé                           Γöé
  4113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4114. Γöé              Γöé "unsigned    Γöé Preserve bit pattern;     Γöé
  4115. Γöé              Γöé short"       Γöé high-order bit loses      Γöé
  4116. Γöé              Γöé              Γöé function as sign bit.     Γöé
  4117. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4118. Γöé              Γöé "unsigned    Γöé Sign-extend to "long";    Γöé
  4119. Γöé              Γöé long"        Γöé convert "long" to         Γöé
  4120. Γöé              Γöé              Γöé "unsigned long".          Γöé
  4121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4122. Γöé              Γöé "float"      Γöé Sign-extend to "long";    Γöé
  4123. Γöé              Γöé              Γöé convert "long" to         Γöé
  4124. Γöé              Γöé              Γöé "float".                  Γöé
  4125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4126. Γöé              Γöé "double"     Γöé Sign-extend to "long";    Γöé
  4127. Γöé              Γöé              Γöé convert "long" to         Γöé
  4128. Γöé              Γöé              Γöé "double".                 Γöé
  4129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4130. Γöé              Γöé "long        Γöé Sign-extend to "long";    Γöé
  4131. Γöé              Γöé double"      Γöé convert "long" to "long   Γöé
  4132. Γöé              Γöé              Γöé double".                  Γöé
  4133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4134. Γöé "int"        Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4135. Γöé              Γöé char"        Γöé                           Γöé
  4136. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4137. Γöé              Γöé "short"      Γöé Preserve low-order bytes. Γöé
  4138. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4139. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4140. Γöé              Γöé char"        Γöé                           Γöé
  4141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4142. Γöé              Γöé "unsigned    Γöé Preserve low-order bytes. Γöé
  4143. Γöé              Γöé short"       Γöé                           Γöé
  4144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4145. Γöé              Γöé "unsigned    Γöé Preserve bit pattern;     Γöé
  4146. Γöé              Γöé long"        Γöé high-order bit loses      Γöé
  4147. Γöé              Γöé              Γöé function as sign bit.     Γöé
  4148. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4149. Γöé              Γöé "float"      Γöé Represent as a "float";   Γöé
  4150. Γöé              Γöé              Γöé if the "long" cannot be   Γöé
  4151. Γöé              Γöé              Γöé represented exactly, some Γöé
  4152. Γöé              Γöé              Γöé loss of precision occurs. Γöé
  4153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4154. Γöé              Γöé "double"     Γöé Represent as a "double";  Γöé
  4155. Γöé              Γöé              Γöé if the "long" cannot be   Γöé
  4156. Γöé              Γöé              Γöé represented exactly, some Γöé
  4157. Γöé              Γöé              Γöé loss of precision occurs. Γöé
  4158. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4159. Γöé              Γöé "long        Γöé Represent as a "long      Γöé
  4160. Γöé              Γöé double"      Γöé double"; if the "long"    Γöé
  4161. Γöé              Γöé              Γöé cannot be represented     Γöé
  4162. Γöé              Γöé              Γöé exactly, some loss of     Γöé
  4163. Γöé              Γöé              Γöé precision occurs.         Γöé
  4164. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4165. Γöé "long"       Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4166. Γöé              Γöé char"        Γöé                           Γöé
  4167. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4168. Γöé              Γöé "short"      Γöé Preserve low-order bytes. Γöé
  4169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4170. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4171. Γöé              Γöé char"        Γöé                           Γöé
  4172. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4173. Γöé              Γöé "unsigned    Γöé Preserve low-order bytes. Γöé
  4174. Γöé              Γöé short"       Γöé                           Γöé
  4175. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4176. Γöé              Γöé "unsigned    Γöé Preserve bit pattern;     Γöé
  4177. Γöé              Γöé long"        Γöé high-order bit loses      Γöé
  4178. Γöé              Γöé              Γöé function as sign bit.     Γöé
  4179. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4180. Γöé              Γöé "float"      Γöé Represent as a "float";   Γöé
  4181. Γöé              Γöé              Γöé if the "long" cannot be   Γöé
  4182. Γöé              Γöé              Γöé represented exactly, some Γöé
  4183. Γöé              Γöé              Γöé loss of precision occurs. Γöé
  4184. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4185. Γöé              Γöé "double"     Γöé Represent as a "double";  Γöé
  4186. Γöé              Γöé              Γöé if the "long" cannot be   Γöé
  4187. Γöé              Γöé              Γöé represented exactly, some Γöé
  4188. Γöé              Γöé              Γöé loss of precision occurs. Γöé
  4189. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4190. Γöé              Γöé "long        Γöé Represent as a "long      Γöé
  4191. Γöé              Γöé double"      Γöé double"; if the "long"    Γöé
  4192. Γöé              Γöé              Γöé cannot be represented     Γöé
  4193. Γöé              Γöé              Γöé exactly, some loss of     Γöé
  4194. Γöé              Γöé              Γöé precision occurs.         Γöé
  4195. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4196.  
  4197. Related Information 
  4198.  
  4199. o Integers 
  4200. o Types 
  4201. o Type Conversions 
  4202. o Usual Arithmetic Conversions 
  4203.  
  4204.  
  4205. ΓòÉΓòÉΓòÉ 3.10.4. Conversion from Unsigned Integer Types ΓòÉΓòÉΓòÉ
  4206.  
  4207. An unsigned integer is converted to a shorter unsigned or signed integer by 
  4208. truncating the high-order bits.  An unsigned integer is converted to a longer 
  4209. unsigned or signed integer by setting the high-order bits to 0. Unsigned values 
  4210. are converted to floating-point values by first converting to a signed integer 
  4211. of the same size, and then converting that signed value to a floating-point 
  4212. value. 
  4213.  
  4214. When an unsigned integer is converted to a signed integer of the same size, no 
  4215. change in the bit pattern occurs.  However, the value changes if the sign bit 
  4216. is set. 
  4217.  
  4218. The following chart summarizes conversions from unsigned integer types: 
  4219.  
  4220. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4221. Γöé FROM         Γöé TO           Γöé METHOD                    Γöé
  4222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4223. Γöé "unsigned    Γöé "signed      Γöé Preserve bit pattern;     Γöé
  4224. Γöé char"        Γöé char"        Γöé high-order bit becomes    Γöé
  4225. Γöé              Γöé              Γöé sign bit.                 Γöé
  4226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4227. Γöé              Γöé "short"      Γöé Zero-extend; preserve the Γöé
  4228. Γöé              Γöé              Γöé bit pattern.              Γöé
  4229. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4230. Γöé              Γöé "int"        Γöé Zero-extend; preserve the Γöé
  4231. Γöé              Γöé              Γöé bit pattern.              Γöé
  4232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4233. Γöé              Γöé "long"       Γöé Zero-extend; preserve the Γöé
  4234. Γöé              Γöé              Γöé bit pattern.              Γöé
  4235. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4236. Γöé              Γöé "unsigned    Γöé Zero-extend; preserve the Γöé
  4237. Γöé              Γöé short"       Γöé bit pattern.              Γöé
  4238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4239. Γöé              Γöé "unsigned    Γöé Zero-extend; preserve the Γöé
  4240. Γöé              Γöé int"         Γöé bit pattern.              Γöé
  4241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4242. Γöé              Γöé "unsigned    Γöé Zero-extend; preserve the Γöé
  4243. Γöé              Γöé long"        Γöé bit pattern.              Γöé
  4244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4245. Γöé              Γöé "float"      Γöé Convert to "long";        Γöé
  4246. Γöé              Γöé              Γöé convert "long" to         Γöé
  4247. Γöé              Γöé              Γöé "float".                  Γöé
  4248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4249. Γöé              Γöé "double"     Γöé Convert to "long";        Γöé
  4250. Γöé              Γöé              Γöé convert "long" to         Γöé
  4251. Γöé              Γöé              Γöé "double".                 Γöé
  4252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4253. Γöé              Γöé "long        Γöé Convert to "long";        Γöé
  4254. Γöé              Γöé double"      Γöé convert "long" to "long   Γöé
  4255. Γöé              Γöé              Γöé double".                  Γöé
  4256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4257. Γöé "unsigned    Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4258. Γöé short"       Γöé char"        Γöé                           Γöé
  4259. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4260. Γöé              Γöé "short"      Γöé Preserve bit pattern;     Γöé
  4261. Γöé              Γöé              Γöé high-order bit becomes    Γöé
  4262. Γöé              Γöé              Γöé sign bit.                 Γöé
  4263. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4264. Γöé              Γöé "int"        Γöé Zero-extend;  preserve    Γöé
  4265. Γöé              Γöé              Γöé the bit pattern.          Γöé
  4266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4267. Γöé              Γöé "long"       Γöé Zero-extend;  preserve    Γöé
  4268. Γöé              Γöé              Γöé the bit pattern.          Γöé
  4269. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4270. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4271. Γöé              Γöé char"        Γöé                           Γöé
  4272. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4273. Γöé              Γöé "unsigned    Γöé Zero-extend.              Γöé
  4274. Γöé              Γöé int"         Γöé                           Γöé
  4275. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4276. Γöé              Γöé "unsigned    Γöé Zero-extend.              Γöé
  4277. Γöé              Γöé long"        Γöé                           Γöé
  4278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4279. Γöé              Γöé "float"      Γöé Convert to "long";        Γöé
  4280. Γöé              Γöé              Γöé convert "long" to         Γöé
  4281. Γöé              Γöé              Γöé "float".                  Γöé
  4282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4283. Γöé              Γöé "double"     Γöé Convert to "long";        Γöé
  4284. Γöé              Γöé              Γöé convert "long" to         Γöé
  4285. Γöé              Γöé              Γöé "double".                 Γöé
  4286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4287. Γöé              Γöé "long        Γöé Convert to "long";        Γöé
  4288. Γöé              Γöé double"      Γöé convert "long" to "long   Γöé
  4289. Γöé              Γöé              Γöé double".                  Γöé
  4290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4291. Γöé "unsigned    Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4292. Γöé int"         Γöé char"        Γöé                           Γöé
  4293. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4294. Γöé              Γöé "short"      Γöé Preserve low-order bytes. Γöé
  4295. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4296. Γöé              Γöé "int"        Γöé Preserve bit pattern;     Γöé
  4297. Γöé              Γöé              Γöé high-order bit becomes    Γöé
  4298. Γöé              Γöé              Γöé sign.                     Γöé
  4299. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4300. Γöé              Γöé "long"       Γöé Preserve bit pattern;     Γöé
  4301. Γöé              Γöé              Γöé high-order bit becomes    Γöé
  4302. Γöé              Γöé              Γöé sign.                     Γöé
  4303. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4304. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4305. Γöé              Γöé char"        Γöé                           Γöé
  4306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4307. Γöé              Γöé "unsigned    Γöé Preserve low-order bytes. Γöé
  4308. Γöé              Γöé short"       Γöé                           Γöé
  4309. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4310. Γöé              Γöé "float"      Γöé Convert "int" to "float". Γöé
  4311. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4312. Γöé              Γöé "double"     Γöé Convert "int" to          Γöé
  4313. Γöé              Γöé              Γöé "double".                 Γöé
  4314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4315. Γöé              Γöé "long        Γöé Convert "int" to "long    Γöé
  4316. Γöé              Γöé double"      Γöé double".                  Γöé
  4317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4318. Γöé "unsigned    Γöé "signed      Γöé Preserve low-order byte.  Γöé
  4319. Γöé long"        Γöé char"        Γöé                           Γöé
  4320. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4321. Γöé              Γöé "short"      Γöé Preserve low-order bytes. Γöé
  4322. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4323. Γöé              Γöé "int"        Γöé Preserve bit pattern;     Γöé
  4324. Γöé              Γöé              Γöé high-order bit becomes    Γöé
  4325. Γöé              Γöé              Γöé sign.                     Γöé
  4326. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4327. Γöé              Γöé "long"       Γöé Preserve bit pattern;     Γöé
  4328. Γöé              Γöé              Γöé high-order bit becomes    Γöé
  4329. Γöé              Γöé              Γöé sign.                     Γöé
  4330. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4331. Γöé              Γöé "unsigned    Γöé Preserve low-order byte.  Γöé
  4332. Γöé              Γöé char"        Γöé                           Γöé
  4333. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4334. Γöé              Γöé "unsigned    Γöé Preserve low-order bytes. Γöé
  4335. Γöé              Γöé short"       Γöé                           Γöé
  4336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4337. Γöé              Γöé "float"      Γöé Convert "long" to         Γöé
  4338. Γöé              Γöé              Γöé "float".                  Γöé
  4339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4340. Γöé              Γöé "double"     Γöé Convert "long" to         Γöé
  4341. Γöé              Γöé              Γöé "double".                 Γöé
  4342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4343. Γöé              Γöé "long        Γöé Convert "long" to "long   Γöé
  4344. Γöé              Γöé double"      Γöé double".                  Γöé
  4345. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4346.  
  4347. Related Information 
  4348.  
  4349. o Integers 
  4350. o Types 
  4351. o Type Conversions 
  4352. o Usual Arithmetic Conversions 
  4353.  
  4354.  
  4355. ΓòÉΓòÉΓòÉ 3.10.5. Conversion from Floating-Point Types ΓòÉΓòÉΓòÉ
  4356.  
  4357. A float value converted to a double undergoes no change in value.  A double 
  4358. converted to a float is represented exactly, if possible.  If C cannot exactly 
  4359. represent the double value as a float, the number loses precision.  If the 
  4360. value is too large to fit into a float, the number is undefined. 
  4361.  
  4362. A floating-point value is converted to an integer value by converting to an 
  4363. unsigned long.  The decimal fraction portion of the floating-point value is 
  4364. discarded in the conversion.  If the result is still too large to fit, the 
  4365. result of the conversion is undefined. 
  4366.  
  4367. The following chart summarizes conversions from floating-point types: 
  4368.  
  4369. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4370. Γöé FROM         Γöé TO           Γöé METHOD                    Γöé
  4371. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4372. Γöé "float"      Γöé "signed      Γöé Convert to "long";        Γöé
  4373. Γöé              Γöé char"        Γöé convert "long" to "signed Γöé
  4374. Γöé              Γöé              Γöé char".                    Γöé
  4375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4376. Γöé              Γöé "short"      Γöé Convert to "long";        Γöé
  4377. Γöé              Γöé              Γöé convert "long" to         Γöé
  4378. Γöé              Γöé              Γöé "short".                  Γöé
  4379. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4380. Γöé              Γöé "int"        Γöé Truncate at decimal       Γöé
  4381. Γöé              Γöé              Γöé point; if result is too   Γöé
  4382. Γöé              Γöé              Γöé large to be represented   Γöé
  4383. Γöé              Γöé              Γöé as a "int", result is     Γöé
  4384. Γöé              Γöé              Γöé undefined.                Γöé
  4385. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4386. Γöé              Γöé "long"       Γöé Truncate at decimal       Γöé
  4387. Γöé              Γöé              Γöé point; if result is too   Γöé
  4388. Γöé              Γöé              Γöé large to be represented   Γöé
  4389. Γöé              Γöé              Γöé as a "long", result is    Γöé
  4390. Γöé              Γöé              Γöé undefined.                Γöé
  4391. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4392. Γöé              Γöé "unsigned    Γöé Convert to "unsigned      Γöé
  4393. Γöé              Γöé short"       Γöé long"; convert "unsigned  Γöé
  4394. Γöé              Γöé              Γöé long" to "unsigned        Γöé
  4395. Γöé              Γöé              Γöé short".                   Γöé
  4396. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4397. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4398. Γöé              Γöé int"         Γöé point; if result is too   Γöé
  4399. Γöé              Γöé              Γöé large to be represented   Γöé
  4400. Γöé              Γöé              Γöé as an "unsigned int",     Γöé
  4401. Γöé              Γöé              Γöé result is undefined.      Γöé
  4402. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4403. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4404. Γöé              Γöé long"        Γöé point; if result is too   Γöé
  4405. Γöé              Γöé              Γöé large to be represented   Γöé
  4406. Γöé              Γöé              Γöé as an "unsigned long",    Γöé
  4407. Γöé              Γöé              Γöé result is undefined.      Γöé
  4408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4409. Γöé              Γöé "double"     Γöé Represent as a "double".  Γöé
  4410. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4411. Γöé "double"     Γöé "signed      Γöé Convert to "float";       Γöé
  4412. Γöé              Γöé char"        Γöé convert "float" to        Γöé
  4413. Γöé              Γöé              Γöé "char".                   Γöé
  4414. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4415. Γöé              Γöé "short"      Γöé Convert to "float";       Γöé
  4416. Γöé              Γöé              Γöé convert "float" to        Γöé
  4417. Γöé              Γöé              Γöé "short".                  Γöé
  4418. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4419. Γöé              Γöé "int"        Γöé Truncate at decimal       Γöé
  4420. Γöé              Γöé              Γöé point; if result is too   Γöé
  4421. Γöé              Γöé              Γöé large to be represented   Γöé
  4422. Γöé              Γöé              Γöé as a "long", result is    Γöé
  4423. Γöé              Γöé              Γöé undefined.                Γöé
  4424. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4425. Γöé              Γöé "long"       Γöé Truncate at decimal       Γöé
  4426. Γöé              Γöé              Γöé point; if result is too   Γöé
  4427. Γöé              Γöé              Γöé large to be represented   Γöé
  4428. Γöé              Γöé              Γöé as a "long", result is    Γöé
  4429. Γöé              Γöé              Γöé undefined.                Γöé
  4430. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4431. Γöé              Γöé "unsigned    Γöé Convert to "unsigned      Γöé
  4432. Γöé              Γöé short"       Γöé long"; convert "unsigned  Γöé
  4433. Γöé              Γöé              Γöé long" to "unsigned        Γöé
  4434. Γöé              Γöé              Γöé short".                   Γöé
  4435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4436. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4437. Γöé              Γöé int"         Γöé point; if result is too   Γöé
  4438. Γöé              Γöé              Γöé large to be represented   Γöé
  4439. Γöé              Γöé              Γöé as an "unsigned int",     Γöé
  4440. Γöé              Γöé              Γöé result is undefined.      Γöé
  4441. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4442. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4443. Γöé              Γöé long"        Γöé point; if result is too   Γöé
  4444. Γöé              Γöé              Γöé large to be represented   Γöé
  4445. Γöé              Γöé              Γöé as a "long", result is    Γöé
  4446. Γöé              Γöé              Γöé undefined.                Γöé
  4447. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4448. Γöé              Γöé "float"      Γöé Represent as a float; if  Γöé
  4449. Γöé              Γöé              Γöé the "double" value cannot Γöé
  4450. Γöé              Γöé              Γöé be represented exactly as Γöé
  4451. Γöé              Γöé              Γöé a "float", loss of preci- Γöé
  4452. Γöé              Γöé              Γöé sion occurs; if the value Γöé
  4453. Γöé              Γöé              Γöé is too large to be        Γöé
  4454. Γöé              Γöé              Γöé represented in a "float", Γöé
  4455. Γöé              Γöé              Γöé the result is undefined.  Γöé
  4456. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4457. Γöé              Γöé "long        Γöé Represent as a "long      Γöé
  4458. Γöé              Γöé double"      Γöé double".                  Γöé
  4459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4460. Γöé "long        Γöé "signed      Γöé Convert to "double";      Γöé
  4461. Γöé double"      Γöé char"        Γöé convert "double" to       Γöé
  4462. Γöé              Γöé              Γöé "float"; convert "float"  Γöé
  4463. Γöé              Γöé              Γöé to "char".                Γöé
  4464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4465. Γöé              Γöé "short"      Γöé Convert to "double";      Γöé
  4466. Γöé              Γöé              Γöé convert "double" to       Γöé
  4467. Γöé              Γöé              Γöé "float"; convert "float"  Γöé
  4468. Γöé              Γöé              Γöé to "short".               Γöé
  4469. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4470. Γöé              Γöé "int"        Γöé Truncate at decimal       Γöé
  4471. Γöé              Γöé              Γöé point; if result is too   Γöé
  4472. Γöé              Γöé              Γöé large to be represented   Γöé
  4473. Γöé              Γöé              Γöé as a "int", result is     Γöé
  4474. Γöé              Γöé              Γöé undefined.                Γöé
  4475. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4476. Γöé              Γöé "long"       Γöé Truncate at decimal       Γöé
  4477. Γöé              Γöé              Γöé point; if result is too   Γöé
  4478. Γöé              Γöé              Γöé large to be represented   Γöé
  4479. Γöé              Γöé              Γöé as a "long", result is    Γöé
  4480. Γöé              Γöé              Γöé undefined.                Γöé
  4481. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4482. Γöé              Γöé "unsigned    Γöé Convert to "double";      Γöé
  4483. Γöé              Γöé short"       Γöé convert "double" to       Γöé
  4484. Γöé              Γöé              Γöé "unsigned long"; convert  Γöé
  4485. Γöé              Γöé              Γöé "unsigned long" to        Γöé
  4486. Γöé              Γöé              Γöé "unsigned short".         Γöé
  4487. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4488. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4489. Γöé              Γöé int"         Γöé point; if result is too   Γöé
  4490. Γöé              Γöé              Γöé large to be represented   Γöé
  4491. Γöé              Γöé              Γöé as an "unsigned int",     Γöé
  4492. Γöé              Γöé              Γöé result is undefined.      Γöé
  4493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4494. Γöé              Γöé "unsigned    Γöé Truncate at decimal       Γöé
  4495. Γöé              Γöé long"        Γöé point; if result is too   Γöé
  4496. Γöé              Γöé              Γöé large to be represented   Γöé
  4497. Γöé              Γöé              Γöé as an "unsigned long",    Γöé
  4498. Γöé              Γöé              Γöé result is undefined.      Γöé
  4499. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4500. Γöé              Γöé "float"      Γöé Convert to "double"; rep- Γöé
  4501. Γöé              Γöé              Γöé resent as a "float"; if   Γöé
  4502. Γöé              Γöé              Γöé the "long double" value   Γöé
  4503. Γöé              Γöé              Γöé cannot be represented     Γöé
  4504. Γöé              Γöé              Γöé exactly as a "float",     Γöé
  4505. Γöé              Γöé              Γöé loss of precision occurs; Γöé
  4506. Γöé              Γöé              Γöé if the value is too large Γöé
  4507. Γöé              Γöé              Γöé to be represented in a    Γöé
  4508. Γöé              Γöé              Γöé "float", the result is    Γöé
  4509. Γöé              Γöé              Γöé undefined.                Γöé
  4510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4511. Γöé              Γöé "double"     Γöé Represent as a "double";  Γöé
  4512. Γöé              Γöé              Γöé If the result is too      Γöé
  4513. Γöé              Γöé              Γöé large to be represented   Γöé
  4514. Γöé              Γöé              Γöé as a "double", result is  Γöé
  4515. Γöé              Γöé              Γöé undefined.                Γöé
  4516. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4517.  
  4518. Related Information 
  4519.  
  4520. o Floating-Point Variables 
  4521. o Types 
  4522. o Type Conversions 
  4523. o Usual Arithmetic Conversions 
  4524.  
  4525.  
  4526. ΓòÉΓòÉΓòÉ 3.10.6. Conversion to and from Pointer Types ΓòÉΓòÉΓòÉ
  4527.  
  4528. You can convert a pointer to one type of value to a pointer to a different 
  4529. type. 
  4530.  
  4531. You can convert a pointer value to an integral value.  The path of the 
  4532. conversion depends on the size of the pointer and the size of the integral 
  4533. type. 
  4534.  
  4535. The conversion of an integer value to an address offset (in an expression with 
  4536. an integral type operand and a pointer type operand) is system dependent. 
  4537.  
  4538. A pointer to a constant or a volatile object should never be assigned to a 
  4539. non-constant or non-volatile object. 
  4540.  
  4541. A pointer to void can be converted to or from a pointer to any incomplete or 
  4542. object type. 
  4543.  
  4544. Related Information 
  4545.  
  4546. o Pointers 
  4547. o volatile and const Qualifiers 
  4548. o Types 
  4549. o Type Conversions 
  4550. o Usual Arithmetic Conversions 
  4551.  
  4552.  
  4553. ΓòÉΓòÉΓòÉ 3.10.7. Conversion from Other Types ΓòÉΓòÉΓòÉ
  4554.  
  4555. When you define a value using the enum type specifier, the value is treated as 
  4556. an int.  Conversions to and from an enum value proceed as for the int type. 
  4557.  
  4558. When a packed structure or union is assigned to a nonpacked structure or union 
  4559. of the same type or vice versa, the layout of the right operand is remapped to 
  4560. match the layout of the left. 
  4561.  
  4562. No other conversions between structure or union types are allowed. 
  4563.  
  4564. The void type has no value, by definition.  Therefore, it cannot be converted 
  4565. to any other type, nor can any value be converted to void by assignment. 
  4566. However, a value can be explicitly cast to void. 
  4567.  
  4568. Related Information 
  4569.  
  4570. o Enumerations 
  4571. o Integers 
  4572. o Structures 
  4573. o Unions 
  4574. o _Packed Qualifier 
  4575. o void Type 
  4576. o Cast 
  4577. o Type Conversions 
  4578. o Usual Arithmetic Conversions 
  4579.  
  4580.  
  4581. ΓòÉΓòÉΓòÉ 4. C Language Statements ΓòÉΓòÉΓòÉ
  4582.  
  4583. This section describes the following C language statements: 
  4584.  
  4585. o Labels 
  4586. o Block 
  4587. o break 
  4588. o continue 
  4589. o do 
  4590. o Expression 
  4591. o for 
  4592. o goto 
  4593. o if 
  4594. o Null Statement 
  4595. o return 
  4596. o switch 
  4597. o while 
  4598.  
  4599.  
  4600. ΓòÉΓòÉΓòÉ 4.1. Labels ΓòÉΓòÉΓòÉ
  4601.  
  4602. A label is an identifier that allows your program to transfer control to other 
  4603. statements within the same function. A label is the only type of identifier 
  4604. that has function scope. Control is transferred to the statement following the 
  4605. label by means of the goto or switch statements. A label has the form: 
  4606.  
  4607. ΓöÇΓöÇ
  4608.  
  4609. identifierΓöÇΓöÇ:ΓöÇΓöÇ
  4610.  
  4611. statementΓöÇΓöÇ
  4612.  
  4613. For example, the following are labels: 
  4614.  
  4615.  comment_complete: ;             /* Example of null statement label */
  4616.  test_for_null: if (NULL == ptr) /* Example of statement label     */
  4617.  
  4618. The case and default labels have a specific use and are described later in this 
  4619. section under switch. 
  4620.  
  4621. Related Information 
  4622.  
  4623. o goto 
  4624. o switch 
  4625.  
  4626.  
  4627. ΓòÉΓòÉΓòÉ 4.2. Block ΓòÉΓòÉΓòÉ
  4628.  
  4629. A block statement enables you to group any number of data definitions, 
  4630. declarations, and statements into one statement.  When you enclose definitions, 
  4631. declarations, and statements within a single set of braces, everything within 
  4632. the braces is treated as a single statement. Note that the { and } characters 
  4633. can be represented by the trigraphs ??< and ??> respectively. You can place a 
  4634. block wherever a statement is allowed.  The block statement has the form: 
  4635.  
  4636.       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4637.                                    Γöé                 Γöé
  4638. ΓöÇΓöÇ{ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ}ΓöÇΓöÇ
  4639.        Γöé                           Γöé    Γöé             Γöé
  4640.        Γö£ΓöÇΓöÇtype_definitionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    ΓööΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
  4641.        Γöé                           Γöé
  4642.        Γö£ΓöÇΓöÇextern_declarationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4643.        Γöé                           Γöé
  4644.        ΓööΓöÇΓöÇinternal_data_definitionΓöÇΓöÿ
  4645.  
  4646. All definitions and declarations occur at the beginning of a block before 
  4647. statements.  Statements must follow the definitions and declarations. A block 
  4648. is considered a single statement. 
  4649.  
  4650. If you redefine a data object inside a nested block, the inner object hides the 
  4651. outer object while the inner block is executed.  Defining several variables 
  4652. that have the same identifier can make a program difficult to understand and 
  4653. maintain.  Therefore, you should limit such redefinitions of identifiers within 
  4654. nested blocks. 
  4655.  
  4656. If a data object is usable within a block, all nested blocks can use that data 
  4657. object (unless that data object identifier is redefined). 
  4658.  
  4659. Initialization of an auto or register variable occurs each time the block is 
  4660. executed from the beginning.  If you transfer control from one block to the 
  4661. middle of another block, initializations are not always performed.  You cannot 
  4662. initialize an extern variable within a block. 
  4663.  
  4664. Example of Block Statements 
  4665.  
  4666. Related Information 
  4667.  
  4668. o Block Scope Data Declarations 
  4669. o Function Body 
  4670. o Storage Class Specifiers 
  4671.  
  4672.  
  4673. ΓòÉΓòÉΓòÉ 4.3. break ΓòÉΓòÉΓòÉ
  4674.  
  4675. A break statement enables you to terminate and exit from a loop or switch 
  4676. statement from any point within the loop or switch other than the logical end. 
  4677. A break statement has the form: 
  4678.  
  4679. ΓöÇΓöÇbreakΓöÇΓöÇ;ΓöÇΓöÇ
  4680.  
  4681. In a looping statement (do, for, or while), the break statement ends the loop 
  4682. and moves control to the next statement outside the loop.  Within nested 
  4683. statements, the break statement ends only the smallest enclosing do, for, 
  4684. switch, or while statement. 
  4685.  
  4686. In a switch body, the break statement ends the execution of the switch body and 
  4687. gives control to the next statement outside the switch body. 
  4688.  
  4689. Restrictions 
  4690. You can place a break statement only in the body of a looping statement (do, 
  4691. for or while) or in the body of a switch statement. 
  4692.  
  4693. Example of break Statements 
  4694.  
  4695. Related Information 
  4696.  
  4697. o do 
  4698. o for 
  4699. o switch 
  4700. o while 
  4701.  
  4702.  
  4703. ΓòÉΓòÉΓòÉ 4.4. continue ΓòÉΓòÉΓòÉ
  4704.  
  4705. A continue statement enables you to terminate the current iteration of a loop. 
  4706. Program control is passed from the location in the body of the loop in which 
  4707. the continue statement is found, to the end of the loop body. A continue 
  4708. statement has the form: 
  4709.  
  4710. ΓöÇΓöÇcontinueΓöÇΓöÇ;ΓöÇΓöÇ
  4711.  
  4712. The continue statement ends the execution of the action part of a do, for, or 
  4713. while statement and moves control to the condition part of the statement.  If 
  4714. the looping statement is a for statement, control moves to the third expression 
  4715. in the condition part of the statement, and then to the second expression (the 
  4716. test) in the condition part of the statement. 
  4717.  
  4718. Within nested statements, the continue statement ends only the current 
  4719. iteration of the do, for, or while statement immediately enclosing it. 
  4720.  
  4721. Restrictions 
  4722. You can place a continue statement only within the body of a looping statement 
  4723. (do, for or while). 
  4724.  
  4725. Example of continue Statements 
  4726.  
  4727. Related Information 
  4728.  
  4729. o do 
  4730. o for 
  4731. o while 
  4732.  
  4733.  
  4734. ΓòÉΓòÉΓòÉ 4.5. do ΓòÉΓòÉΓòÉ
  4735.  
  4736. A do statement repeatedly executes a statement until the test expression 
  4737. evaluates to zero. Because of the order of execution, the statement is executed 
  4738. at least once. 
  4739.  
  4740. ΓöÇΓöÇdoΓöÇΓöÇstatementΓöÇΓöÇwhileΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇ;ΓöÇΓöÇ
  4741.  
  4742. The body of the loop is executed before the while clause (the controlling 
  4743. expression) is evaluated.  Further execution of the do statement depends on the 
  4744. value of the while clause.  If the while clause does not evaluate to 0 (zero), 
  4745. the statement is executed again.  Otherwise, execution of the statement ends. 
  4746.  
  4747. The controlling expression must be of scalar type. 
  4748.  
  4749. A break, return, or goto statement can cause the execution of a do statement to 
  4750. end, even when the while clause does not evaluate to 0 (zero). 
  4751.  
  4752. Example of do Statement 
  4753.  
  4754. Related Information 
  4755.  
  4756. o break 
  4757. o continue 
  4758. o for 
  4759. o goto 
  4760. o return 
  4761. o while 
  4762.  
  4763.  
  4764. ΓòÉΓòÉΓòÉ 4.6. Expression ΓòÉΓòÉΓòÉ
  4765.  
  4766. An expression statement contains an expression.  Expressions are described in 
  4767. Expressions and Operators.  An expression statement has the form: 
  4768.  
  4769. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
  4770.     Γöé              Γöé
  4771.     ΓööΓöÇΓöÇexpressionΓöÇΓöÇΓöÿ
  4772.  
  4773. An expression statement evaluates the given expression.  An expression 
  4774. statement is used to assign the value of the expression to a variable or to 
  4775. call a function. 
  4776.  
  4777. Example of Expression Statements 
  4778.  
  4779. Related Information 
  4780.  
  4781. o Expressions and Operators 
  4782.  
  4783.  
  4784. ΓòÉΓòÉΓòÉ 4.7. for ΓòÉΓòÉΓòÉ
  4785.  
  4786. A for statement enables you to do the following: 
  4787.  
  4788. o Evaluate an expression prior to the first iteration of the statement 
  4789.   ("initialization") 
  4790. o Specify an expression to determine whether or not the statement should be 
  4791.   executed ("controlling part") 
  4792. o Evaluate an expression after each iteration of the statement 
  4793.  
  4794. A for statement has the form: 
  4795.  
  4796. ΓöÇΓöÇforΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
  4797.             Γöé               Γöé     Γöé               Γöé
  4798.             ΓööΓöÇΓöÇexpression1ΓöÇΓöÇΓöÿ     ΓööΓöÇΓöÇexpression2ΓöÇΓöÇΓöÿ
  4799.  
  4800.  
  4801. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇ
  4802.    Γöé               Γöé
  4803.    ΓööΓöÇΓöÇexpression3ΓöÇΓöÇΓöÿ
  4804.  
  4805. The compiler evaluates expression1 only once;  this is before the statement is 
  4806. executed for the first time.  You can use this expression to initialize a 
  4807. variable.  If you do not want to evaluate an expression prior to the first 
  4808. iteration of the statement, you can omit this expression. 
  4809.  
  4810. The compiler evaluates expression2 before each execution of the statement. 
  4811. expression2 must evaluate to a scalar type. If this expression evaluates to 0 
  4812. (zero), the for statement is terminated and control moves to the statement 
  4813. following the for statement.  Otherwise, the statement is executed.  If you 
  4814. omit expression2, it will be as if the expression had been replaced by a 
  4815. nonzero constant and the for statement will not be terminated by failure of 
  4816. this condition. 
  4817.  
  4818. The compiler evaluates expression3 after each execution of the statement.  You 
  4819. can use this expression to increase, decrease, or reinitialize a variable.  If 
  4820. you do not want to evaluate an expression after each iteration of the 
  4821. statement, you can omit this expression. 
  4822.  
  4823. A break, return, or goto statement can cause the execution of a for statement 
  4824. to end, even when the second expression does not evaluate to 0 (zero).  If you 
  4825. omit expression2, you must use a break, return, or goto statement to stop the 
  4826. execution of the for statement. 
  4827.  
  4828. Example of for Statements 
  4829.  
  4830. Related Information 
  4831.  
  4832. o break 
  4833. o continue 
  4834. o do 
  4835. o return 
  4836. o goto 
  4837. o while 
  4838. o Expressions and Operators 
  4839.  
  4840.  
  4841. ΓòÉΓòÉΓòÉ 4.8. goto ΓòÉΓòÉΓòÉ
  4842.  
  4843. A goto statement causes your program to unconditionally transfer control to the 
  4844. statement associated with the label specified on the goto statement.  A goto 
  4845. statement has the form: 
  4846.  
  4847. ΓöÇΓöÇgotoΓöÇΓöÇidentifierΓöÇΓöÇ;ΓöÇΓöÇ
  4848.  
  4849. The goto statement transfers control to the statement indicated by the 
  4850. identifier. 
  4851.  
  4852. Notes 
  4853. Use the goto statement sparingly.  Because the goto statement can interfere 
  4854. with the normal top-to-bottom sequence of execution, the goto makes a program 
  4855. more difficult to read and maintain.  Often, a break statement, a continue 
  4856. statement, or a function call can eliminate the need for a goto statement. 
  4857.  
  4858. If you use a goto statement to transfer control to a statement inside of a loop 
  4859. or block, initializations of automatic storage for the loop do not take place 
  4860. and the result is undefined.  The label must appear in the same function as the 
  4861. goto. 
  4862.  
  4863. Example of goto Statements 
  4864.  
  4865. Related Information 
  4866.  
  4867. o Labels 
  4868. o break 
  4869. o continue 
  4870. o Functions 
  4871.  
  4872.  
  4873. ΓòÉΓòÉΓòÉ 4.9. if ΓòÉΓòÉΓòÉ
  4874.  
  4875. An if statement allows you to conditionally execute a statement when the 
  4876. specified test expression evaluates to a nonzero value.  The expression must 
  4877. have a scalar type.  You may optionally specify an else clause on the if 
  4878. statement.  If the test expression evaluates to 0 (zero) and an else clause 
  4879. exists, the statement associated with the else clause is executed.  An if 
  4880. statement has the form: 
  4881.  
  4882. ΓöÇΓöÇifΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  4883.                                      Γöé                   Γöé
  4884.                                      ΓööΓöÇΓöÇelseΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
  4885.  
  4886. When if statements are nested and else clauses are present, a given else is 
  4887. associated with the closest preceding if statement within the same block. 
  4888.  
  4889. Example of if Statements 
  4890.  
  4891. Related Information 
  4892.  
  4893. o Conditional Compilation 
  4894.  
  4895.  
  4896. ΓòÉΓòÉΓòÉ 4.10. Null Statement ΓòÉΓòÉΓòÉ
  4897.  
  4898. The null statement performs no operation and has the form: 
  4899.  
  4900. ΓöÇΓöÇ;ΓöÇΓöÇ
  4901.  
  4902. You can use a null statement in a looping statement to show a nonexistent 
  4903. action or in a labeled statement to hold the label. 
  4904.  
  4905. Example of Null Statements 
  4906.  
  4907. Related Information 
  4908.  
  4909. o Labels 
  4910.  
  4911.  
  4912. ΓòÉΓòÉΓòÉ 4.11. return ΓòÉΓòÉΓòÉ
  4913.  
  4914. A return statement terminates the execution of the current function and returns 
  4915. control to the caller of the function. A return statement has the form: 
  4916.  
  4917. ΓöÇΓöÇreturnΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ;ΓöÇΓöÇ
  4918.             Γöé              Γöé
  4919.             ΓööΓöÇΓöÇexpressionΓöÇΓöÇΓöÿ
  4920.  
  4921. A return statement ends the execution of the current function. 
  4922.  
  4923. A return statement is optional.  If the system reaches the end of a function 
  4924. without encountering a return statement, control is passed to the caller as if 
  4925. a return statement without an expression were encountered. 
  4926.  
  4927. A function can contain multiple return statements. 
  4928.  
  4929. If an expression is present on a return statement, the value of the expression 
  4930. is returned to the caller.  If the data type of the expression is different 
  4931. from the data type of the function, conversion of the return value takes place 
  4932. as if the value of the expression were assigned to an object with the same data 
  4933. type as the function. 
  4934.  
  4935. If an expression is not present on a return statement, the value of the return 
  4936. statement is not defined. If an expression is not given on a return statement 
  4937. and the calling function is expecting a value to be returned, the resulting 
  4938. behavior is undefined. 
  4939.  
  4940. You cannot use a return statement with an expression when the function is 
  4941. declared as returning type void. 
  4942.  
  4943. Example of return Statements 
  4944.  
  4945. Related Information 
  4946.  
  4947. o Functions 
  4948. o Expression 
  4949.  
  4950.  
  4951. ΓòÉΓòÉΓòÉ 4.12. switch ΓòÉΓòÉΓòÉ
  4952.  
  4953. The switch statement passes control to the statement following one of the 
  4954. labels within the switch body or to the statement following the switch body. 
  4955. The value of the expression that precedes the switch body determines which 
  4956. statement receives control. A switch statement has the form: 
  4957.  
  4958. ΓöÇΓöÇswitchΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇswitch_bodyΓöÇΓöÇ
  4959.  
  4960. A switch body can have a simple or complex form.  The simple form contains any 
  4961. number of case labels mixed with an optional default label.  The simple form 
  4962. ends with a single statement.  Because only the final case or default label can 
  4963. be followed by a statement, the simple form of the switch body is rarely used 
  4964. in C language programs.  An if statement usually can replace a switch statement 
  4965. that has a simple switch body. 
  4966.  
  4967. The simple form of a switch body is shown below: 
  4968.  
  4969. ΓöÇΓöÇΓö¼ΓöÇΓöÇcase_labelΓöÇΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  4970.     Γöé                                                               Γöé
  4971.     ΓööΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdefault_labelΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstatementΓöÇΓöÇΓöÿ
  4972.       Γöé              Γöé                 Γöé              Γöé
  4973.       ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ                 ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ
  4974.  
  4975. The complex form of a switch body is enclosed in braces and can contain 
  4976. definitions, declarations, case clauses, and a default clause.  Each case and 
  4977. default clause can contain statements. The complex form of a switch body is 
  4978. shown below: 
  4979.  
  4980.       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4981.                                     Γöé                  Γöé
  4982. ΓöÇΓöÇ{ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
  4983.        Γöé                            Γöé   Γöé               Γöé
  4984.        Γö£ΓöÇΓöÇtype_definitionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ   ΓööΓöÇΓöÇcase_clauseΓöÇΓöÇΓöÿ
  4985.        Γöé                            Γöé
  4986.        Γö£ΓöÇΓöÇextern_declarationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4987.        Γöé                            Γöé
  4988.        ΓööΓöÇΓöÇinternal_data_definitionΓöÇΓöÇΓöÿ
  4989.  
  4990.                         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4991.                                          Γöé
  4992. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ}ΓöÇΓöÇ
  4993.    Γöé                  Γöé  Γöé               Γöé
  4994.    ΓööΓöÇΓöÇdefault_clauseΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇcase_clauseΓöÇΓöÇΓöÿ
  4995.  
  4996. Note:  If you include an initializer within a type_definition, 
  4997. extern_definition or internal_data_definition, it will be ignored. 
  4998.  
  4999. The value of the switch expression is compared with the value of the expression 
  5000. in each case label.  If a matching value is found, control is passed to the 
  5001. statement following the case label that contains the matching value. If the 
  5002. system does not find a matching value and a default label appears anywhere in 
  5003. the switch body, control passes to the default labelled statement.  Otherwise, 
  5004. no part of the switch body is executed. 
  5005.  
  5006. If control passes to a statement in the switch body, control does not pass from 
  5007. the switch body until a break statement is encountered or the last statement in 
  5008. the switch body is executed. 
  5009.  
  5010. An integral promotion is performed on the controlling expression, if necessary, 
  5011. and all expressions in the case statements are converted to the same type as 
  5012. the controlling expression. 
  5013.  
  5014. Restrictions 
  5015. The switch expression and the case expressions must have an integral type.  The 
  5016. value of each case expression must represent a different value and must be a 
  5017. constant expression. 
  5018.  
  5019. Only one default label can occur in each switch statement. 
  5020.  
  5021. You can place data definitions at the beginning of the switch body.  However, 
  5022. the compiler does not initialize auto and register variables at the beginning 
  5023. of a switch body. 
  5024.  
  5025. Example of switch Statements 
  5026.  
  5027. Related Information 
  5028.  
  5029. o break 
  5030. o if 
  5031. o Labels 
  5032. o Expression 
  5033. o Types 
  5034. o Storage Class Specifiers 
  5035.  
  5036.  
  5037. ΓòÉΓòÉΓòÉ 4.13. while ΓòÉΓòÉΓòÉ
  5038.  
  5039. A while statement enables you to repeatedly execute the body of a loop until 
  5040. the controlling expression evaluates to 0 (zero). A while statement has the 
  5041. form: 
  5042.  
  5043. ΓöÇΓöÇwhileΓöÇΓöÇ(ΓöÇΓöÇexpressionΓöÇΓöÇ)ΓöÇΓöÇstatementΓöÇΓöÇ
  5044.  
  5045. The expression is evaluated to determine whether or not the body of the loop 
  5046. should be executed. The expression must be a scalar type. If the expression 
  5047. evaluates to 0 (zero), the statement terminates and the body of the loop never 
  5048. executes.  Otherwise, the body does execute.  After the body has executed, 
  5049. control is given once again to the expression.  Further execution of the action 
  5050. depends on the value of the condition. 
  5051.  
  5052. A break, return, or goto statement can cause the execution of a while statement 
  5053. to end, even when the condition does not evaluate to 0 (zero). 
  5054.  
  5055. Example of while Statements 
  5056.  
  5057. Related Information 
  5058.  
  5059. o break 
  5060. o continue 
  5061. o do 
  5062. o for 
  5063. o goto 
  5064. o return 
  5065.  
  5066.  
  5067. ΓòÉΓòÉΓòÉ 5. Preprocessor Directives ΓòÉΓòÉΓòÉ
  5068.  
  5069. This section describes the C preprocessor directives. Preprocessing is a step 
  5070. in the compilation process that enables you to: 
  5071.  
  5072. o Replace tokens in the current file with specified replacement tokens.  A 
  5073.   token is a series of characters delimited by whitespace. The only whitespace 
  5074.   allowed on a preprocessor directive is the space, horizontal tab and 
  5075.   comments. 
  5076. o Imbed files within the current file 
  5077. o Conditionally compile sections of the current file 
  5078. o Change the line number of the next line of source and change the file name of 
  5079.   the current file 
  5080. o Generate diagnostic messages. 
  5081.  
  5082. The preprocessor recognizes the following directives: 
  5083.  
  5084. o #define 
  5085. o #undef 
  5086. o #error 
  5087. o #include 
  5088. o #if, #elif 
  5089. o #ifdef 
  5090. o #ifndef 
  5091. o #else 
  5092. o #endif 
  5093. o #line 
  5094. o #pragma 
  5095.  
  5096. The format of a preprocessor directive is described in Preprocessor Directive 
  5097. Format. 
  5098.  
  5099. Related Information 
  5100.  
  5101. o # Operator 
  5102. o ## Operator 
  5103. o # (Null Directive) 
  5104.  
  5105.  
  5106. ΓòÉΓòÉΓòÉ 5.1. Preprocessor Directive Format ΓòÉΓòÉΓòÉ
  5107.  
  5108. Preprocessor directives begin with the # token followed by a preprocessor 
  5109. keyword.  The # token must appear as the first non-white space character on a 
  5110. line. 
  5111.  
  5112. A preprocessor directive ends at the new-line character unless the last 
  5113. character of the line is the \ (backslash) character.  If the \ character 
  5114. appears as the last character in the preprocessor line, the preprocessor 
  5115. interprets the \ and the new-line character as a continuation marker and 
  5116. interprets the following line as a continuation of the current preprocessor 
  5117. line. 
  5118.  
  5119. Preprocessor directives generally appear anywhere in a program. 
  5120.  
  5121. Related Information 
  5122.  
  5123. o Preprocessor Directives 
  5124.  
  5125.  
  5126. ΓòÉΓòÉΓòÉ 5.2. #define ΓòÉΓòÉΓòÉ
  5127.  
  5128. A preprocessor define directive directs the preprocessor to replace all 
  5129. subsequent occurrences of a macro with specified replacement tokens.  A 
  5130. preprocessor #define directive has the form: 
  5131.  
  5132. ΓöÇΓöÇ#ΓöÇΓöÇdefineΓöÇΓöÇidentifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5133.                            Γöé                            Γöé
  5134.                            ΓööΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÿ
  5135.                                  Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5136.                                  Γöé             Γöé Γöé
  5137.                                  ΓööΓöÇΓöÇΓöÇidentifierΓöÇΓö┤ΓöÇΓöÿ
  5138.  
  5139.  
  5140.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5141.                    Γöé
  5142. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇ
  5143.    Γöé               Γöé
  5144.    Γö£ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöñ
  5145.    Γöé               Γöé
  5146.    ΓööΓöÇΓöÇΓöÇcharacterΓöÇΓöÇΓöÇΓöÿ
  5147.  
  5148. The #define directive can contain an object-like definition or a function-like 
  5149. definition. 
  5150.  
  5151. o Object-Like Macro Definition 
  5152. o Function-Like Macro Definition 
  5153. o Notes and Examples 
  5154.  
  5155. Related Information 
  5156.  
  5157. o #undef 
  5158. o # Operator 
  5159. o ## Operator 
  5160.  
  5161.  
  5162. ΓòÉΓòÉΓòÉ 5.2.1. Object-Like Macro Definition ΓòÉΓòÉΓòÉ
  5163.  
  5164. An object-like macro definition replaces a single identifier with the specified 
  5165. replacement tokens.  The following object-like definition causes the 
  5166. preprocessor to replace all subsequent instances of the identifier COUNT with 
  5167. the constant 1000: 
  5168.  
  5169. #define COUNT 1000
  5170.  
  5171. This definition would cause the preprocessor to change the following statement 
  5172. (if the statement appears after the previous definition): 
  5173.  
  5174. int arry[COUNT];
  5175.  
  5176. In the output of the preprocessor, the preceding statement would appear as: 
  5177.  
  5178. int arry[1000];
  5179.  
  5180. The following definition references the previously defined identifier COUNT: 
  5181.  
  5182. #define MAX_COUNT COUNT + 100
  5183.  
  5184. The preprocessor replaces each subsequent occurrence of MAX_COUNT with 
  5185. COUNT + 100, which the preprocessor then replaces with 1000 + 100. 
  5186.  
  5187. Related Information 
  5188.  
  5189. o #define 
  5190. o Function-Like Macro Definition 
  5191. o #undef 
  5192.  
  5193.  
  5194. ΓòÉΓòÉΓòÉ 5.2.2. Function-Like Macro Definition ΓòÉΓòÉΓòÉ
  5195.  
  5196. A function-like macro definition: 
  5197.  
  5198.  1. Receives arguments from a macro invocation 
  5199.  2. Embeds these arguments in some replacement tokens 
  5200.  3. Substitutes the replacement tokens for the macro invocation. 
  5201.  
  5202. A function-like macro definition is an identifier followed by a parenthesized 
  5203. parameter list and the replacement tokens.  White space cannot separate the 
  5204. identifier (which is the name of the macro) and the left parenthesis of the 
  5205. parameter list.  A comma must separate each parameter.  For portability, you 
  5206. should not assume that you can have more than 31 parameters for a macro. 
  5207.  
  5208. A macro invocation, like a function call, is an identifier followed by a 
  5209. parenthesized list of arguments.  A comma must separate each argument. 
  5210.  
  5211. The following line defines the macro SUM as having two parameters a and b and 
  5212. the replacement tokens (a + b): 
  5213.  
  5214. #define SUM(a,b) (a + b)
  5215.  
  5216. This definition would cause the preprocessor to change the following statements 
  5217. (if the statements appear after the previous definition): 
  5218.  
  5219. c = SUM(x,y);
  5220. c = d * SUM(x,y);
  5221.  
  5222. In the output of the preprocessor, the preceding statements would appear as: 
  5223.  
  5224. c = (x + y);
  5225. c = d * (x + y);
  5226.  
  5227. Related Information 
  5228.  
  5229. o #define 
  5230. o Object-Like Macro Definition 
  5231. o #undef 
  5232.  
  5233.  
  5234. ΓòÉΓòÉΓòÉ 5.2.3. Notes and Examples ΓòÉΓòÉΓòÉ
  5235.  
  5236. A macro invocation must have the same number of arguments as the corresponding 
  5237. macro definition has parameters. 
  5238.  
  5239. In the macro invocation argument list, commas that appear as character 
  5240. constants, in string constants or surrounded by parentheses, do not separate 
  5241. arguments. 
  5242.  
  5243. The scope of a macro definition begins at the definition and does not end until 
  5244. a corresponding #undef directive is encountered.  If there is no corresponding 
  5245. #undef directive, the scope of the macro definition lasts until the end of the 
  5246. compilation is reached. 
  5247.  
  5248. A recursive macro is not fully expanded.  For example, the definition 
  5249.  
  5250.    #define x(a,b) x(a+1,b+1) + 4
  5251.  
  5252. would expand   x(20,10)    to   x(20+1,10+1) + 4   rather than trying to expand 
  5253. the macro x over and over within itself. 
  5254.  
  5255. A definition is not required to specify replacement tokens.  The following 
  5256. definition removes all instances of the token static from subsequent lines in 
  5257. the current file: 
  5258.  
  5259. #define static
  5260.  
  5261. You can change the definition of a defined identifier or macro with a second 
  5262. preprocessor #define directive only if the second preprocessor #define 
  5263. directive is preceded by a preprocessor #undef directive.  See #undef. The 
  5264. #undef directive nullifies the first definition so that the same identifier can 
  5265. be used in a redefinition. 
  5266.  
  5267. Within the text of the program, the preprocessor does not scan character 
  5268. constants or string constants for macro invocations. 
  5269.  
  5270. Note:  You cannot define any predefined macros. 
  5271.  
  5272. Example of #define directives 
  5273.  
  5274. Related Information 
  5275.  
  5276. o #undef 
  5277. o # Operator 
  5278. o ## Operator 
  5279. o Predefined Macros 
  5280.  
  5281.  
  5282. ΓòÉΓòÉΓòÉ 5.3. #undef ΓòÉΓòÉΓòÉ
  5283.  
  5284. A preprocessor undef directive causes the preprocessor to end the scope of a 
  5285. preprocessor definition.  A preprocessor #undef directive has the form: 
  5286.  
  5287. ΓöÇΓöÇ#ΓöÇΓöÇundefΓöÇΓöÇidentifierΓöÇΓöÇ
  5288.  
  5289. #undef is ignored if the identifier is not currently defined as a macro. 
  5290.  
  5291. Note:  You cannot undefine any predefined macros. 
  5292.  
  5293. Example of #undef directives 
  5294.  
  5295. Related Information 
  5296.  
  5297. o #define 
  5298. o Predefined Macros 
  5299.  
  5300.  
  5301. ΓòÉΓòÉΓòÉ 5.4. Predefined Macros ΓòÉΓòÉΓòÉ
  5302.  
  5303. The C language provides the following predefined macro names. 
  5304.  
  5305. __LINE__ 
  5306.     An integer representing the current source line number. 
  5307.  
  5308. __FILE__ 
  5309.     A character string literal containing the name of the source file. 
  5310.  
  5311. __DATE__ 
  5312.     A character string literal containing the date when the source file was 
  5313.     compiled.  The date will be in the form 
  5314.  
  5315.            "Mmm dd yyyy"
  5316.  
  5317.     where: 
  5318.  
  5319.     Mmm represents the month in an abbreviated form (Jan, Feb, Mar, Apr, May, 
  5320.     Jun, Jul, Aug, Sep, Oct, Nov, or Dec). 
  5321.  
  5322.     dd represents the day.  If the day is less than 10, the first d will be a 
  5323.     blank character. 
  5324.  
  5325.     yyyy represents the year. 
  5326.  
  5327. __TIME__ 
  5328.     A character string literal containing the time when the source file was 
  5329.     compiled.  The time will be in the form 
  5330.  
  5331.            "hh:mm:ss"
  5332.  
  5333.     where: 
  5334.  
  5335.     hh represents the hour. 
  5336.  
  5337.     mm represents the minutes. 
  5338.  
  5339.     ss represents the seconds. 
  5340.  
  5341. __TIMESTAMP__ 
  5342.     A character string literal containing the date and time when the source 
  5343.     file was last modified. 
  5344.  
  5345.     Note:  This macro is not supported in all environments.  If it is not 
  5346.     supported, the date and time values will be implementation defined. 
  5347.  
  5348.     The date and time will be in the form 
  5349.  
  5350.            "Day Mmm dd hh:mm:ss yyyy"
  5351.  
  5352.     where: 
  5353.  
  5354.     Day represents the day of the week (Mon, Tue, Wed, Thu, Fri, Sat, or Sun). 
  5355.  
  5356.     Mmm represents the month in an abbreviated form (Jan, Feb, Mar, Apr, May, 
  5357.     Jun, Jul, Aug, Sep, Oct, Nov, or Dec). 
  5358.  
  5359.     dd represents the day.  If the day is less than 10, the first d will be a 
  5360.     blank character. 
  5361.  
  5362.     hh represents the hour. 
  5363.  
  5364.     mm represents the minutes. 
  5365.  
  5366.     ss represents the seconds. 
  5367.  
  5368.     yyyy represents the year. 
  5369.  
  5370. __STDC__ 
  5371.     The integer 1 (one). 
  5372.  
  5373.     Note:  This macro is undefined if the language level is set to anything 
  5374.     other than ANSI. 
  5375.  
  5376. __ANSI__ 
  5377.     Allows only language constructs that conform to ANSI C standards. Defined 
  5378.     using the inf.#pragma langlvl directive or inf./Sa option. 
  5379.  
  5380. __SAA__ 
  5381.     Allows only language constructs that conform to the most recent level of 
  5382.     SAA C standards. Defined using the inf.#pragma langlvl directive of inf./S2 
  5383.     option. 
  5384.  
  5385. __SAAL2__ 
  5386.     Allows only language constructs that conform to SAA Level 2 C standards. 
  5387.     Defined using the inf.#pragma langlvldirective of inf./S2 option. 
  5388.  
  5389. __EXTENDED__ 
  5390.     Allows additional language constructs provided by the implementation. 
  5391.     Defined using the inf.#pragma langlvl directive or inf./S2 option. 
  5392.  
  5393. The C/C++ for OS/2 compiler provides several other predefined macros: 
  5394.  
  5395. The C/C++ for OS/2 compiler provides several other predefined macros, described 
  5396. in Additional C/C++ for OS/2 Predefined Macros. 
  5397.  
  5398. -- Reference pmacnot not found -- 
  5399.  
  5400. Related Information 
  5401.  
  5402. o Additional C/C++ for OS/2 Predefined Macros 
  5403. o inf.#pragma langlvl 
  5404. o Source Code Options 
  5405. o Using Compiler Options 
  5406.  
  5407.  
  5408. ΓòÉΓòÉΓòÉ 5.4.1. Additional C/C++ for OS/2 Predefined Macros ΓòÉΓòÉΓòÉ
  5409.  
  5410. ++ for OS/2 predefined ++ for OS/2 compiler 
  5411.  
  5412.      Added CDPI information. If we say this, are there other macros we need to 
  5413.      put in here (like INT_MAX, EDOM, etc)?  C/370 includes them. We might also 
  5414.      want to indicate if the macro is general purpose or internal use only. 
  5415.  
  5416.  The macros identified in this section are provided to allow customers to write 
  5417.  programs that use C/C++ for OS/2 services. Only those macros identified in 
  5418.  this section should be used to request or receive C/C++ for OS/2 services. 
  5419.  
  5420.  The C/C++ for OS/2 compiler provides both the SAA predefined macros and a 
  5421.  number of macros specific to the C/C++ for OS/2 product. These macros cannot 
  5422.  be user-defined or undefined. 
  5423.  
  5424.  The additional macros offered by the C/C++ for OS/2 compiler are: 
  5425.  
  5426.  _CHAR_UNSIGNED 
  5427.      Indicates default character type is unsigned. Defined using the #pragma 
  5428.      chars directive or /J option. 
  5429.  
  5430.  _CHAR_SIGNED 
  5431.      Indicates default character type is signed. Defined using the #pragma 
  5432.      chars directive or /J option. 
  5433.  
  5434.  __DDNAMES__ 
  5435.      Indicates ddnames are supported. Defined using the /Sh option. Defined 
  5436.      using the #pragma langlvl directive or /Sm option. 
  5437.  
  5438.  __FUNCTION__ 
  5439.      Indicates the name of the function currently being compiled. 
  5440.  
  5441.  __MULTI__ 
  5442.      Indicates multithread code is being generated. Defined using the /Gm 
  5443.      option. 
  5444.  
  5445.  __DLL__ 
  5446.      Indicates code for a DLL is being compiled. Defined using the /Ge option. 
  5447.  
  5448.  __SPC__ 
  5449.      Indicates the subsystem libraries are being used. Defined using the /Rn 
  5450.      option. 
  5451.  
  5452.  __DBCS__ 
  5453.      Indicates DBCS support is enabled. Defined using the /Sn option. 
  5454.  
  5455.  __TILED__ 
  5456.      Indicates tiled memory is being used. Defined using the /Gt option. 
  5457.  
  5458.  __IBMC__ 
  5459.      Indicates the version number of the compiler. 
  5460.  
  5461.  __OS2__ 
  5462.      Set to the integer 1 (one).  Indicates the product is an OS/2 compiler. 
  5463.  
  5464.  __32BIT__ 
  5465.      Set to the integer 1 (one).  Indicates the product is a 32-bit compiler. 
  5466.  
  5467.  _M_I386 
  5468.      Indicates code is being compiled for a 386 chip or higher. 
  5469.  
  5470.  The value of the __IBMC__ macro is 200, and is always defined. The macros 
  5471.  __OS2__, _M_I386, and __32BIT__ are always defined also. The remaining macros, 
  5472.  with the exception of __FUNCTION__, are defined when the corresponding #pragma 
  5473.  directive or compiler option is used. 
  5474.  
  5475.  Related Information 
  5476.  
  5477.  o Predefined Macros 
  5478.  o -- Reference pmacnot not found -- 
  5479.  o #pragma chars 
  5480.  o #pragma langlvl 
  5481.  o Code Generation Options 
  5482.  o Source Code Options 
  5483.  o Other Options 
  5484.  o Using Compiler Options 
  5485.  
  5486.  
  5487. ΓòÉΓòÉΓòÉ 5.4.2. Notes and Examples ΓòÉΓòÉΓòÉ
  5488.  
  5489. These predefined macro names consist of two underscore (__) characters 
  5490. immediately preceding the name, the name in uppercase letters, and two 
  5491. underscore characters immediately following the name. 
  5492.  
  5493. The value of __LINE__ will change during compilation as the compiler processes 
  5494. subsequent lines of your source program.  Also, the value of __FILE__, and 
  5495. __TIMESTAMP__ will change as the compiler processes any #include files that are 
  5496. part of your source program. 
  5497.  
  5498. Restrictions 
  5499. Predefined macro names cannot be the subject of a #define or #undef 
  5500. preprocessor directive. However, they can be undefined on the command line 
  5501. using the /U option. 
  5502.  
  5503. Example of Predefined Macros 
  5504.  
  5505. Related Information 
  5506.  
  5507.  o #define 
  5508.  o #undef 
  5509.  o #line 
  5510.  o #pragma 
  5511.  o Using Compiler Options 
  5512.  
  5513.  
  5514. ΓòÉΓòÉΓòÉ 5.5. # Operator ΓòÉΓòÉΓòÉ
  5515.  
  5516. The # (single number sign) operator is used to convert a parameter of a 
  5517. function-like macro (see Function-Like Macro Definition) into a character 
  5518. string literal.  If macro ABC is defined using the following directive 
  5519.  
  5520.    #define ABC(x)   #x
  5521.  
  5522. all subsequent invocations of the macro ABC would be expanded into a character 
  5523. string literal containing the argument passed to ABC. For example: 
  5524.  
  5525. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5526. Γöé INVOCATION           Γöé RESULT OF MACRO EXPANSION Γöé
  5527. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5528. Γöé "ABC(1)"             Γöé "1"                       Γöé
  5529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5530. Γöé "ABC(Hello there)"   Γöé "Hello there"             Γöé
  5531. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5532.  
  5533. Note that the # character is also represented by the trigraph ??=. 
  5534.  
  5535. The # operator should not be confused with the null directive. 
  5536.  
  5537. When you use the # operator in a function-like macro definition, the following 
  5538. rules apply: 
  5539.  
  5540.   1. A parameter in a function-like macro that is preceded by the # operator 
  5541.      will be converted into a character string literal containing the argument 
  5542.      passed to the macro. 
  5543.  
  5544.   2. White space characters that appear before or after the argument passed to 
  5545.      the macro will be deleted. 
  5546.  
  5547.   3. Multiple white space characters imbedded within the argument passed to the 
  5548.      macro will be replaced by a single space character. 
  5549.  
  5550.   4. If the argument passed to the macro contains a string literal, and if a \ 
  5551.      (backslash) character appears within the literal, a second \ character 
  5552.      will be inserted before the original \ when the macro is expanded. 
  5553.  
  5554.   5. If the argument passed to the macro contains a " (double quote) character, 
  5555.      a \ character will be inserted before the " when the macro is expanded. 
  5556.  
  5557.   6. The conversion of an argument into a string literal occurs before macro 
  5558.      expansion on that argument. 
  5559.  
  5560.   7. If more than one ## operator or # operator appears in the replacement list 
  5561.      of a macro definition, the order of evaluation of the operators is not 
  5562.      defined. 
  5563.  
  5564.   8. If the result of the replacement is not a valid character string literal, 
  5565.      the behavior is undefined. 
  5566.  
  5567.  Example of # Operators 
  5568.  
  5569.  Related Information 
  5570.  
  5571.  o #define 
  5572.  o #undef 
  5573.  o ## Operator 
  5574.  o Function-Like Macro Definition 
  5575.  o Preprocessor Directives 
  5576.  
  5577.  
  5578. ΓòÉΓòÉΓòÉ 5.6. ## Operator ΓòÉΓòÉΓòÉ
  5579.  
  5580. The ## (double number sign) operator is used to concatenate two tokens in a 
  5581. macro invocation (text and/or arguments) given in a macro definition.  If a 
  5582. macro XY was defined using the following directive 
  5583.  
  5584.    #define XY(x,y)    x##y
  5585.  
  5586. the last token of the argument for x will be concatenated with the first token 
  5587. of the argument for y. 
  5588.  
  5589. For example, 
  5590.  
  5591. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5592. Γöé INVOCATION      Γöé RESULT OF MACRO EXPANSION Γöé
  5593. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5594. Γöé "XY(1, 2)"      Γöé "12"                      Γöé
  5595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5596. Γöé "XY(Green,      Γöé "Greenhouse"              Γöé
  5597. Γöé house)"         Γöé                           Γöé
  5598. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5599.  
  5600. Note that the # character is also represented by the trigraph ??=. 
  5601.  
  5602. When you use the ## operator, the following rules apply: 
  5603.  
  5604.   1. The ## operator cannot be the very first or very last item in the 
  5605.      replacement list of a macro definition. 
  5606.  
  5607.   2. The last token of the item preceding the ## operator is concatenated with 
  5608.      first token of the item following the ## operator. 
  5609.  
  5610.   3. Concatenation takes place before any macros in arguments are expanded. 
  5611.  
  5612.   4. If the result of a concatenation is a valid macro name, it is available 
  5613.      for further replacement even if it appears in a context in which it would 
  5614.      not normally be available. 
  5615.  
  5616.   5. If more than one ## operator and/or # operator appears in the replacement 
  5617.      list of a macro definition, the order of evaluation of the operators is 
  5618.      not defined. 
  5619.  
  5620.  Example of ## Operators 
  5621.  
  5622.  Related Information 
  5623.  
  5624.  o #define 
  5625.  o #undef 
  5626.  o # Operator 
  5627.  o Preprocessor Directives 
  5628.  
  5629.  
  5630. ΓòÉΓòÉΓòÉ 5.7. #error ΓòÉΓòÉΓòÉ
  5631.  
  5632. A preprocessor error directive causes the preprocessor to generate an error 
  5633. message and causes the compilation to fail. #error directive has the form: 
  5634.  
  5635.               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5636.                           Γöé
  5637. ΓöÇΓöÇ#ΓöÇΓöÇerrorΓöÇΓöÇΓöÇΓöÇcharacterΓöÇΓöÇΓö┤ΓöÇ
  5638.  
  5639. You can use the #error directive as a safety check during compilation.  For 
  5640. example, if your program uses preprocessor conditional compilation directives, 
  5641. (see Conditional Compilation), you can place #error directives in the source 
  5642. file to make the compilation fail if a section of the program is reached that 
  5643. should be bypassed. 
  5644.  
  5645. Example of #error directive 
  5646.  
  5647. Related Information 
  5648.  
  5649.  o Conditional Compilation 
  5650.  o Preprocessor Directives 
  5651.  
  5652.  
  5653. ΓòÉΓòÉΓòÉ 5.8. #include ΓòÉΓòÉΓòÉ
  5654.  
  5655. A preprocessor include directive causes the preprocessor to replace the 
  5656. directive with the contents of the specified file.  A preprocessor #include 
  5657. directive has the form: 
  5658.  
  5659. ΓöÇΓöÇ#ΓöÇΓöÇincludeΓöÇΓöÇΓö¼ΓöÇ " ΓöÇfile_nameΓöÇ " ΓöÇΓö¼ΓöÇΓöÇ
  5660.                 Γöé                   Γöé
  5661.                 Γö£ΓöÇ < ΓöÇfile_nameΓöÇ > ΓöÇΓöñ
  5662.                 Γöé                   Γöé
  5663.                 ΓööΓöÇΓöÇΓöÇΓöÇcharactersΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5664.  
  5665. If the file name is enclosed in double quotes, for example: 
  5666.  
  5667. #include "payroll.h"
  5668. the preprocessor treats it as a user-defined file, and searches for the file in 
  5669. the following places in the order given: 
  5670.  
  5671.   1. The directory where the original .c source file resides. 
  5672.  
  5673.   2. Any directories specified using the inf./I compiler option (that have not 
  5674.      been removed by the inf./Xc option).  Directories specified in the ICC 
  5675.      environment variable are searched before those specified on the command 
  5676.      line. 
  5677.  
  5678.   3. Any directories specified using the INCLUDE environment variable, provided 
  5679.      the inf./Xi option is not in effect. 
  5680.  
  5681.  If the file name is enclosed in angle brackets, for example: 
  5682.  
  5683.   #include <stdio.h>
  5684.  it is treated as a system-defined file, and the preprocessor searches the 
  5685.  following places in the order given: 
  5686.  
  5687.   1. Any directories specified using the inf./I compiler option (that have not 
  5688.      been removed by the inf./Xc option).  Directories specified in the ICC 
  5689.      environment variable are searched before those specified on the command 
  5690.      line. 
  5691.  
  5692.   2. Any directories specified using the INCLUDE environment variable, provided 
  5693.      the inf./Xi option is not in effect. 
  5694.  
  5695.  Note:  If the file name is fully qualified, the preprocessor searches only the 
  5696.  directory specified by the name. 
  5697.  
  5698.  The preprocessor resolves macros on a #include directive.  After macro 
  5699.  replacement, the resulting token sequence must consist of a file name enclosed 
  5700.  in either double quotation marks or the characters < and >.  For example: 
  5701.  
  5702.   #define MONTH <july.h>
  5703.   #include MONTH
  5704.  
  5705.  Usage 
  5706.  If there are a number of declarations used by several files, you can place all 
  5707.  these definitions in one file and #include that file in each file that uses 
  5708.  the definitions.  For example, the following file defs.h contains several 
  5709.  definitions and an inclusion of an additional file of declarations: 
  5710.  
  5711.   /* defs.h */
  5712.   #define TRUE 1
  5713.   #define FALSE 0
  5714.   #define BUFFERSIZE 512
  5715.   #define MAX_ROW 66
  5716.   #define MAX_COLUMN 80
  5717.   int hour;
  5718.   int min;
  5719.   int sec;
  5720.   #include "mydefs.h"
  5721.  
  5722.  You can embed the definitions that appear in defs.h with the following 
  5723.  directive: 
  5724.  
  5725.   #include "defs.h"
  5726.  
  5727.  Related Information 
  5728.  
  5729.  o #define 
  5730.  o Preprocessor Directives 
  5731.  o -- Reference include not found -- 
  5732.  
  5733.  
  5734. ΓòÉΓòÉΓòÉ 5.9. Conditional Compilation ΓòÉΓòÉΓòÉ
  5735.  
  5736. A preprocessor conditional compilation directive causes the preprocessor to 
  5737. conditionally suppress the compilation of portions of source code.  Such 
  5738. directives test a constant expression or an identifier to determine which 
  5739. tokens the preprocessor should pass on to the compiler and which tokens should 
  5740. be ignored. The directives are: 
  5741.  
  5742.  o #if 
  5743.  o #ifdef 
  5744.  o #ifndef 
  5745.  o #elif 
  5746.  o #else 
  5747.  o #endif 
  5748.  
  5749.  For each #if, #ifdef and #ifndef directive, there are zero or more #elif 
  5750.  directives, zero or one #else directive and one matching #endif directive. All 
  5751.  the matching directives are considered to be at the same nesting level. 
  5752.  
  5753.  You can have nested conditional compilation directives. 
  5754.  
  5755.  Example of Nested Conditional Compilation Directives 
  5756.  
  5757.  Each directive controls the block immediately following it.  A block consists 
  5758.  of all the tokens starting on the line following the directive and ending at 
  5759.  the next conditional compilation directive at the same nesting level. 
  5760.  
  5761.  Each directive is processed in the order in which it is encountered. If an 
  5762.  expression evaluates to zero, the block following the directive is ignored. 
  5763.  
  5764.  When a block following a preprocessor directive is to be ignored, the tokens 
  5765.  are examined only to identify preprocessor directives within that block so 
  5766.  that the conditional nesting level can be determined. All tokens other than 
  5767.  the name of the directive are ignored. 
  5768.  
  5769.  Only the first block whose expression is non-zero is processed. The remaining 
  5770.  blocks at that nesting level are ignored. If none of the blocks at that 
  5771.  nesting level have been processed and there is a #else directive, then the 
  5772.  block following the #else directive is processed. If none of the blocks at 
  5773.  that nesting level have been processed and there is no #else directive, the 
  5774.  entire nesting level is ignored. 
  5775.  
  5776.  Examples of Conditional Compilation 
  5777.  
  5778.  Related Information 
  5779.  
  5780.  o #if 
  5781.  o #ifdef 
  5782.  o #ifndef 
  5783.  o #elif 
  5784.  o #else 
  5785.  o #endif 
  5786.  o Preprocessor Directives 
  5787.  
  5788.  
  5789. ΓòÉΓòÉΓòÉ 5.9.1. #if, #elif ΓòÉΓòÉΓòÉ
  5790.  
  5791. The #if and #elif directives compare the value of the expression to zero.  All 
  5792. macros are expanded, any defined() expressions are processed and all remaining 
  5793. identifiers are replaced with the token 0. 
  5794.  
  5795. The preprocessor #if directive has the following form: 
  5796.  
  5797. ΓöÇΓöÇ#ΓöÇΓöÇΓöÇifΓöÇΓöÇΓöÇconstant_expressionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5798.                                   Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5799.                                   Γöé            Γöé Γöé
  5800.                                   ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
  5801.  
  5802. The preprocessor #elif directive has the following form: 
  5803.  
  5804. ΓöÇΓöÇ#ΓöÇΓöÇelifΓöÇΓöÇconstant_expressionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5805.                                   Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5806.                                   Γöé            Γöé Γöé
  5807.                                   ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
  5808.  
  5809. The expressions which are tested must be integer constant expressions which 
  5810. follow the following rules: 
  5811.  
  5812.  o No casts are performed. 
  5813.  o The expression can contain the defined unary operator. The constant 
  5814.    expression can contain the unary operator defined.  This operator can be 
  5815.    used only with the preprocessor keyword #if.  The following expressions 
  5816.    evaluate to 1 if the identifier is defined in the preprocessor, otherwise to 
  5817.    0 (zero): 
  5818.  
  5819.       defined identifier
  5820.       defined(identifier)
  5821.  
  5822.  o The expression can contain defined macros. 
  5823.  o Any arithmetic is performed using long ints. 
  5824.  
  5825.  If the constant expression evaluates to a nonzero value, the tokens that 
  5826.  immediately follow the condition are passed on to the compiler. 
  5827.  
  5828.  Example of #if and #elif Directives 
  5829.  
  5830.  Related Information 
  5831.  
  5832.  o Conditional Compilation 
  5833.  o #ifdef 
  5834.  o #ifndef 
  5835.  o #endif 
  5836.  o Preprocessor Directives 
  5837.  o if 
  5838.  
  5839.  
  5840. ΓòÉΓòÉΓòÉ 5.9.2. #ifdef ΓòÉΓòÉΓòÉ
  5841.  
  5842. The #ifdef directive checks for the existence of macro definitions. 
  5843.  
  5844. If the identifier specified is defined as a macro, the tokens that immediately 
  5845. follow the condition are passed on to the compiler. 
  5846.  
  5847. The preprocessor #ifdef directive has the following form: 
  5848.  
  5849. ΓöÇΓöÇ#ΓöÇΓöÇifdefΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5850.                                   Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5851.                                   Γöé            Γöé Γöé
  5852.                                   ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
  5853.  
  5854. Example of #ifdef Directive 
  5855.  
  5856. Related Information 
  5857.  
  5858.  o Conditional Compilation 
  5859.  o #ifndef 
  5860.  o #if, #elif 
  5861.  o #else 
  5862.  o #endif 
  5863.  o #define 
  5864.  o #undef 
  5865.  o Preprocessor Directives 
  5866.  
  5867.  
  5868. ΓòÉΓòÉΓòÉ 5.9.3. #ifndef ΓòÉΓòÉΓòÉ
  5869.  
  5870. The #ifndef directive checks for the existence of macro definitions. 
  5871.  
  5872. If the identifier specified is not defined as a macro, the tokens that 
  5873. immediately follow the condition are passed on to the compiler. 
  5874.  
  5875. The preprocessor #ifndef directive has the following form: 
  5876.  
  5877. ΓöÇΓöÇ#ΓöÇΓöÇifndefΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5878.                                   Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5879.                                   Γöé            Γöé Γöé
  5880.                                   ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
  5881.  
  5882. Example of #ifndef Directive 
  5883.  
  5884. Related Information 
  5885.  
  5886.  o Conditional Compilation 
  5887.  o #ifdef 
  5888.  o #if, #elif 
  5889.  o #else 
  5890.  o #endif 
  5891.  o #define 
  5892.  o #undef 
  5893.  o Preprocessor Directives 
  5894.  
  5895.  
  5896. ΓòÉΓòÉΓòÉ 5.9.4. #else ΓòÉΓòÉΓòÉ
  5897.  
  5898. If the condition specified in the #if, #ifdef, or #ifndef directive evaluates 
  5899. to 0 (zero), and the conditional compilation directive contains a preprocessor 
  5900. #else directive, the source text located between the preprocessor #else 
  5901. directive and the preprocessor #endif directive is selected by the preprocessor 
  5902. to be passed on to the compiler. The preprocessor #else directive has the form: 
  5903.  
  5904. ΓöÇΓöÇ#ΓöÇΓöÇelseΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  5905.              Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  5906.              Γöé            Γöé Γöé
  5907.              ΓööΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÿ
  5908.  
  5909. Example of #else Directive 
  5910.  
  5911. Related Information 
  5912.  
  5913.  o Conditional Compilation 
  5914.  o #if, #elif 
  5915.  o #ifdef 
  5916.  o #ifndef 
  5917.  o #endif 
  5918.  o Preprocessor Directives 
  5919.  
  5920.  
  5921. ΓòÉΓòÉΓòÉ 5.9.5. #endif ΓòÉΓòÉΓòÉ
  5922.  
  5923. The preprocessor #endif directive ends the conditional compilation directive. 
  5924. The preprocessor #endif directive has the form: 
  5925.  
  5926. ΓöÇΓöÇ#ΓöÇΓöÇendifΓöÇΓöÇ
  5927.  
  5928. Example of #endif 
  5929.  
  5930. Related Information 
  5931.  
  5932.  o Conditional Compilation 
  5933.  o #if, #elif 
  5934.  o #ifdef 
  5935.  o #ifndef 
  5936.  o #else 
  5937.  o Preprocessor Directives 
  5938.  
  5939.  
  5940. ΓòÉΓòÉΓòÉ 5.10. #line ΓòÉΓòÉΓòÉ
  5941.  
  5942. A preprocessor line control directive causes the compiler to view the line 
  5943. number of the next source line as the specified number.  A preprocessor #line 
  5944. directive has the form: 
  5945.  
  5946. ΓöÇΓöÇ#ΓöÇΓöÇlineΓöÇΓöÇΓö¼ΓöÇΓöÇdecimal_constantΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇ
  5947.              Γöé                    Γöé                   Γöé Γöé
  5948.              Γöé                    ΓööΓöÇΓöÇ"ΓöÇΓöÇfile_nameΓöÇΓöÇ"ΓöÇΓöÇΓöÿ Γöé
  5949.              Γöé                                          Γöé
  5950.              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇcharactersΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5951.  
  5952. A file name specification enclosed in double quotation marks can follow the 
  5953. line number.  If you specify a file name, the compiler views the next line as 
  5954. part of the specified file.  If you do not specify a file name, the compiler 
  5955. views the next line as part of the current source file. 
  5956.  
  5957. The token sequence on a #line directive is subject to macro replacement.  After 
  5958. macro replacement, the resulting character sequence must consist of a decimal 
  5959. constant, optionally followed by a file name enclosed in double quotation 
  5960. marks. 
  5961.  
  5962. Example of #line Directives 
  5963.  
  5964. Related Information 
  5965.  
  5966.  o Preprocessor Directives 
  5967.  o Decimal Constants 
  5968.  
  5969.  
  5970. ΓòÉΓòÉΓòÉ 5.11. # (Null Directive) ΓòÉΓòÉΓòÉ
  5971.  
  5972. The null directive performs no action.  The null directive consists of a single 
  5973. # on a line of its own. 
  5974.  
  5975. The null directive should not be confused with the # operator or the character 
  5976. that starts a preprocessor directive. 
  5977.  
  5978. Example of # (Null Statements) 
  5979.  
  5980. Related Information 
  5981.  
  5982.  o Preprocessor Directives 
  5983.  o Null Statement 
  5984.  
  5985.  
  5986. ΓòÉΓòÉΓòÉ 5.12. #pragma ΓòÉΓòÉΓòÉ
  5987.  
  5988. A pragma is an implementation defined instruction to the compiler.  It has the 
  5989. general form given below, where character sequence is a series of characters 
  5990. giving a specific compiler instruction and arguments, if any. 
  5991.  
  5992.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5993.                                      Γöé
  5994. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇΓöÇΓöÇΓöÇcharacter_sequenceΓöÇΓöÇΓö┤ΓöÇΓöÇ
  5995.  
  5996. The character sequence on a pragma is not subject to macro substitutions.  More 
  5997. than one pragma construct can be specified on a single #pragma directive. 
  5998.  
  5999. The following pragmas are available: 
  6000.  
  6001.  o alloc_text 
  6002.  o chars 
  6003.  o checkout 
  6004.  o comment 
  6005.  o data_seg 
  6006.  o entry 
  6007.  o export 
  6008.  o handler 
  6009.  o import 
  6010.  o info 
  6011.  o langlvl 
  6012.  o linkage 
  6013.  o map 
  6014.  o margins 
  6015.  o pack 
  6016.  o page 
  6017.  o pagesize 
  6018.  o seg16 
  6019.  o sequence 
  6020.  o skip 
  6021.  o stack16 
  6022.  o strings 
  6023.  o subtitle 
  6024.  o title 
  6025.  
  6026.  Examples of #pragma directives 
  6027.  
  6028.  Related Information 
  6029.  
  6030.  o Preprocessor Directives 
  6031.  
  6032.  Some #pragma directives must appear in a certain place in your source, or can 
  6033.  appear a limited number of times. The following table lists the restrictions 
  6034.  for #pragma directives. 
  6035.  
  6036.   #pragma:font facename=default
  6037.   size=0x0. Restrictions
  6038.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6039.   Γöé                                                                Γöé
  6040.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6041.   Γöé :FONT    Γöé RESTRICTION ON NUMBER  Γöé RESTRICTION OF PLACEMENT   Γöé
  6042.   Γöé FACENAME=ΓöéOOFIOCCURRENCES         Γöé                            Γöé
  6043.   Γöé SIZE=15X1Γöé.#PRAGMA:FONT           Γöé                            Γöé
  6044.   Γöé FACENAME=ΓöéEFAULT                  Γöé                            Γöé
  6045.   Γöé SIZE=0X0.Γöé                        Γöé                            Γöé
  6046.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6047.   Γöé :font    Γöé Once                   Γöé On the first :font         Γöé
  6048.   Γöé facename=Γöéourier                  Γöé facename=Courier           Γöé
  6049.   Γöé size=15x1Γöé.chars:font             Γöé size=15x12.#pragma:font    Γöé
  6050.   Γöé facename=Γöéefault                  Γöé facename=default size=0x0. Γöé
  6051.   Γöé size=0x0.Γöé                        Γöé directive, and before any  Γöé
  6052.   Γöé          Γöé                        Γöé code or directive (except  Γöé
  6053.   Γöé          Γöé                        Γöé "#line")                   Γöé
  6054.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6055.   Γöé :font    Γöé "compiler" and         Γöé "copyright" directive must Γöé
  6056.   Γöé facename=Γöéo"timestamp" directives Γöé appear before any code     Γöé
  6057.   Γöé size=15x1Γöé.canmappearnonly once   Γöé                            Γöé
  6058.   Γöé facename=Γöéefault                  Γöé                            Γöé
  6059.   Γöé size=0x0.Γöé                        Γöé                            Γöé
  6060.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6061.   Γöé :font    Γöé Once for each source   Γöé                            Γöé
  6062.   Γöé facename=Γöéofiler                  Γöé                            Γöé
  6063.   Γöé size=15x1Γöé.entry:font             Γöé                            Γöé
  6064.   Γöé facename=Γöéefault                  Γöé                            Γöé
  6065.   Γöé size=0x0.Γöé                        Γöé                            Γöé
  6066.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6067.   Γöé :font    Γöé Once                   Γöé On the first :font         Γöé
  6068.   Γöé facename=Γöéourier                  Γöé facename=Courier           Γöé
  6069.   Γöé size=15x1Γöé.langlvl:font           Γöé size=15x12.#pragma:font    Γöé
  6070.   Γöé facename=Γöéefault                  Γöé facename=default size=0x0. Γöé
  6071.   Γöé size=0x0.Γöé                        Γöé directive, and before any  Γöé
  6072.   Γöé          Γöé                        Γöé code or directive (except  Γöé
  6073.   Γöé          Γöé                        Γöé "#line")                   Γöé
  6074.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6075.   Γöé :font    Γöé Once for each function Γöé Before any declaration of  Γöé
  6076.   Γöé facename=Γöéourier                  Γöé or call to the function    Γöé
  6077.   Γöé size=15x1Γöé.linkage:font           Γöé                            Γöé
  6078.   Γöé facename=Γöéefault                  Γöé                            Γöé
  6079.   Γöé size=0x0.Γöé                        Γöé                            Γöé
  6080.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6081.   Γöé :font    Γöé Once                   Γöé Before any code            Γöé
  6082.   Γöé facename=Γöéourier                  Γöé                            Γöé
  6083.   Γöé size=15x1Γöé.strings:font           Γöé                            Γöé
  6084.   Γöé facename=Γöéefault                  Γöé                            Γöé
  6085.   Γöé size=0x0.Γöé                        Γöé                            Γöé
  6086.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6087.  
  6088.  
  6089. ΓòÉΓòÉΓòÉ 5.12.1. alloc_text ΓòÉΓòÉΓòÉ
  6090.  
  6091. The #pragma alloc_text directive lets you group functions into different 32-bit 
  6092. code segments. 
  6093.  
  6094.                                           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6095.  ΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇalloc_textΓöÇΓöÇ(ΓöÇΓöÇcodesegmentΓöÇΓöÇ,ΓöÇΓöÇfunctionΓöÇΓö┤ΓöÇΓöÇ
  6096.  
  6097. The codesegment is the name of the code segment in which you want to place 
  6098. function.  You can specify any number of functions to be included in the named 
  6099. codesegment. 
  6100.  
  6101. Functions that are not grouped in a code segment by #pragma alloc_text are 
  6102. placed in the default 32-bit code segment CODE32. You can also use #pragma 
  6103. alloc_text to explicitly place functions in CODE32 by specifying it as the 
  6104. codesegment. 
  6105.  
  6106. Defining your own code segments allows you to organize functions in memory so 
  6107. that the working set requires fewer pages of memory.  You can also specify 
  6108. attributes for each segment, such as execute-only. You specify attributes for 
  6109. code segments in a module definition (.DEF) file. 
  6110.  
  6111. For example, if you had both 32-bit and 16-bit functions that you wanted to 
  6112. call from other programs, you could place the functions in a single code 
  6113. segment as follows: 
  6114.  
  6115.    #pragma alloc_text(mysegment, 32func, 16func, otherfunc)
  6116.  
  6117. and use the following statement in the .DEF file for the program: 
  6118.  
  6119.    SEGMENTS
  6120.       mysegment  MIXED1632 ALIAS
  6121.  
  6122. MIXED1632 specifies that the segment contains both 16-bit and 32-bit code, and 
  6123. ALIAS specifies that your code can be called from other 32-bit programs or from 
  6124. 16-bit far calls. 
  6125.  
  6126. For more information on attributes and how to specify them in a .DEF file, see 
  6127. the OS/2 2.0 Developer's Toolkit documentation for the LINK386 program. 
  6128.  
  6129. Related Information 
  6130.  
  6131.  o -- Link Reference pdatseg not found --#pragma data_seg 
  6132.  o #pragma 
  6133.  o Preprocessor Directives 
  6134.  
  6135.  
  6136. ΓòÉΓòÉΓòÉ 5.12.2. chars ΓòÉΓòÉΓòÉ
  6137.  
  6138. Specifies that the compiler is to treat all char objects as signed or unsigned. 
  6139. This pragma must appear before any statements in a file. 
  6140.  
  6141. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcharsΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇsignedΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
  6142.                          Γöé            Γöé
  6143.                          ΓööΓöÇΓöÇunsignedΓöÇΓöÇΓöÿ
  6144.  
  6145. Related Information 
  6146.  
  6147.  o Characters 
  6148.  o #pragma 
  6149.  o Preprocessor Directives 
  6150.  
  6151.  
  6152. ΓòÉΓòÉΓòÉ 5.12.3. checkout ΓòÉΓòÉΓòÉ
  6153.  
  6154. The #pragma checkout directive controls the diagnostic messages generated by 
  6155. the /Kn compiler options. 
  6156.  
  6157.  ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcheckoutΓöÇΓöÇ(ΓöÇΓö¼ΓöÇresumeΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  6158.                             ΓööΓöÇsuspendΓöÇΓöÿ
  6159.  
  6160. It lets you suspend the diagnostics performed by the /Kn options during 
  6161. specific portions of your program, and then resume the same level of 
  6162. diagnostics at some later point in the file. 
  6163.  
  6164. Note:  To provide greater control over diagnostic messages, the inf./Wgrp 
  6165.        options have been added.  The C/C++ for OS/2 C compiler will map the /Kn 
  6166.        options to the appropriate /Wgrp option. It will also map #pragma 
  6167.        checkout to inf.#pragma &pinfo.. The C/C++ for OS/2 C++ compiler will 
  6168.        map the /Kn options, but will ignore #pragma checkout directives. 
  6169.  
  6170. Support for the /Kn options and #pragma checkout will eventually be removed 
  6171. from the C/C++ for OS/2 product.  Therefore you should avoid using them in any 
  6172. new code. 
  6173.  
  6174. Nested #pragma checkout directives are allowed and behave as follows: 
  6175.  
  6176. /*  Assume /Kpx has been specified  */
  6177. #pragma checkout(suspend)  /*  No diagnostics are performed */
  6178.    .
  6179.    .
  6180.    .
  6181. #pragma checkout(suspend)  /*  No effect  */
  6182.    .
  6183.    .
  6184.    .
  6185. #pragma checkout(resume)   /*  No effect  */
  6186.    .
  6187.    .
  6188.    .
  6189. #pragma checkout(resume)   /*  Diagnostics continue  */
  6190.  
  6191. The #pragma checkout directive affects all /Kn options specified. 
  6192.  
  6193. Related Information 
  6194.  
  6195.  o inf./Kn Options 
  6196.  o Using the /Wgrp Diagnostic Options 
  6197.  o inf.#pragma info 
  6198.  o #pragma 
  6199.  o Preprocessor Directives 
  6200.  
  6201.  
  6202. ΓòÉΓòÉΓòÉ 5.12.4. comment ΓòÉΓòÉΓòÉ
  6203.  
  6204. Emits a comment into the object file. 
  6205.  
  6206. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇcommentΓöÇΓöÇ(ΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇcompilerΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
  6207.                           Γöé  Γöé             Γöé                    Γöé
  6208.                           Γöé  Γö£ΓöÇΓöÇdateΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                    Γöé
  6209.                           Γöé  Γöé             Γöé                    Γöé
  6210.                           Γöé  ΓööΓöÇΓöÇtimestampΓöÇΓöÇΓöÿ                    Γöé
  6211.                           Γöé                                     Γöé
  6212.                           ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇcopyrightΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6213.                              Γöé             Γöé  Γöé                 Γöé
  6214.                              ΓööΓöÇΓöÇuserΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇ,ΓöÇ"characters"ΓöÇΓöÿ
  6215. The comment type can be: 
  6216.  
  6217.  o compiler - the name and version of the compiler is emitted into the end of 
  6218.    the generated object module. 
  6219.  o date - the date and time of compilation is emitted into the end of the 
  6220.    generated object module. 
  6221.  o timestamp - the last modification date and time of the source is emitted 
  6222.    into the end of the generated object module. 
  6223.  o copyright - the text specified by the character field is placed by the 
  6224.    compiler into the generated object module and is loaded into memory when the 
  6225.    program is run. 
  6226.  o user - the text specified by the character field is placed by the compiler 
  6227.    into the generated object but is not loaded into memory when the program is 
  6228.    run. 
  6229.  
  6230.  Related Information 
  6231.  
  6232.  o #pragma 
  6233.  o Preprocessor Directives 
  6234.  
  6235.  
  6236. ΓòÉΓòÉΓòÉ 5.12.5. data_seg ΓòÉΓòÉΓòÉ
  6237.  
  6238. The #pragma data_seg directive lets you place static and external variables in 
  6239. different 32-bit data segments. 
  6240.  
  6241.  ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇdata_segΓöÇΓöÇ(ΓöÇΓöÇdatasegmentΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  6242.  
  6243. All static and external variables defined after the #pragma data_seg directive 
  6244. are placed in the named datasegment until another #pragma data_seg statement is 
  6245. found or the end of the compilation unit is reached. 
  6246.  
  6247. Restriction  Writable string literals used to initialize pointers are not 
  6248.              placed in the named datasegment, but in the default 32-bit data 
  6249.              segment (DATA32).  To place a string in a particular data segment, 
  6250.              use an array to initialize the string instead of a pointer. For 
  6251.              example: 
  6252.  
  6253.                              char a[] = "mystring";
  6254.              instead of 
  6255.  
  6256.                              char *a = "mystring";
  6257.  
  6258.  Static and external variables defined before the first #pragma data_seg 
  6259.  directive are placed in the default DATA32 segment, with the exception of 
  6260.  uninitialized variables and variables explicitly initialized to zero, which 
  6261.  are placed in the BSS32 segment. You can also use #pragma data_seg to 
  6262.  explicitly place variables in the DATA32 segment by specifying no datasegment, 
  6263.  for example, #pragma data_seg(). However, you cannot use the CONST or BSS32 
  6264.  segments in a #pragma data_seg directive. 
  6265.  
  6266.  Note:  Because the variables in the BSS32 data segment are initialized at 
  6267.  load-time and loaded separately from the rest of your program, they take less 
  6268.  space in your executable file. If you place these variables in a different 
  6269.  data segment, this optimization does not take place, and the size of your 
  6270.  executable module will increase.  For this reason, if the size of your 
  6271.  executable file is critical to you, you should define all variables 
  6272.  initialized to zero (either explicitly or by default) before the first 
  6273.  occurrence of #pragma data_seg. 
  6274.  
  6275.  Defining your own data segments allows you to group data depending on how it 
  6276.  is used and to specify different attributes for different groups of data, such 
  6277.  as when the data should be loaded. You specify attributes for data segments in 
  6278.  a module definition (.DEF) file. 
  6279.  
  6280.  For example, when you build a DLL, you might have one set of data that you 
  6281.  want to make global for all processes that use the DLL, and a different set of 
  6282.  data that you want to copy for each process. You could use #pragma data_seg to 
  6283.  place the data in two different segments as follows: 
  6284.  
  6285.      #pragma data_seg(globdata)
  6286.  
  6287.      static int counter1 = 0;
  6288.      static int counter2 = 0;
  6289.      .
  6290.      .
  6291.      .
  6292.      #pragma data_seg(instdata)
  6293.  
  6294.      static int instcount1 = 0;
  6295.      static int instcount2 = 0;
  6296.      .
  6297.      .
  6298.      .
  6299.  
  6300.  You could then place the following statements in the program's .DEF file: 
  6301.  
  6302.      SEGMENTS
  6303.         globdata CLASS 'DATA' SHARED
  6304.         instdata CLASS 'DATA' NONSHARED
  6305.  
  6306.  SHARED specifies that the data in the globdata segment is global or shared by 
  6307.  all processes that use the DLL. NONSHARED means that each process gets its own 
  6308.  copy of the data in the instdata segment. 
  6309.  
  6310.  For more information on attributes and how to specify them in a .DEF file, see 
  6311.  the OS/2 2.0 Developer's Toolkit documentation for the LINK386 program. 
  6312.  
  6313.  Related Information 
  6314.  
  6315.  o -- Link Reference alloct not found --#pragma alloc_text 
  6316.  o #pragma 
  6317.  o Preprocessor Directives 
  6318.  
  6319.  
  6320. ΓòÉΓòÉΓòÉ 5.12.6. entry ΓòÉΓòÉΓòÉ
  6321.  
  6322. The #pragma entry directive specifies the function to be used as the entry 
  6323. point for the application being built. 
  6324.  
  6325. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6326. Γöé                                                                Γöé
  6327. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇentryΓöÇΓöÇ(ΓöÇΓöÇfunc_nameΓöÇΓöÇ)ΓöÇΓöÇ><                    Γöé
  6328. Γöé                                                                Γöé
  6329. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6330.  
  6331. The func_name function must be in the same compilation unit as the #pragma 
  6332. entry directive, and must be a defined external function. 
  6333.  
  6334. Normally when an application is started, the OS/2 system calls the C library 
  6335. entry point.  When you specify a different entry point using #pragma entry, the 
  6336. system calls that entry point and does not perform any C library initialization 
  6337. or termination. If you use #pragma entry, you must ensure that your executable 
  6338. file does not require library initialization or termination, or provide your 
  6339. own intialization and termination functions. 
  6340.  
  6341.  
  6342. ΓòÉΓòÉΓòÉ 5.12.7. export ΓòÉΓòÉΓòÉ
  6343.  
  6344. The #pragma export directive declares that a DLL function is to be exported and 
  6345. specifies the name the function will be called by outside the DLL. 
  6346.  
  6347. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6348. Γöé                                                                Γöé
  6349. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇexportΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ,ΓöÇΓöÇ>                       Γöé
  6350. Γöé                                                                Γöé
  6351. Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ,ΓöÇΓöÇordinalΓöÇΓöÇ)ΓöÇΓöÇ><                    Γöé
  6352. Γöé    ΓööΓöÇ"ΓöÇΓöÇexport_nameΓöÇΓöÇ"ΓöÇΓöÿ                                       Γöé
  6353. Γöé                                                                Γöé
  6354. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6355.  
  6356. The function is the name of the function in the DLL.  The export_name is the 
  6357. name for function outside of the DLL.  If no export_name is specified, function 
  6358. is used. 
  6359.  
  6360. The ordinal is the number of the function within the DLL. Another module can 
  6361. import function using either the export_name or the ordinal number. Ordinal 
  6362. numbers are described in more detail in the OS/2 2.0 Developer's Toolkit 
  6363. documentation. 
  6364.  
  6365. For example, the statements: 
  6366.  
  6367.    int elaine(int);
  6368.    #pragma export(elaine, catherine, 4)
  6369.  
  6370. declare that the function elaine is to be exported, and can be imported by 
  6371. another module using the name catherine or the ordinal number 4. See import for 
  6372. information on importing functions. 
  6373.  
  6374. You can also use the -- Link Reference expkey not found --_Export keyword to 
  6375. export a function. If you use the keyword, you cannot specify a different name 
  6376. or an ordinal for the exported function. 
  6377.  
  6378. If you use #pragma export to export your function, you may still need to 
  6379. provide an EXPORTS entry for that function in your module definition (.DEF) 
  6380. file.  If your function has certain default characteristics, namely: 
  6381.  
  6382.  o Has shared data 
  6383.  o Has no I/O privileges 
  6384.  o Is not resident 
  6385.  it does not require an EXPORTS entry.  If your function has characteristics 
  6386.  other than the defaults, the only way you can specify them is with an EXPORTS 
  6387.  entry in your .DEF file. 
  6388.  
  6389.  Note:  To create an import library for the DLL, you must either create it from 
  6390.  the DLL itself or provide a .DEF file with an EXPORTS entry for every 
  6391.  function, regardless of whether #pragma export is used. 
  6392.  
  6393.  
  6394. ΓòÉΓòÉΓòÉ 5.12.8. handler ΓòÉΓòÉΓòÉ
  6395.  
  6396. The #pragma handler directive registers an exception handler for a function. 
  6397.  
  6398.  ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇhandlerΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
  6399.  
  6400. The function is the name of the function for which the exception handler is to 
  6401. be registered.  You should declare it before you use it in this directive. 
  6402.  
  6403. The #pragma handler directive generates the code at compile time to install the 
  6404. C/C++ for OS/2 exception handler, _Exception, before starting execution of the 
  6405. function.  It also generates code to remove the exception handler at function 
  6406. exit. 
  6407.  
  6408. You must use this directive whenever you change library environments or enter a 
  6409. user-created DLL. 
  6410.  
  6411. Note:  If you are using the subsystem libraries, the _Exception function is not 
  6412. provided. To use the #pragma handler directive in a subsystem, you must provide 
  6413. your own exception handler named _Exception. Otherwise, you must register and 
  6414. remove your own exception handlers using the OS/2 exception handler APIs 
  6415. described in the IBM OS/2 2.0 Programming Reference. 
  6416.  
  6417. Related Information 
  6418.  
  6419.  o #pragma 
  6420.  o Preprocessor Directives 
  6421.  
  6422.  
  6423. ΓòÉΓòÉΓòÉ 5.12.9. import ΓòÉΓòÉΓòÉ
  6424.  
  6425. The #pragma import directive lets you import a function from a DLL using either 
  6426. an ordinal number or a different function name than it has in the DLL. 
  6427.  
  6428. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6429. Γöé                                                                Γöé
  6430. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇimportΓöÇΓöÇ(ΓöÇΓöÇfunctionΓöÇΓöÇ,ΓöÇΓöÇ>                     Γöé
  6431. Γöé                                                                Γöé
  6432. Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ,ΓöÇΓöÇ"ΓöÇΓöÇmod_nameΓöÇΓöÇ"ΓöÇΓöÇ,ΓöÇΓöÇordinalΓöÇΓöÇ>   Γöé
  6433. Γöé    ΓööΓöÇ"ΓöÇΓöÇexternal_nameΓöÇΓöÇ"ΓöÇΓöÿ                                     Γöé
  6434. Γöé                                                                Γöé
  6435. Γöé >ΓöÇΓöÇ)ΓöÇΓöÇ><                                                       Γöé
  6436. Γöé                                                                Γöé
  6437. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6438.  
  6439. The function is the name you use in your source to call the function.  The 
  6440. external_name is the name of the function in the DLL.  For C++ files, it can 
  6441. also be a function prototype. If external_name is not specified, it is assumed 
  6442. to be the same as function. 
  6443.  
  6444. Note:  Both function and external_name must be unique names in each compilation 
  6445. unit, meaning each name can be defined only once. 
  6446.  
  6447. The mod_name is the name of the DLL containing the function, and ordinal 
  6448. indicates the position of the function within the DLL. Ordinal numbers are 
  6449. described in more detail in the OS/2 2.0 Developer's Toolkit documentation. 
  6450.  
  6451. The information provided by #pragma import is used at load time to locate the 
  6452. imported function.  If ordinal is 0, the external_name is used to find the 
  6453. function. If ordinal is any other number, external_name is ignored and the 
  6454. function is located by number. It is usually faster to locate the function by 
  6455. number than by name. 
  6456.  
  6457. Using #pragma import decreases your link time because the linker does not 
  6458. require an import library to resolve external names. This #pragma directive is 
  6459. also useful for C++ programming because you do not have to use the 
  6460. fully-qualified function name to call an imported function. 
  6461.  
  6462. Note:  You cannot use the ordinals provided in the OS/2 2.0 Developer's Toolkit 
  6463. header files with #pragma import.  These ordinals are provided as C macros 
  6464. which cannot be used in #pragma directives. 
  6465.  
  6466.  
  6467. ΓòÉΓòÉΓòÉ 5.12.10. info ΓòÉΓòÉΓòÉ
  6468.  
  6469. The #pragma &pinfo. directive controls the diagnostic messages generated by the 
  6470. /Wgrp compiler options. 
  6471.  
  6472. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6473. Γöé                                                                Γöé
  6474. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇinfoΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇallΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ><               Γöé
  6475. Γöé                           Γö£ΓöÇnoneΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                      Γöé
  6476. Γöé                           Γö£ΓöÇrestoreΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                      Γöé
  6477. Γöé                           Γöé <ΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ< Γöé                      Γöé
  6478. Γöé                           ΓööΓöÇΓöÇΓö¼ΓöÇgrpΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ                      Γöé
  6479. Γöé                              ΓööΓöÇnogrpΓöÇΓöÿ                         Γöé
  6480. Γöé                                                                Γöé
  6481. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6482.  
  6483. You can use this #pragma directive in place of the inf./Wgrp option to turn 
  6484. groups of diagnostics on or off. Specifying #pragma info(grp) causes all 
  6485. messages associated with that diagnostic group to be generated.  Specifying 
  6486. #pragma info(nogrp) suppresses all messages associated with that group. 
  6487.  
  6488. For example, to generate messages for missing function prototypes and 
  6489. statements with no effect, but not for uninitialized variables, specify: 
  6490.  
  6491.    #pragma info(pro, eff, nouni)
  6492. The #pragma directive overrides any /Wgrp options stated on the command line. 
  6493.  
  6494. Use #pragma info(all) to turn on all diagnostic checking. You can also use 
  6495. #pragma info(none) to turn off all diagnostic suboptions for specific portions 
  6496. of your program. Specifying #pragma info(restore) restores the options that 
  6497. were in effect before the previous #pragma &info. directive.  Because #pragma 
  6498. info operates like a stack, this does not necessarily mean the options given on 
  6499. the command line.  If no options were previously in effect, #pragma 
  6500. info(restore) does nothing. 
  6501.  
  6502. The #pragma &pinfo. directive replaces the #pragma checkout directive for 
  6503. controlling diagnostics.  The C/C++ for OS/2 compiler will map #pragma 
  6504. checkout(suspend) and #pragma checkout(resume) to #pragma info(none) and 
  6505. #pragma info(restore), respectively. 
  6506.  
  6507. The following list describes the groups of diagnostic messages controlled by 
  6508. each grp option: 
  6509.  
  6510.  Group   Diagnostics 
  6511.  cmp     Possible redundancies in unsigned comparisons 
  6512.  cnd     Possible redundancies or problems in conditional expressions. 
  6513.  cns     Operations involving constants. 
  6514.  cnv     Conversions. 
  6515.  dcl     Consistency of declarations. 
  6516.  eff     Statements with no effect. 
  6517.  enu     Consistency of enum variables. 
  6518.  ext     Unused external definitions. 
  6519.  gen     General diagnostics. 
  6520.  got     Usage of goto statements. 
  6521.  ini     Possible problems with initialization. 
  6522.  lan     Effects of the language level. 
  6523.  obs     Features that are obsolete. 
  6524.  ord     Unspecified order of evaluation. 
  6525.  par     Unused parameters. 
  6526.  por     Non-portable language constructs. 
  6527.  ppc     Possible problems with using the preprocessor. 
  6528.  ppt     Trace of preprocessor actions. 
  6529.  pro     Missing function prototypes. 
  6530.  rea     Code that cannot be reached. 
  6531.  ret     Consistency of return statements. 
  6532.  trd     Possible truncation or loss of data or precision. 
  6533.  tru     Variable names truncated by the compiler. 
  6534.  uni     Uninitialized variables 
  6535.  use     Unused auto and static variables. 
  6536.  
  6537.  Related Information 
  6538.  
  6539.  o inf.#pragma checkout 
  6540.  o Using the /Wgrp Diagnostic Options 
  6541.  o Debugging and Diagnostic Information Options 
  6542.  o #pragma 
  6543.  o Preprocessor Directives 
  6544.  
  6545.  
  6546. ΓòÉΓòÉΓòÉ 5.12.11. langlvl ΓòÉΓòÉΓòÉ
  6547.  
  6548. The #pragma langlvl directive lets you select elements of the C/C++ for OS/2 
  6549. implementation to be allowed or disallowed. 
  6550.  
  6551. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6552. Γöé                                                                Γöé
  6553. Γöé                              ΓöîΓöÇextendedΓöÇΓöÉ                      Γöé
  6554. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇlanglvlΓöÇΓöÇ(ΓöÇΓöÇΓö╝ΓöÇansiΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ)ΓöÇΓöÇ><               Γöé
  6555. Γöé                              Γö£ΓöÇsaaΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                      Γöé
  6556. Γöé                              ΓööΓöÇsaal2ΓöÇΓöÇΓöÇΓöÇΓöÿ                      Γöé
  6557. Γöé                                                                Γöé
  6558. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6559.  
  6560. This directive can be specified only once in your source file, and must appear 
  6561. before any C code. 
  6562.  
  6563. The compiler defines preprocessor variables that are used in header files to 
  6564. define the language level.  The options are as follows: 
  6565.  
  6566.  ansi        Defines the preprocessor variables __ANSI__ and __STDC__.  Allows 
  6567.              only language constructs that conform to ANSI C standards. 
  6568.  
  6569.  saa         Defines the preprocessor variables __SAA__ and __SAA_L2__.  Allows 
  6570.              only language constructs that conform to the most recent level of 
  6571.              SAA C standards (currently Level 2).  These include ANSI C 
  6572.              constructs. 
  6573.  
  6574.  saal2       Defines the preprocessor variable __SAA_L2__.  Allows only 
  6575.              language constructs that conform to SAA Level 2 C standards. 
  6576.              These include ANSI C constructs. 
  6577.  
  6578.  extended    Defines the preprocessor variable __EXTENDED__.  Allows ANSI and 
  6579.              SAA C constructs and all C/C++ for OS/2 extensions. 
  6580.  
  6581.  The default language level is extended. 
  6582.  
  6583.  The language level can also be set using the inf./Sa, /S2:exph, and /Se 
  6584.  compiler options. These options are described in Source Code Options. 
  6585.  
  6586.  Related Information 
  6587.  
  6588.  o inf./Sa, /S2, /Se, /Sm Options 
  6589.  o Predefined Macros 
  6590.  o #pragma 
  6591.  o Preprocessor Directives 
  6592.  
  6593.  
  6594. ΓòÉΓòÉΓòÉ 5.12.12. linkage ΓòÉΓòÉΓòÉ
  6595.  
  6596. The #pragma linkage directive identifies the linkage or calling convention used 
  6597. on a function call. 
  6598.  
  6599. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6600. Γöé                                                                Γöé
  6601. Γöé >>ΓöÇΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇlinkageΓöÇ(ΓöÇΓöÇidentifierΓöÇ,ΓöÇΓöÇ>                      Γöé
  6602. Γöé                                                                Γöé
  6603. Γöé    ΓöîΓöÇoptlinkΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                                    Γöé
  6604. Γöé >ΓöÇΓöÇΓö╝ΓöÇsystemΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇ)ΓöÇΓöÇ><                             Γöé
  6605. Γöé    Γö£ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇpascalΓöÇΓöÇΓöÇΓöÇΓöñ                                    Γöé
  6606. Γöé    Γöé ΓööΓöÇfar32ΓöÇΓöÿ            Γöé                                    Γöé
  6607. Γöé    ΓööΓöÇfar16ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÿ                                    Γöé
  6608. Γöé             Γö£ΓöÇcdeclΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                                      Γöé
  6609. Γöé             Γö£ΓöÇ_cdeclΓöÇΓöÇΓöÇΓöÇΓöñ                                      Γöé
  6610. Γöé             Γö£ΓöÇpascalΓöÇΓöÇΓöÇΓöÇΓöñ                                      Γöé
  6611. Γöé             Γö£ΓöÇ_pascalΓöÇΓöÇΓöÇΓöñ                                      Γöé
  6612. Γöé             Γö£ΓöÇfastcallΓöÇΓöÇΓöñ                                      Γöé
  6613. Γöé             ΓööΓöÇ_fastcallΓöÇΓöÿ                                      Γöé
  6614. Γöé                                                                Γöé
  6615. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6616. The identifier identifies either the name of the function that will be given 
  6617. the particular linkage type or the name of a typedef that resolves to a 
  6618. function type. If identifier is a typedef, any function declared using 
  6619. identifier will be given the particular linkage type. 
  6620.  
  6621. The following example shows how to use a typedef to declare functions and 
  6622. pointers to functions of system linkage. 
  6623.  
  6624.    #pragma linkage(functype, system)
  6625.  
  6626.    typedef int functype(int);
  6627.  
  6628.    functype f;     /* f is a function with system linkage */
  6629.    functype *fp;   /* fp is a pointer to a function with system linkage */
  6630.  
  6631. The C/C++ for OS/2 default linkage is optlink, which is a  convention specific 
  6632. to the C/C++ for OS/2 product. If your program calls OS/2 APIs, you must use 
  6633. the system linkage convention, which is standard for all OS/2 applications to 
  6634. call those APIs. If you include the system header files, the OS/2 APIs are 
  6635. automatically given system linkage. If you are developing device drivers, you 
  6636. should use the pascal convention.  You should use the far32 version of pascal 
  6637. linkage if your calls will cross code segments. Note that far32 pascal linkage 
  6638. is only available when you specify the /Gr+ option to generate code that runs 
  6639. at ring zero. 
  6640.  
  6641. The far16 linkage conventions indicate that a function has a 16-bit linkage 
  6642. type. The cdecl and _cdecl options are equivalent.  The underscore is optional, 
  6643. and is accepted for compatibility with C/2 cdecl linkage declarations. 
  6644. Similarly, pascal and _pascal are equivalent, and specify C/2 pascal linkage; 
  6645. fastcall and _fastcall specify Microsoft _fastcall linkage. If far16 is 
  6646. specified without a parameter, cdecl linkage is used. 
  6647.  
  6648. You can also use linkage keywords to specify the calling convention for a 
  6649. function. Linkage keywords are easier to use than is the #pragma linkage 
  6650. directive.  They let you declare both the function and its linkage type in one 
  6651. statement. See Linkage Keywords for more information on these keywords. 
  6652.  
  6653. You can use compiler options to explicitly set the calling convention to 
  6654. optlink (inf./Mp) or to change the default to system linkage (inf./Ms). These 
  6655. options are described in Code Generation Options. If a linkage keyword or 
  6656. #pragma linkage directive is specified, it overrides the compiler option. 
  6657.  
  6658. For more information about calling conventions, see the IBM C/C++ for OS/2 
  6659. Programming Guide. 
  6660.  
  6661. Related Information 
  6662.  
  6663.  o inf./Mp, /Ms Options 
  6664.  o Linkage Keywords 
  6665.  o typedef 
  6666.  o #pragma 
  6667.  o Preprocessor Directives 
  6668.  
  6669.  
  6670. ΓòÉΓòÉΓòÉ 5.12.13. map ΓòÉΓòÉΓòÉ
  6671.  
  6672. The #pragma map directive associates an external name (name) with a C name 
  6673. (identifier). 
  6674.  
  6675.  ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇmapΓöÇΓöÇΓöÇ(ΓöÇΓöÇidentifierΓöÇΓöÇ,ΓöÇΓöÇ"name"ΓöÇΓöÇ)ΓöÇΓöÇ
  6676.  
  6677. The #pragma map directive is used with the C/C++ for OS/2 debugger, but is 
  6678. provided mostly for compatibility with IBM C/370. It is also useful when your 
  6679. program maps to functions created by other compilers that precede identifier 
  6680. and function names with underscores. 
  6681.  
  6682. When you use this directive, the identifier that appears in the source file is 
  6683. not visible in the object file.  The external name will be used to represent 
  6684. the object in the object file. 
  6685.  
  6686. Enclose the variable name in double quotation marks. The name will be kept as 
  6687. specified on the #pragma map directive in mixed case. Multiple C identifiers 
  6688. can have the same map name. The compiler generates an error message if more 
  6689. than one map name is given to an identifier. 
  6690.  
  6691. The map name is an external name and must not be used in the source file to 
  6692. reference the object.  If you try to use the map name in the source file, to 
  6693. access the corresponding C object, the compiler will treat the map name as a 
  6694. new identifier. 
  6695.  
  6696. Note:  The C/C++ for OS/2 compiler does not implement the optional third 
  6697. parameter to #pragma map, as defined by the SAA standard. 
  6698.  
  6699. Related Information 
  6700.  
  6701.  o #pragma 
  6702.  o Preprocessor Directives 
  6703.  
  6704.  
  6705. ΓòÉΓòÉΓòÉ 5.12.14. margins ΓòÉΓòÉΓòÉ
  6706.  
  6707. The #pragma margins directive specifies the columns in the input line that are 
  6708. to be scanned for input to the compiler. 
  6709.  
  6710.                  ΓöîΓöÇnomarginsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6711.  ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓö┤ΓöÇmarginsΓöÇΓöÇ(ΓöÇΓöÇΓöÇlΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇrΓöÇΓöÇΓöÇ)ΓöÇΓö┤ΓöÇ
  6712.  
  6713. Use the #pragma margins directive if you want to have characters outside 
  6714. certain columns ignored in your source file. The compiler ignores any text in 
  6715. the source input that does not fall within the range specified in the 
  6716. directive. 
  6717.  
  6718. The variable l specifies the first column of the source input that is to be 
  6719. scanned, and must be between 1 and 65535, inclusive. The variable r specifies 
  6720. the last column of the source input that is to be scanned.  It must be greater 
  6721. than or equal to l and less than or equal to 65535. An asterisk (*) can be 
  6722. assigned to r to indicate the last column of input. 
  6723.  
  6724. By default, the left margin is set to 1, and the right margin is set to 
  6725. infinity. If nomargins is specified, the default values are taken. 
  6726.  
  6727. The #pragma margins directive can be used with the #pragma sequence directive 
  6728. to specify the columns that are not to be scanned for sequence numbers. If the 
  6729. #pragma sequence settings do not fall within the #pragma margins settings, the 
  6730. sequence  directive has no effect. 
  6731.  
  6732. You can also set margins using the inf./Sg option. This option is described in 
  6733. Source Code Options. 
  6734.  
  6735. Related Information 
  6736.  
  6737.  o inf./Sg Option 
  6738.  o inf.#pragma sequence 
  6739.  o #pragma 
  6740.  o Preprocessor Directives 
  6741.  
  6742.  
  6743. ΓòÉΓòÉΓòÉ 5.12.15. pack ΓòÉΓòÉΓòÉ
  6744.  
  6745. The #pragma pack directive specifies the alignment rules to use for the 
  6746. structures and unions that follow it. 
  6747.  
  6748.  ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇpackΓöÇΓöÇΓöÇ(Γö¼ΓöÇΓöÇΓöÇΓö¼)ΓöÇΓöÇ
  6749.                            Γö£ΓöÇ1ΓöÇΓöñ
  6750.                            Γö£ΓöÇ2ΓöÇΓöñ
  6751.                            ΓööΓöÇ4ΓöÇΓöÿ
  6752.  
  6753. The #pragma pack directive causes all structures and unions that follow it in 
  6754. the program to be packed along a 1-byte, 2-byte, or 4-byte (the system default) 
  6755. boundary, according to the value specified in the directive, until another 
  6756. #pragma pack directive changes the packing boundary. 
  6757.  
  6758. If no value is specified, packing is performed along the system default 
  6759. boundary unless the /Sp compiler option was used, in which case #pragma pack() 
  6760. causes packing to be performed along the boundary specified by inf./Sp. The /Sp 
  6761. option is described in Source Code Options. 
  6762.  
  6763. For example: 
  6764.  
  6765.    #pragma pack(1)
  6766.  
  6767.    struct hester{       /* this structure will be packed */
  6768.      char philip;       /*    along 1-byte boundaries    */
  6769.      int mark;
  6770.    };
  6771.    .
  6772.    .
  6773.    .
  6774.    #pragma pack(2)
  6775.  
  6776.    struct jeff{         /* this structure will be packed */
  6777.      float bill;        /*    along 2-byte boundaries    */
  6778.      int *chris;
  6779.    }
  6780.    .
  6781.    .
  6782.    .
  6783.    #pragma pack()
  6784.  
  6785.    struct dor{          /* this structure will be packed  */
  6786.      double stephen;    /* along the default boundaries   */
  6787.      long alex;
  6788.    }
  6789.  
  6790. Note:  Data types that are by default packed along boundaries smaller than that 
  6791. specified by #pragma pack are still aligned along the smaller boundaries.  For 
  6792. example, type char is always aligned along a 1-byte boundary, regardless of the 
  6793. value of #pragma pack. 
  6794.  
  6795. The following chart describes how each data type is packed for each of the 
  6796. #pragma pack options: 
  6797.  
  6798. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6799. Γöé    DATA TYPE    Γöé    :FONT FACENAME=COURIER   Γöé
  6800. Γöé                 Γöé   SIZE=15X12.#PRAGMA:FONT   Γöé
  6801. Γöé                 Γöé  FACENAME=DEFAULT SIZE=0X0. Γöé
  6802. Γöé                 Γöé    :FONT FACENAME=COURIER   Γöé
  6803. Γöé                 Γöé     SIZE=15X12.PACK:FONT    Γöé
  6804. Γöé                 Γöé  FACENAME=DEFAULT SIZE=0X0. Γöé
  6805. Γöé                 Γöé            VALUE            Γöé
  6806. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6807. Γöé                 Γöé    1    Γöé    2    Γöé    4    Γöé
  6808. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6809. Γöé "char"          Γöé    1    Γöé    1    Γöé    1    Γöé
  6810. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6811. Γöé "short"         Γöé    1    Γöé    2    Γöé    2    Γöé
  6812. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6813. Γöé "int", "long"   Γöé    1    Γöé    2    Γöé    4    Γöé
  6814. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6815. Γöé "float",        Γöé    1    Γöé    2    Γöé    4    Γöé
  6816. Γöé "double", "long Γöé         Γöé         Γöé         Γöé
  6817. Γöé double"         Γöé         Γöé         Γöé         Γöé
  6818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6819. Γöé pointer         Γöé    1    Γöé    2    Γöé    4    Γöé
  6820. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6821.  
  6822. Important  The #pragma pack directive does not have the same effect as 
  6823.            declaring a structure as _Packed.  The _Packed keyword removes all 
  6824.            padding from between structure members, while the #pragma pack 
  6825.            directive only specifies the boundaries to align the members on. 
  6826.  
  6827. Although _Packed is a SAA C construct, it is not portable to many systems.  The 
  6828. C++ language does not support it.  If portability and C++ support are important 
  6829. to you, avoid using the _Packed qualifier. 
  6830.  
  6831.  For more information on packing structures, see _Packed Qualifier. Related 
  6832.  Information 
  6833.  
  6834.  o inf./Sp Option 
  6835.  o _Packed Qualifier 
  6836.  o Structures 
  6837.  o Types 
  6838.  o #pragma 
  6839.  o Preprocessor Directives 
  6840.  
  6841.  
  6842. ΓòÉΓòÉΓòÉ 5.12.16. page ΓòÉΓòÉΓòÉ
  6843.  
  6844. Skips n pages of the generated source listing.  If n is not specified, the next 
  6845. page is started. 
  6846.  
  6847. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇpageΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
  6848.                         Γöé     Γöé
  6849.                         ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
  6850.  
  6851. Related Information 
  6852.  
  6853.  o #pragma 
  6854.  o Preprocessor Directives 
  6855.  
  6856.  
  6857. ΓòÉΓòÉΓòÉ 5.12.17. pagesize ΓòÉΓòÉΓòÉ
  6858.  
  6859. The #pragma pagesize directive sets the number of lines per page to n for the 
  6860. generated source listing. 
  6861.  
  6862.  ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇpagesizeΓöÇΓöÇΓöÇ(ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇ
  6863.                                ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
  6864.  
  6865. The value of n must be between 16 and 32767, inclusive. The default page length 
  6866. is 66 lines. 
  6867.  
  6868. You can also use the inf./Lp compiler option to set the listing page size. This 
  6869. option is described in Listing File Options. 
  6870.  
  6871. Related Information 
  6872.  
  6873.  o inf./Lp Option 
  6874.  o #pragma 
  6875.  o Preprocessor Directives 
  6876.  
  6877.  
  6878. ΓòÉΓòÉΓòÉ 5.12.18. seg16 ΓòÉΓòÉΓòÉ
  6879.  
  6880. The #pragma seg16 directive specifies that a data object will be shared between 
  6881. 16-bit and 32-bit processes. 
  6882.  
  6883.  ΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇseg16ΓöÇΓöÇ(ΓöÇΓöÇidentifierΓöÇΓöÇ)ΓöÇΓöÇ
  6884.  
  6885. It causes the compiler to lay out the identifier in memory so that it does not 
  6886. cross a 64K boundary.  The identifier can then be used in a 16-bit program. 
  6887.  
  6888. The identifier can be a typedef or a data object. #pragma seg16 For example: 
  6889.  
  6890.    typedef struct foo foostr;
  6891.    #pragma seg16(foostr)
  6892.    foostr  quux;
  6893.  
  6894. uses the typedef foostr to declare quux as an object addressable by a 16-bit 
  6895. program. 
  6896.  
  6897. You can also use the inf./Gt compiler option to perform the equivalent of a 
  6898. #pragma seg16 for all variables in the program. The /Gt option is described in 
  6899. Code Generation Options. 
  6900.  
  6901. Note:  If #pragma seg16 is used on variables of a structure type, the pointers 
  6902. inside that structure are not automatically qualified as usable by 16-bit 
  6903. programs.  If you want the pointers in the structure qualified as such, you 
  6904. must declare them using the _Seg16 type qualifier. See _Seg16 Type Qualifier 
  6905. for more information about _Seg16. 
  6906.  
  6907. For more information on calling 16-bit programs, see the IBM C/C++ for OS/2 
  6908. Programming Guide. 
  6909.  
  6910. Related Information 
  6911.  
  6912.  o inf./Gt Option 
  6913.  o _Seg16 Type Qualifier 
  6914.  o Structures 
  6915.  o typedef 
  6916.  o #pragma 
  6917.  o Preprocessor Directives 
  6918.  
  6919.  
  6920. ΓòÉΓòÉΓòÉ 5.12.19. sequence ΓòÉΓòÉΓòÉ
  6921.  
  6922. The #pragma sequence directive defines the section of the input line that is to 
  6923. contain sequence numbers. 
  6924.  
  6925.                   ΓöîΓöÇnosequenceΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6926.  ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓö┤ΓöÇsequenceΓöÇΓöÇ(ΓöÇΓöÇΓöÇlΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇrΓöÇΓöÇΓöÇ)ΓöÇΓö┤ΓöÇΓöÇ
  6927.  
  6928. If you are using a source file produced on a system that uses sequence numbers, 
  6929. you can use this option to have the sequence numbers ignored. 
  6930.  
  6931. The variable l specifies the column number of the left-hand margin.  The value 
  6932. of l must be between 1 and 65535 inclusive, and must also be less than or equal 
  6933. to the value of r. The variable r specifies the column number of the right-hand 
  6934. margin.  The value of r must be greater than or equal to l and less than or 
  6935. equal to 65535. An asterisk (*) can be assigned to r to indicate the last 
  6936. column of the line. 
  6937.  
  6938. The default for this directive is nosequence, which specifies there are no 
  6939. sequence numbers. 
  6940.  
  6941. The #pragma sequence directive can be used with the #pragma margins directive 
  6942. to specify the columns that are not to be scanned. If the #pragma sequence 
  6943. settings do not fall within the #pragma margins settings, the sequence 
  6944. directive has no effect. 
  6945.  
  6946. You can also set sequence numbers using the inf./Sq option. This option is 
  6947. described in Source Code Options. 
  6948.  
  6949. Related Information 
  6950.  
  6951.  o inf./Sq Option 
  6952.  o -- Link Reference margins not found --#pragma margins 
  6953.  o #pragma 
  6954.  o Preprocessor Directives 
  6955.  
  6956.  
  6957. ΓòÉΓòÉΓòÉ 5.12.20. skip ΓòÉΓòÉΓòÉ
  6958.  
  6959. Skips the next n lines of the generated source listing.  The value of n must be 
  6960. a positive integer less than 255.  If n is omitted, one line is skipped. 
  6961.  
  6962. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇskipΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
  6963.                         Γöé     Γöé
  6964.                         ΓööΓöÇΓöÇnΓöÇΓöÇΓöÿ
  6965.  
  6966. Related Information 
  6967.  
  6968.  o #pragma 
  6969.  o Preprocessor Directives 
  6970.  o Listing File Options 
  6971.  
  6972.  
  6973. ΓòÉΓòÉΓòÉ 5.12.21. stack16 ΓòÉΓòÉΓòÉ
  6974.  
  6975. The #pragma stack16 directive specifies the size of the stack to be allocated 
  6976. for calls to 16-bit routines. 
  6977.  
  6978.  ΓöÇΓöÇΓöÇ#ΓöÇΓöÇΓöÇpragmaΓöÇΓöÇΓöÇstack16ΓöÇΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
  6979.                                 ΓööΓöÇsizeΓöÇΓöÿ
  6980.  
  6981. The variable size is the size of the stack in bytes, and has a value between 
  6982. 512 and 65532. The size specified applies to any 16-bit functions called from 
  6983. that point until the end of the compilation unit, or until another #pragma 
  6984. stack16 directive is given. 
  6985.  
  6986. The default value is 4096 bytes (4K). Note that the 16-bit stack is taken from 
  6987. the 32-bit stack allocated for the thread calling the 16-bit code.  The 32-bit 
  6988. stack is therefore reduced by the amount you specify with #pragma stack16. Make 
  6989. sure your 32-bit stack is large enough for both your 32-bit and 16-bit code. 
  6990.  
  6991. If the sum of the size, the number of bytes for parameters, and the number of 
  6992. local bytes in the function calling the 16-bit routine is greater than 65532, 
  6993. the actual stack size will be 65532 bytes less the number of parameter and 
  6994. local bytes. If the sum of the parameter bytes and local bytes alone is greater 
  6995. than 65532, no bytes will be allocated for calls to 16-bit routines. 
  6996.  
  6997. Related Information 
  6998.  
  6999.  o #pragma 
  7000.  o Preprocessor Directives 
  7001.  
  7002.  
  7003. ΓòÉΓòÉΓòÉ 5.12.22. strings ΓòÉΓòÉΓòÉ
  7004.  
  7005. Specifies that the compiler may place strings into readonly memory or must 
  7006. place strings into writable memory. Strings are writable by default. This 
  7007. pragma must appear before any C code in a file. 
  7008.  
  7009. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇstringsΓöÇΓöÇ(ΓöÇΓöÇΓö¼ΓöÇΓöÇreadonlyΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇ
  7010.                            Γöé             Γöé
  7011.                            ΓööΓöÇΓöÇwriteableΓöÇΓöÇΓöÿ
  7012.  
  7013. Related Information 
  7014.  
  7015.  o Strings 
  7016.  o #pragma 
  7017.  o Preprocessor Directives 
  7018.  
  7019.  
  7020. ΓòÉΓòÉΓòÉ 5.12.23. subtitle ΓòÉΓòÉΓòÉ
  7021.  
  7022. Places the text specified by subtitle on all subsequent pages of the generated 
  7023. source listing. 
  7024.  
  7025. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇsubtitleΓöÇΓöÇ("ΓöÇΓöÇsubtitleΓöÇΓöÇ")ΓöÇΓöÇ
  7026.  
  7027. Related Information 
  7028.  
  7029.  o #pragma title 
  7030.  o #pragma 
  7031.  o Preprocessor Directives 
  7032.  
  7033.  
  7034. ΓòÉΓòÉΓòÉ 5.12.24. title ΓòÉΓòÉΓòÉ
  7035.  
  7036. Places the text specified by title on all subsequent pages of the generated 
  7037. source listing. 
  7038.  
  7039. ΓöÇΓöÇ#ΓöÇΓöÇpragmaΓöÇΓöÇtitleΓöÇΓöÇ("ΓöÇΓöÇtitleΓöÇΓöÇ")ΓöÇΓöÇ
  7040.  
  7041. Related Information 
  7042.  
  7043.  o #pragma subtitle 
  7044.  o #pragma 
  7045.  o Preprocessor Directives 
  7046.  
  7047.  
  7048. ΓòÉΓòÉΓòÉ 6. Using Compiler Options ΓòÉΓòÉΓòÉ
  7049.  
  7050. The compiler options affect the compiling and linking of a program. 
  7051.  
  7052. This section describes the compiler options and tells you how to use them. The 
  7053. compiler options are divided into groups by function: 
  7054.  
  7055.  o Output File Management Options 
  7056.  o #include File Search Options 
  7057.  o Listing File Options 
  7058.  o Debugging and Diagnostic Information Options 
  7059.  o Source Code Options 
  7060.  o Preprocessor Options 
  7061.  o Code Generation Options 
  7062.  o Other Options 
  7063.  
  7064.  Related Information 
  7065.  
  7066.  o Specifying Compiler Options 
  7067.  o Using Parameters with Compiler Options 
  7068.  o Scope of Compiler Options 
  7069.  o Related and Conflicting Options 
  7070.  o Compiler Options for Presentation Manager Programming 
  7071.  
  7072.  
  7073. ΓòÉΓòÉΓòÉ 6.1. Specifying Compiler Options ΓòÉΓòÉΓòÉ
  7074.  
  7075. The compiler options are not case sensitive, so you can specify the options in 
  7076. lower-, upper-, or mixed case. For example, you can specify the /Rn option as 
  7077. /rn. You can also substitute a dash (-) for the slash (/) preceding the option. 
  7078. For example, -Rn is equivalent to /Rn. Lower- and uppercase, dashes, and 
  7079. slashes can all be used on one command line, as in: 
  7080.  
  7081.    icc  /ls  -RN  -kA  /Li  prog.c
  7082.  
  7083. You can specify compiler options in the following ways: 
  7084.  
  7085.  o On the command line 
  7086.  
  7087.  o In the ICC environment variable 
  7088.  
  7089.    Options specified on the command line override the options in the ICC 
  7090.    variable. 
  7091.  
  7092.  o In the WorkFrame/2 environment. 
  7093.  
  7094.  
  7095. ΓòÉΓòÉΓòÉ 6.1.1. Using Parameters with Compiler Options ΓòÉΓòÉΓòÉ
  7096.  
  7097. For all compiler options that take parameters, the following rules apply: 
  7098.  
  7099.  o If a parameter is required, zero or more spaces may appear between the 
  7100.    option and the parameter.  For example, both /FeMyexe.exe and /Fe  Myexe.exe 
  7101.    are valid. 
  7102.  o If a parameter is optional, no space is allowed between the option and 
  7103.    parameter.  For example, /FlMylist.lst is valid, but /Fl Mylist.lst is not. 
  7104.  
  7105.  The syntax of the compiler options varies according to the type of parameter 
  7106.  that is used with the option. 
  7107.  
  7108.  Strings 
  7109.  If the option has a string parameter, the string must be enclosed by a pair of 
  7110.  double quotation marks if there are spaces in the string. For example, 
  7111.  /V"Version 1.0" is correct. If there are no spaces in the string, the 
  7112.  quotation marks are not necessary. For example, both /VNew and /V"New" are 
  7113.  valid. 
  7114.  
  7115.  If the string contains double quotation marks, precede them with the backslash 
  7116.  (\) character. For example, if the string is abc"def, specify it on the 
  7117.  command line as "abc\"def". This combination is the only escape sequence 
  7118.  allowed within string options. Do not end a string with a backslash, as in 
  7119.  "abc\". 
  7120.  
  7121.  Do not put a space between the option and the string. 
  7122.  
  7123.  File Names 
  7124.  If you want to use a file that is in the current directory, specify only the 
  7125.  file name. If the file you want to use is not in the current directory, 
  7126.  specify the path and file name. If you do not specify an extension for the 
  7127.  executable file, .EXE is assumed. 
  7128.  
  7129.  If your file name contains spaces (as permitted by the High Performance File 
  7130.  System(HPFS)) and any elements of the HPFS extended character set, the file 
  7131.  name must be enclosed in double quotation marks. Do not put a space between 
  7132.  the option and the file name or directory. 
  7133.  
  7134.  Switches 
  7135.  Some options are used with plus (+) or minus (-) signs. If you do not use 
  7136.  either sign, the compiler processes the option as if you had used the + sign. 
  7137.  When you use an option that uses switches, you can combine them. For example, 
  7138.  the following two option specifications have the same result. 
  7139.  
  7140.      /La+ /Le+ /Ls+ /Lx-
  7141.      /Laesx-
  7142.  
  7143.  Note that the - sign applies only to the switch immediately preceding it. 
  7144.  
  7145.  Numbers 
  7146.  When an option uses a number as a parameter, do not put a space between the 
  7147.  option and the number. When an option uses two numbers as parameters, separate 
  7148.  the numbers with a comma. For example, 
  7149.  
  7150.      /Sg10,132
  7151.  
  7152.  
  7153. ΓòÉΓòÉΓòÉ 6.2. Scope of Compiler Options ΓòÉΓòÉΓòÉ
  7154.  
  7155. The compiler options are categorized according to how they are processed.  The 
  7156. categories are: 
  7157.  
  7158.  o Local 
  7159.  o Global 
  7160.  o Cumulative. 
  7161.  
  7162.  Local 
  7163.  A local option applies only to the source files that follow the option. The 
  7164.  last, or rightmost, occurrence of these options is the one that is in effect 
  7165.  for the source file or files that follow it. 
  7166.  
  7167.      Removed the table listing all the options and made it like the online 
  7168.      ("most options are local, unless we say they're global in the next 
  7169.      section"). I don't think the list was that helpful anyways. 
  7170.  
  7171.  Most compiler options are local.  The exceptions are listed under the Global 
  7172.  heading. 
  7173.  
  7174.  Example of Local Options 
  7175.  
  7176.  Note:  The /D (define a preprocessor macro) is different, in that the first 
  7177.  definition of a macro is the one that is used. 
  7178.  
  7179.  Global 
  7180.  A global option applies to all the source files on the command line. If a 
  7181.  global option is specified more than once, the last occurrence of the option 
  7182.  is the one in effect. A global option can follow the last file on the command 
  7183.  line. 
  7184.  
  7185.  The following options are global: 
  7186.  
  7187.  
  7188.   /B   /C   /Fe   /Fm   /Gu   /H   /Mp   /Ms   /Ol   /Q   /Sd   /Sn
  7189.  
  7190.  Cumulative 
  7191.  The local option /I and the global option /B have a special characteristic. 
  7192.  Each time you specify one of them, the parameters you specify are appended to 
  7193.  the parameters previously stated. 
  7194.  
  7195.  Example of Cumulative Options 
  7196.  
  7197.  Related Information 
  7198.  
  7199.  o Specifying Compiler Options 
  7200.  o Related and Conflicting Options 
  7201.  o Compiler Options for Presentation Manager Programming 
  7202.  o Output File Management Options 
  7203.  o #include File Search Options 
  7204.  o Listing File Options 
  7205.  o Debugging and Diagnostic Information Options 
  7206.  o Source Code Options 
  7207.  o Preprocessor Options 
  7208.  o Code Generation Options 
  7209.  o Other Options 
  7210.  
  7211.  
  7212. ΓòÉΓòÉΓòÉ 6.2.1. Related and Conflicting Options ΓòÉΓòÉΓòÉ
  7213.  
  7214. Related Options 
  7215. Some options are required with other options: 
  7216.  
  7217.  o If any of the /Le, /Li, or /Lj options is specified, the /Ls option must 
  7218.    also be specified. 
  7219.  
  7220.  o If the /Gr option is specified, the /Rn option must also be specified. 
  7221.  
  7222.  Conflicting Options 
  7223.  Some options are incompatible with other options. If options specified on the 
  7224.  command line are in conflict, the following rules apply: 
  7225.  
  7226.  o The /Fc option take precedence over the /Fa, /Fm, /Fo, /P, /Pc, /Pd and /Pe 
  7227.    options. 
  7228.  
  7229.  o The /P, /Pc, /Pd, and /Pe options take precedence over the /Fa, /Fl, /Fm, 
  7230.    and /Fo options, the /Fw, /Gu, and /Ol options, and all listing file (/L) 
  7231.    options. 
  7232.  
  7233.  o The /Rn option takes precedence over the /Gm, /Sh, and /Sv options. 
  7234.  
  7235.  o The /Fo- option takes precedence over the /Ti option. 
  7236.  
  7237.  o The /C+ option takes precedence over the /Fm+ option. 
  7238.  
  7239.  Related Information 
  7240.  
  7241.  o Specifying Compiler Options 
  7242.  o Compiler Options for Presentation Manager Programming 
  7243.  o Output File Management Options 
  7244.  o #include File Search Options 
  7245.  o Listing File Options 
  7246.  o Debugging and Diagnostic Information Options 
  7247.  o Source Code Options 
  7248.  o Preprocessor Options 
  7249.  o Code Generation Options 
  7250.  o Other Options 
  7251.  
  7252.  
  7253. ΓòÉΓòÉΓòÉ 6.2.2. Compiler Options for Presentation Manager Programming ΓòÉΓòÉΓòÉ
  7254.  
  7255. If you are using the C/C++ for OS/2 product to develop PM applications, you 
  7256. will probably want to use the following options: 
  7257.  
  7258.  Option    Description 
  7259.  
  7260.  /Se       Allow all C/C++ for OS/2 language extensions (this is the default). 
  7261.  
  7262.  /Gm       Use the multithread libraries. 
  7263.  
  7264.  /Gs-      Generate stack probes. 
  7265.  
  7266.  /Wgen     Produce basic diagnostic messages (including messages about 
  7267.            nonprototype function declarations). 
  7268.  
  7269.  Related Information 
  7270.  
  7271.  o Specifying Compiler Options 
  7272.  o Source Code Options 
  7273.  o Code Generation Options 
  7274.  o Debugging and Diagnostic Information Options 
  7275.  o Related and Conflicting Options 
  7276.  
  7277.  
  7278. ΓòÉΓòÉΓòÉ 6.3. Output File Management Options ΓòÉΓòÉΓòÉ
  7279.  
  7280. Use the options listed in this section to control the files that the compiler 
  7281. produces. 
  7282.  
  7283. Note:  You do not have to specify the plus symbol (+), when specifying an 
  7284.        option. For example, the forms /Fa+ and /Fa are equivalent. 
  7285.  
  7286.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7287.   Γöé          Output File Management Options                        Γöé
  7288.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7289.   Γöé OPTION       Γöé DESCRIPTION    Γöé DEFAULT        Γöé CHANGING      Γöé
  7290.   Γöé              Γöé                Γöé                Γöé DEFAULT       Γöé
  7291.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7292.   Γöé "/Fa[Γö╝Γöé-]"   Γöé Produce and    Γöé "/Fa-"         Γöé "/Fa[Γö╝]"      Γöé
  7293.   Γöé              Γöé name an assem- Γöé                Γöé               Γöé
  7294.   Γöé "/Faname"    Γöé bler listing   Γöé Do not create  Γöé Create an     Γöé
  7295.   Γöé              Γöé file that has  Γöé an assembler   Γöé assembler     Γöé
  7296.   Γöé              Γöé the source     Γöé listing file.  Γöé listing file  Γöé
  7297.   Γöé              Γöé code as com-   Γöé                Γöé that has the  Γöé
  7298.   Γöé              Γöé ments.         Γöé                Γöé same name as  Γöé
  7299.   Γöé              Γöé                Γöé                Γöé the source    Γöé
  7300.   Γöé              Γöé NOTE:  This    Γöé                Γöé file, with    Γöé
  7301.   Γöé              Γöé listing is not Γöé                Γöé the extension Γöé
  7302.   Γöé              Γöé guaranteed to  Γöé                Γöé ".ASM".       Γöé
  7303.   Γöé              Γöé compile.       Γöé                Γöé               Γöé
  7304.   Γöé              Γöé                Γöé                Γöé "/Fa"name     Γöé
  7305.   Γöé              Γöé                Γöé                Γöé               Γöé
  7306.   Γöé              Γöé                Γöé                Γöé Create the    Γöé
  7307.   Γöé              Γöé                Γöé                Γöé listing file  Γöé
  7308.   Γöé              Γöé                Γöé                Γöé name".ASM".   Γöé
  7309.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7310.   Γöé "/Fb[Γö╝Γöé-]"   Γöé Produce a      Γöé "/Fb-"         Γöé "/Fb[Γö╝]"      Γöé
  7311.   Γöé              Γöé browser        Γöé                Γöé               Γöé
  7312.   Γöé              Γöé listing file.  Γöé Do not create  Γöé Create a      Γöé
  7313.   Γöé              Γöé                Γöé a browser      Γöé browser       Γöé
  7314.   Γöé              Γöé                Γöé listing file.  Γöé listing file. Γöé
  7315.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7316.   Γöé "/Fc[Γö╝Γöé-]"   Γöé Perform syntax Γöé "/Fc-"         Γöé "/Fc[Γö╝]"      Γöé
  7317.   Γöé              Γöé check only.    Γöé                Γöé               Γöé
  7318.   Γöé              Γöé                Γöé Compile and    Γöé Do only a     Γöé
  7319.   Γöé              Γöé                Γöé produce output Γöé syntax check. Γöé
  7320.   Γöé              Γöé                Γöé files          Γöé The only      Γöé
  7321.   Γöé              Γöé                Γöé according to   Γöé output files  Γöé
  7322.   Γöé              Γöé                Γöé other options. Γöé you can       Γöé
  7323.   Γöé              Γöé                Γöé                Γöé produce when  Γöé
  7324.   Γöé              Γöé                Γöé                Γöé this option   Γöé
  7325.   Γöé              Γöé                Γöé                Γöé is in effect  Γöé
  7326.   Γöé              Γöé                Γöé                Γöé are listing   Γöé
  7327.   Γöé              Γöé                Γöé                Γöé (".LST")      Γöé
  7328.   Γöé              Γöé                Γöé                Γöé files.        Γöé
  7329.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7330.   Γöé "/Fd[Γö╝Γöé-]"   Γöé Specify work   Γöé "/Fd-"         Γöé "/Fd[Γö╝]"      Γöé
  7331.   Γöé              Γöé file storage   Γöé                Γöé               Γöé
  7332.   Γöé              Γöé area.          Γöé Store internal Γöé Store         Γöé
  7333.   Γöé              Γöé                Γöé work files in  Γöé internal work Γöé
  7334.   Γöé              Γöé                Γöé shared memory. Γöé files on disk Γöé
  7335.   Γöé              Γöé                Γöé                Γöé in the direc- Γöé
  7336.   Γöé              Γöé                Γöé                Γöé tory speci-   Γöé
  7337.   Γöé              Γöé                Γöé                Γöé fied by the   Γöé
  7338.   Γöé              Γöé                Γöé                Γöé TMP variable. Γöé
  7339.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7340.   Γöé "/Fename"    Γöé Specify name   Γöé Give the exe-  Γöé "/Fename"     Γöé
  7341.   Γöé              Γöé of executable  Γöé cutable file   Γöé               Γöé
  7342.   Γöé              Γöé file or DLL.   Γöé the same name  Γöé Name the exe- Γöé
  7343.   Γöé              Γöé                Γöé as the first   Γöé cutable file  Γöé
  7344.   Γöé              Γöé                Γöé source file,   Γöé "name.EXE" or Γöé
  7345.   Γöé              Γöé                Γöé with the       Γöé "name.DLL".   Γöé
  7346.   Γöé              Γöé                Γöé extension      Γöé               Γöé
  7347.   Γöé              Γöé                Γöé ".EXE" or      Γöé               Γöé
  7348.   Γöé              Γöé                Γöé ".DLL".        Γöé               Γöé
  7349.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7350.   Γöé "/Fi[Γö╝Γöé-]"   Γöé Control cre-   Γöé "/Fi-"         Γöé "/Fi[Γö╝]"      Γöé
  7351.   Γöé              Γöé ation of pre-  Γöé                Γöé               Γöé
  7352.   Γöé              Γöé compiled       Γöé Do not create  Γöé Create a pre- Γöé
  7353.   Γöé              Γöé header files.  Γöé a precompiled  Γöé compiled      Γöé
  7354.   Γöé              Γöé                Γöé header file.   Γöé header file   Γöé
  7355.   Γöé              Γöé                Γöé                Γöé if none       Γöé
  7356.   Γöé              Γöé                Γöé                Γöé exists or if  Γöé
  7357.   Γöé              Γöé                Γöé                Γöé the existing  Γöé
  7358.   Γöé              Γöé                Γöé                Γöé one is out-   Γöé
  7359.   Γöé              Γöé                Γöé                Γöé of-date.      Γöé
  7360.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7361.   Γöé "/Fl[Γö╝Γöé-]"   Γöé Produce and    Γöé "/Fl-"         Γöé "/Fl[Γö╝]"      Γöé
  7362.   Γöé              Γöé name a listing Γöé                Γöé               Γöé
  7363.   Γöé "/Flname"    Γöé file.          Γöé Do not create  Γöé Give the      Γöé
  7364.   Γöé              Γöé                Γöé a listing      Γöé listing the   Γöé
  7365.   Γöé              Γöé                Γöé file.          Γöé same file     Γöé
  7366.   Γöé              Γöé                Γöé                Γöé name as the   Γöé
  7367.   Γöé              Γöé                Γöé                Γöé source file,  Γöé
  7368.   Γöé              Γöé                Γöé                Γöé with the      Γöé
  7369.   Γöé              Γöé                Γöé                Γöé extension     Γöé
  7370.   Γöé              Γöé                Γöé                Γöé ".LST".       Γöé
  7371.   Γöé              Γöé                Γöé                Γöé               Γöé
  7372.   Γöé              Γöé                Γöé                Γöé "/Flname"     Γöé
  7373.   Γöé              Γöé                Γöé                Γöé               Γöé
  7374.   Γöé              Γöé                Γöé                Γöé Name the      Γöé
  7375.   Γöé              Γöé                Γöé                Γöé listing file  Γöé
  7376.   Γöé              Γöé                Γöé                Γöé "name.LST".   Γöé
  7377.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7378.   Γöé "/Fm[Γö╝Γöé-]"   Γöé Produce a      Γöé "/Fm-"         Γöé "/Fm[Γö╝]"      Γöé
  7379.   Γöé "/Fmname"    Γöé linker map     Γöé                Γöé               Γöé
  7380.   Γöé              Γöé file.          Γöé Do not create  Γöé Create a      Γöé
  7381.   Γöé              Γöé                Γöé a map file.    Γöé linker map    Γöé
  7382.   Γöé              Γöé NOTE:  When    Γöé                Γöé file with the Γöé
  7383.   Γöé              Γöé used with the  Γöé                Γöé same file     Γöé
  7384.   Γöé              Γöé "/C" option,   Γöé                Γöé name as the   Γöé
  7385.   Γöé              Γöé the "/Fm"      Γöé                Γöé source file,  Γöé
  7386.   Γöé              Γöé option has no  Γöé                Γöé with the      Γöé
  7387.   Γöé              Γöé effect.        Γöé                Γöé extension     Γöé
  7388.   Γöé              Γöé                Γöé                Γöé ".MAP".       Γöé
  7389.   Γöé              Γöé                Γöé                Γöé               Γöé
  7390.   Γöé              Γöé                Γöé                Γöé "/Fm"name     Γöé
  7391.   Γöé              Γöé                Γöé                Γöé               Γöé
  7392.   Γöé              Γöé                Γöé                Γöé Create map    Γöé
  7393.   Γöé              Γöé                Γöé                Γöé file          Γöé
  7394.   Γöé              Γöé                Γöé                Γöé "name.MAP".   Γöé
  7395.   Γöé              Γöé                Γöé                Γöé               Γöé
  7396.   Γöé              Γöé                Γöé                Γöé NOTE:  Use    Γöé
  7397.   Γöé              Γöé                Γöé                Γöé the           Γöé
  7398.   Γöé              Γöé                Γöé                Γöé "/B"/map""    Γöé
  7399.   Γöé              Γöé                Γöé                Γöé option to get Γöé
  7400.   Γöé              Γöé                Γöé                Γöé a more        Γöé
  7401.   Γöé              Γöé                Γöé                Γöé detailed map  Γöé
  7402.   Γöé              Γöé                Γöé                Γöé file.         Γöé
  7403.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7404.   Γöé "/Fo[Γö╝Γöé-]"   Γöé Create an      Γöé "/Fo[Γö╝]"       Γöé "/Fo-"        Γöé
  7405.   Γöé              Γöé object file.   Γöé                Γöé               Γöé
  7406.   Γöé "/Fo"name    Γöé                Γöé Create an      Γöé Do not create Γöé
  7407.   Γöé              Γöé Specify name   Γöé object file,   Γöé an object     Γöé
  7408.   Γöé              Γöé of object      Γöé and give it    Γöé file.         Γöé
  7409.   Γöé              Γöé file.          Γöé the same name  Γöé               Γöé
  7410.   Γöé              Γöé                Γöé as the source  Γöé "/Foname"     Γöé
  7411.   Γöé              Γöé                Γöé file, with the Γöé               Γöé
  7412.   Γöé              Γöé                Γöé extension      Γöé Create object Γöé
  7413.   Γöé              Γöé                Γöé ".OBJ".        Γöé file          Γöé
  7414.   Γöé              Γöé                Γöé                Γöé name".OBJ".   Γöé
  7415.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7416.   Γöé "/Ft[Γö╝Γöé-]"   Γöé                Γöé                Γöé               Γöé
  7417.   Γöé              Γöé                Γöé                Γöé               Γöé
  7418.   Γöé "/Ftdir"     Γöé                Γöé                Γöé               Γöé
  7419.   Γöé              Γöé                Γöé                Γöé               Γöé
  7420.   Γöé              Γöé                Γöé                Γöé               Γöé
  7421.   Γöé              Γöé                Γöé                Γöé               Γöé
  7422.   Γöé              Γöé                Γöé                Γöé               Γöé
  7423.   Γöé              Γöé                Γöé                Γöé               Γöé
  7424.   Γöé              Γöé                Γöé                Γöé               Γöé
  7425.   Γöé              Γöé                Γöé                Γöé               Γöé
  7426.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7427.   Γöé "/Fw[Γö╝Γöé-]"   Γöé Control gener- Γöé "/Fw-"         Γöé "/Fw[Γö╝]"      Γöé
  7428.   Γöé              Γöé ation and use  Γöé                Γöé               Γöé
  7429.   Γöé "/Fwname"    Γöé of interme-    Γöé Perform        Γöé Create inter- Γöé
  7430.   Γöé              Γöé diate code     Γöé regular compi- Γöé mediate code  Γöé
  7431.   Γöé              Γöé files.         Γöé lation; do not Γöé files only;   Γöé
  7432.   Γöé              Γöé                Γöé save interme-  Γöé do not com-   Γöé
  7433.   Γöé              Γöé                Γöé diate code     Γöé plete compi-  Γöé
  7434.   Γöé              Γöé                Γöé files.         Γöé lation.       Γöé
  7435.   Γöé              Γöé                Γöé                Γöé               Γöé
  7436.   Γöé              Γöé                Γöé                Γöé "/Fwname"     Γöé
  7437.   Γöé              Γöé                Γöé                Γöé               Γöé
  7438.   Γöé              Γöé                Γöé                Γöé Create inter- Γöé
  7439.   Γöé              Γöé                Γöé                Γöé mediate code  Γöé
  7440.   Γöé              Γöé                Γöé                Γöé files only    Γöé
  7441.   Γöé              Γöé                Γöé                Γöé and name them Γöé
  7442.   Γöé              Γöé                Γöé                Γöé "name.w,      Γöé
  7443.   Γöé              Γöé                Γöé                Γöé name.wh", and Γöé
  7444.   Γöé              Γöé                Γöé                Γöé "name.wi"; do Γöé
  7445.   Γöé              Γöé                Γöé                Γöé not complete  Γöé
  7446.   Γöé              Γöé                Γöé                Γöé compilation.  Γöé
  7447.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7448.  
  7449.  File Names and Extensions 
  7450.  For the file management options that take a file name as a parameter, If you 
  7451.  do not specify a file extension, the default extension will be used For 
  7452.  example, if you specify /Fldale the listing file will be called dale.lst. 
  7453.  Although you can specify an extension of your own choosing, it is advisable to 
  7454.  use the default extensions. If you use an option without using an optional 
  7455.  name parameter, the name of the following C source file and the default 
  7456.  extension is used, with the exception of the /Fm option.  If you do not 
  7457.  specify a name with /Fm, the name of the first file given on the command line 
  7458.  is used, with the default extension .map. 
  7459.  
  7460.  Note:  If you use the /Fe option, you must specify a name or a path for the 
  7461.         file.  If you specify only a path, the file will have the same name as 
  7462.         the first source file on the command line, with the path specified. 
  7463.  
  7464.  Examples of File Management Options 
  7465.  
  7466.  Related Information 
  7467.  
  7468.  o Specifying Compiler Options 
  7469.  o Listing File Options 
  7470.  
  7471.  
  7472. ΓòÉΓòÉΓòÉ 6.4. #include File Search Options ΓòÉΓòÉΓòÉ
  7473.  
  7474. Use these options to control which paths are searched when the compiler looks 
  7475. for #include files. The paths that are searched are the result of the 
  7476. information in the INCLUDE environment variable and in ICC, combined with how 
  7477. you use the following compiler options. 
  7478.  
  7479. &ipfisyn. root=include.include #include 
  7480.  
  7481. #include:font facename=default
  7482. size=0x0. File Search Options
  7483. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7484. Γöé                                                                Γöé
  7485. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7486. Γöé OPTION         Γöé DESCRIPTION   Γöé DEFAULT       Γöé CHANGING      Γöé
  7487. Γöé                Γöé               Γöé               Γöé DEFAULT       Γöé
  7488. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7489. Γöé "/Ipath[;path]"Γöé Specify :font Γöé Search direc- Γöé "/I"path[;pathΓöé
  7490. Γöé                Γöé facename=CouriΓöértory of       Γöé Search        Γöé
  7491. Γöé                Γöé size=15x12.#inΓöélsourcenfile   Γöé path[;path].  Γöé
  7492. Γöé                Γöé facename=defauΓöét(for user     Γöé               Γöé
  7493. Γöé                Γöé size=0x0.     Γöé files only),  Γöé               Γöé
  7494. Γöé                Γöé search        Γöé then search   Γöé               Γöé
  7495. Γöé                Γöé path(s).      Γöé paths given   Γöé               Γöé
  7496. Γöé                Γöé               Γöé in the        Γöé               Γöé
  7497. Γöé                Γöé               Γöé INCLUDE envi- Γöé               Γöé
  7498. Γöé                Γöé               Γöé ronment vari- Γöé               Γöé
  7499. Γöé                Γöé               Γöé able.         Γöé               Γöé
  7500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7501. Γöé "/Xc[Γö╝Γöé-]"     Γöé Specify       Γöé "/Xc-"        Γöé "/Xc[Γö╝]"      Γöé
  7502. Γöé                Γöé whether to    Γöé Search paths  Γöé Do not search Γöé
  7503. Γöé                Γöé search paths  Γöé specified     Γöé paths speci-  Γöé
  7504. Γöé                Γöé specified     Γöé using "/I".   Γöé fied using    Γöé
  7505. Γöé                Γöé using "/I".   Γöé               Γöé "/I".         Γöé
  7506. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7507. Γöé "/Xi[Γö╝Γöé-]"     Γöé Control       Γöé "/Xi-"        Γöé "/Xi[Γö╝]"      Γöé
  7508. Γöé                Γöé INCLUDE envi- Γöé Search the    Γöé Do not search Γöé
  7509. Γöé                Γöé ronment vari- Γöé paths speci-  Γöé the paths     Γöé
  7510. Γöé                Γöé able search   Γöé fied in the   Γöé specified by  Γöé
  7511. Γöé                Γöé paths.        Γöé INCLUDE envi- Γöé the INCLUDE   Γöé
  7512. Γöé                Γöé               Γöé ronment vari- Γöé environment   Γöé
  7513. Γöé                Γöé               Γöé able.         Γöé variable.     Γöé
  7514. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7515.  
  7516. The /I option must be followed by one or more directory names. A space may be 
  7517. included between /I and the directory name. If more than one directory is 
  7518. specified, separate the directory names with a semicolon. 
  7519.  
  7520. If you use the /I option more than once, the directories you specify are 
  7521. appended to the directories you previously specified. 
  7522.  
  7523. If you specify search paths using /I in both the ICC environment variable and 
  7524. on the command line, all the paths are searched. The paths specified in ICC are 
  7525. searched before those specified on the command line. 
  7526.  
  7527. Note:  Once you use the /Xc option, the paths previously specified by using /I 
  7528.        cannot be recovered. You have to use the /I option again if you want to 
  7529.        reuse the paths canceled by /Xc. 
  7530.  
  7531. The /Xi option has no effect on the /Xc and /I options. 
  7532.  
  7533.  Related Information 
  7534.  
  7535.  o #include 
  7536.  o -- Reference include not found -- 
  7537.  o Specifying Compiler Options 
  7538.  
  7539.  
  7540. ΓòÉΓòÉΓòÉ 6.5. Listing File Options ΓòÉΓòÉΓòÉ
  7541.  
  7542. The options listed below allow you to control whether or not a listing file is 
  7543. produced as well as the type of information in the listing and the appearance 
  7544. of the file. 
  7545.  
  7546. Note:  The following options only modify the appearance of a listing; they do 
  7547. not cause a listing to be produced. Use them with one of the other listing file 
  7548. options or the /Fl option to produce a listing. 
  7549.  
  7550.    /Le /Li /Lj /Lp /Lt /Lu
  7551.  
  7552. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7553. Γöé          Listing Output Options                                Γöé
  7554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7555. Γöé OPTION       Γöé DESCRIPTION    Γöé DEFAULT        Γöé CHANGING      Γöé
  7556. Γöé              Γöé                Γöé                Γöé DEFAULT       Γöé
  7557. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7558. Γöé "/L[Γö╝Γöé-]"    Γöé Produce a      Γöé "/L-"          Γöé "/L[Γö╝]"       Γöé
  7559. Γöé              Γöé listing file.  Γöé                Γöé               Γöé
  7560. Γöé              Γöé                Γöé Do not produce Γöé Produce a     Γöé
  7561. Γöé              Γöé                Γöé a listing      Γöé listing file  Γöé
  7562. Γöé              Γöé                Γöé file.          Γöé with only a   Γöé
  7563. Γöé              Γöé                Γöé                Γöé prolog and    Γöé
  7564. Γöé              Γöé                Γöé                Γöé error mes-    Γöé
  7565. Γöé              Γöé                Γöé                Γöé sages.        Γöé
  7566. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7567. Γöé "/La[Γö╝Γöé-]"   Γöé Include a      Γöé "/La-"         Γöé "/La[Γö╝]"      Γöé
  7568. Γöé              Γöé layout of all  Γöé                Γöé               Γöé
  7569. Γöé              Γöé referenced     Γöé Do not include Γöé Include a     Γöé
  7570. Γöé              Γöé "struct" and   Γöé a layout.      Γöé layout.       Γöé
  7571. Γöé              Γöé "union" vari-  Γöé                Γöé               Γöé
  7572. Γöé              Γöé ables, with    Γöé                Γöé               Γöé
  7573. Γöé              Γöé offsets and    Γöé                Γöé               Γöé
  7574. Γöé              Γöé lengths.       Γöé                Γöé               Γöé
  7575. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7576. Γöé "/Lb[Γö╝Γöé-]"   Γöé Include a      Γöé "/Lb-"         Γöé "/Lb[Γö╝]"      Γöé
  7577. Γöé              Γöé layout of all  Γöé                Γöé               Γöé
  7578. Γöé              Γöé "struct" and   Γöé Do not include Γöé Include a     Γöé
  7579. Γöé              Γöé "union" vari-  Γöé a layout.      Γöé layout.       Γöé
  7580. Γöé              Γöé ables.         Γöé                Γöé               Γöé
  7581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7582. Γöé "/Le[Γö╝Γöé-]"   Γöé Expand all     Γöé "/Le-"         Γöé "/Le[Γö╝]"      Γöé
  7583. Γöé              Γöé macros.        Γöé                Γöé               Γöé
  7584. Γöé              Γöé                Γöé Do not expand  Γöé Expand        Γöé
  7585. Γöé              Γöé                Γöé macros.        Γöé macros.       Γöé
  7586. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7587. Γöé "/Lf[Γö╝Γöé-]"   Γöé Set all        Γöé "/Lf-"         Γöé "/Lf[Γö╝]"      Γöé
  7588. Γöé              Γöé listing        Γöé                Γöé               Γöé
  7589. Γöé              Γöé options on or  Γöé Set all        Γöé Set all       Γöé
  7590. Γöé              Γöé off.           Γöé listing        Γöé listing       Γöé
  7591. Γöé              Γöé                Γöé options off.   Γöé options on.   Γöé
  7592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7593. Γöé "/Li[Γö╝Γöé-]"   Γöé Expand user    Γöé "/Li-"         Γöé "/Li[Γö╝]"      Γöé
  7594. Γöé              Γöé :font          Γöé                Γöé               Γöé
  7595. Γöé              Γöé facename=CourieΓöé Do not expand  Γöé Expand user   Γöé
  7596. Γöé              Γöé size=15x12.#incΓöéuusero:font     Γöé :font         Γöé
  7597. Γöé              Γöé facename=defaulΓöé facename=CourieΓöé facename=CouriΓöér
  7598. Γöé              Γöé size=0x0.      Γöé size=15x12.#incΓöéusize=15x12.#inΓöélude:font
  7599. Γöé              Γöé files.         Γöé facename=defaulΓöé facename=defauΓöét
  7600. Γöé              Γöé                Γöé size=0x0.      Γöé size=0x0.     Γöé
  7601. Γöé              Γöé                Γöé files.         Γöé files.        Γöé
  7602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7603. Γöé "/Lj[Γö╝Γöé-]"   Γöé Expand user    Γöé "/Lj-"         Γöé "/Lj[Γö╝]"      Γöé
  7604. Γöé              Γöé and system     Γöé                Γöé               Γöé
  7605. Γöé              Γöé :font          Γöé Do not expand  Γöé Expand user   Γöé
  7606. Γöé              Γöé facename=CourieΓöé user and       Γöé and system    Γöé
  7607. Γöé              Γöé size=15x12.#incΓöéusystemt:font   Γöé :font         Γöé
  7608. Γöé              Γöé facename=defaulΓöé facename=CourieΓöé facename=CouriΓöér
  7609. Γöé              Γöé size=0x0.      Γöé size=15x12.#incΓöéusize=15x12.#inΓöélude:font
  7610. Γöé              Γöé files.         Γöé facename=defaulΓöé facename=defauΓöét
  7611. Γöé              Γöé                Γöé size=0x0.      Γöé size=0x0.     Γöé
  7612. Γöé              Γöé                Γöé files.         Γöé files.        Γöé
  7613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7614. Γöé "/Lpnum"     Γöé Set page       Γöé "/Lp66"        Γöé "/Lpnum"      Γöé
  7615. Γöé              Γöé length.        Γöé                Γöé               Γöé
  7616. Γöé              Γöé                Γöé Set page       Γöé Specify num   Γöé
  7617. Γöé              Γöé                Γöé length to 66   Γöé lines per     Γöé
  7618. Γöé              Γöé                Γöé lines.         Γöé page of       Γöé
  7619. Γöé              Γöé                Γöé                Γöé listing.  num Γöé
  7620. Γöé              Γöé                Γöé                Γöé must be       Γöé
  7621. Γöé              Γöé                Γöé                Γöé between 15    Γöé
  7622. Γöé              Γöé                Γöé                Γöé and 65535     Γöé
  7623. Γöé              Γöé                Γöé                Γöé inclusive.    Γöé
  7624. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7625. Γöé "/Ls[Γö╝Γöé-]"   Γöé Include the    Γöé "/Ls-"         Γöé "/Ls[Γö╝]"      Γöé
  7626. Γöé              Γöé source code.   Γöé                Γöé               Γöé
  7627. Γöé              Γöé                Γöé Do not include Γöé Include the   Γöé
  7628. Γöé              Γöé                Γöé the source     Γöé source code.  Γöé
  7629. Γöé              Γöé                Γöé code.          Γöé               Γöé
  7630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7631. Γöé "/Lt"string""Γöé Set title      Γöé "/Lt"""        Γöé "/Lt"string"" Γöé
  7632. Γöé              Γöé string.        Γöé                Γöé               Γöé
  7633. Γöé              Γöé                Γöé Set no title   Γöé Set title     Γöé
  7634. Γöé              Γöé                Γöé (null string). Γöé string to     Γöé
  7635. Γöé              Γöé                Γöé                Γöé string.       Γöé
  7636. Γöé              Γöé                Γöé                Γöé Maximum       Γöé
  7637. Γöé              Γöé                Γöé                Γöé string length Γöé
  7638. Γöé              Γöé                Γöé                Γöé is 256 char-  Γöé
  7639. Γöé              Γöé                Γöé                Γöé acters.       Γöé
  7640. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7641. Γöé "/Lu"string""Γöé Set subtitle   Γöé "/Lu"""        Γöé "/Lu"string"" Γöé
  7642. Γöé              Γöé string.        Γöé                Γöé               Γöé
  7643. Γöé              Γöé                Γöé Set no sub-    Γöé Set subtitle  Γöé
  7644. Γöé              Γöé                Γöé title (null    Γöé string to     Γöé
  7645. Γöé              Γöé                Γöé string).       Γöé string.       Γöé
  7646. Γöé              Γöé                Γöé                Γöé Maximum       Γöé
  7647. Γöé              Γöé                Γöé                Γöé string length Γöé
  7648. Γöé              Γöé                Γöé                Γöé is 256 char-  Γöé
  7649. Γöé              Γöé                Γöé                Γöé acters.       Γöé
  7650. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7651. Γöé "/Lx[Γö╝Γöé-]"   Γöé Generate a     Γöé "/Lx-"         Γöé "/Lx[Γö╝]"      Γöé
  7652. Γöé              Γöé cross-         Γöé                Γöé               Γöé
  7653. Γöé              Γöé reference      Γöé Do not gen-    Γöé Generate a    Γöé
  7654. Γöé              Γöé table of ref-  Γöé erate a cross- Γöé cross-        Γöé
  7655. Γöé              Γöé erenced vari-  Γöé reference      Γöé reference     Γöé
  7656. Γöé              Γöé able,          Γöé table.         Γöé table.        Γöé
  7657. Γöé              Γöé structure, and Γöé                Γöé               Γöé
  7658. Γöé              Γöé function names Γöé                Γöé               Γöé
  7659. Γöé              Γöé that shows     Γöé                Γöé               Γöé
  7660. Γöé              Γöé line numbers   Γöé                Γöé               Γöé
  7661. Γöé              Γöé where names    Γöé                Γöé               Γöé
  7662. Γöé              Γöé are declared.  Γöé                Γöé               Γöé
  7663. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7664. Γöé "/Ly[Γö╝Γöé-]"   Γöé Generate a     Γöé "/Ly-"         Γöé "/Ly[Γö╝]"      Γöé
  7665. Γöé              Γöé cross-         Γöé                Γöé               Γöé
  7666. Γöé              Γöé reference      Γöé Do not gen-    Γöé Generate a    Γöé
  7667. Γöé              Γöé table of all   Γöé erate a cross- Γöé cross-        Γöé
  7668. Γöé              Γöé variable,      Γöé reference      Γöé reference     Γöé
  7669. Γöé              Γöé structure, and Γöé table.         Γöé table.        Γöé
  7670. Γöé              Γöé function       Γöé                Γöé               Γöé
  7671. Γöé              Γöé names.         Γöé                Γöé               Γöé
  7672. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7673.  
  7674. Note:  You can also specify titles using the #pragma title and subtitle 
  7675. directives, but these titles do not appear on the first page of the listing 
  7676. output. 
  7677.  
  7678. Related Information 
  7679.  
  7680.  o inf.#pragma title 
  7681.  o inf.#pragma subtitle 
  7682.  o Output File Management Options 
  7683.  o Specifying Compiler Options 
  7684.  
  7685.  
  7686. ΓòÉΓòÉΓòÉ 6.6. Debugging and Diagnostic Information Options ΓòÉΓòÉΓòÉ
  7687.  
  7688. The options listed here are useful for debugging your programs. 
  7689.  
  7690. The information generated by the C/C++ for OS/2 debugger and the /Kn and /Wgrp 
  7691. options is provided to help you diagnose problems in your code. Do not use the 
  7692. debugging information as a programming interface. 
  7693.  
  7694.   1. The /Ti option is not recommended for use with /O[+]. 
  7695.  
  7696.   2. The /Wgrp options and /Kn options generate the same messages.  The /Wgrp 
  7697.      options give you greater control over the types of messages generated. 
  7698.      The /Kn options are provided for compatibility with C Set/2 V1.0 only, and 
  7699.      are mapped for you to the correct /Wgrp options. 
  7700.  
  7701.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7702.   Γöé          Debugging Options                                     Γöé
  7703.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7704.   Γöé OPTION       Γöé DESCRIPTION    Γöé DEFAULT        Γöé CHANGING      Γöé
  7705.   Γöé              Γöé                Γöé                Γöé DEFAULT       Γöé
  7706.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7707.   Γöé "/Ka[+Γöé-]"   Γöé Control mes-   Γöé "/Ka-"         Γöé "/Ka[+]"      Γöé
  7708.   Γöé              Γöé sages about    Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7709.   Γöé              Γöé variable       Γöé sages about    Γöé sages about   Γöé
  7710.   Γöé              Γöé assignments    Γöé assignments    Γöé inappropriate Γöé
  7711.   Γöé              Γöé that can       Γöé that may cause Γöé assignments   Γöé
  7712.   Γöé              Γöé result in a    Γöé a loss of pre- Γöé of "long"     Γöé
  7713.   Γöé              Γöé loss of preci- Γöé cision.        Γöé values.       Γöé
  7714.   Γöé              Γöé sion.          Γöé                Γöé               Γöé
  7715.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7716.   Γöé              Γöé "/Wtrd"        Γöé                Γöé               Γöé
  7717.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7718.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7719.   Γöé "/Kb[+Γöé-]"   Γöé Control mes-   Γöé "/Kb-"         Γöé "/Kb[+]"      Γöé
  7720.   Γöé              Γöé sages about    Γöé Suppress basic Γöé Produce basic Γöé
  7721.   Γöé              Γöé basic diagnos- Γöé diagnostic     Γöé diagnostic    Γöé
  7722.   Γöé              Γöé tics generated Γöé messages.      Γöé messages.     Γöé
  7723.   Γöé              Γöé by "/K"        Γöé                Γöé               Γöé
  7724.   Γöé              Γöé options.       Γöé                Γöé               Γöé
  7725.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7726.   Γöé              Γöé "/Wgen"        Γöé                Γöé               Γöé
  7727.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7728.   Γöé              Γöé                Γöé                Γöé               Γöé
  7729.   Γöé              Γöé NOTE:  Many of Γöé                Γöé               Γöé
  7730.   Γöé              Γöé the messages   Γöé                Γöé               Γöé
  7731.   Γöé              Γöé considered     Γöé                Γöé               Γöé
  7732.   Γöé              Γöé general diag-  Γöé                Γöé               Γöé
  7733.   Γöé              Γöé nostics in the Γöé                Γöé               Γöé
  7734.   Γöé              Γöé C Set/2 V1.0   Γöé                Γöé               Γöé
  7735.   Γöé              Γöé product are    Γöé                Γöé               Γöé
  7736.   Γöé              Γöé now contolled  Γöé                Γöé               Γöé
  7737.   Γöé              Γöé by a specific  Γöé                Γöé               Γöé
  7738.   Γöé              Γöé /W option.     Γöé                Γöé               Γöé
  7739.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7740.   Γöé "/Kc[Γö╝Γöé-]"   Γöé Control pre-   Γöé "/Kc-"         Γöé "/Kc[Γö╝]"      Γöé
  7741.   Γöé              Γöé processor      Γöé Suppress pre-  Γöé Produce pre-  Γöé
  7742.   Γöé              Γöé warning mes-   Γöé processor      Γöé processor     Γöé
  7743.   Γöé              Γöé sages.         Γöé warning mes-   Γöé warning mes-  Γöé
  7744.   Γöé              Γöé Maps to the    Γöé sages.         Γöé sages.        Γöé
  7745.   Γöé              Γöé "/Wppc"        Γöé                Γöé               Γöé
  7746.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7747.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7748.   Γöé "/Ke[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Ke-"         Γöé "/Ke[Γö╝]"      Γöé
  7749.   Γöé              Γöé sages about    Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7750.   Γöé              Γöé "enum" usage.  Γöé sages about    Γöé sages about   Γöé
  7751.   Γöé              Γöé Maps to the    Γöé "enum" usage.  Γöé "enum" usage. Γöé
  7752.   Γöé              Γöé "/Wenu"        Γöé                Γöé               Γöé
  7753.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7754.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7755.   Γöé "/Kf[Γö╝Γöé-]"   Γöé Set all diag-  Γöé "/Kf-"         Γöé "/Kf[Γö╝]"      Γöé
  7756.   Γöé              Γöé nostic mes-    Γöé                Γöé               Γöé
  7757.   Γöé              Γöé sages options  Γöé Set all diag-  Γöé Set all diag- Γöé
  7758.   Γöé              Γöé on or off.     Γöé nostic mes-    Γöé nostic mes-   Γöé
  7759.   Γöé              Γöé Maps to the    Γöé sages options  Γöé sages options Γöé
  7760.   Γöé              Γöé "/Wall"        Γöé off.           Γöé on.           Γöé
  7761.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7762.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7763.   Γöé "/Kg[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Kg-"         Γöé "/Kg[Γö╝]"      Γöé
  7764.   Γöé              Γöé sages about    Γöé                Γöé               Γöé
  7765.   Γöé              Γöé the appearance Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7766.   Γöé              Γöé and usage of   Γöé sages about    Γöé sages about   Γöé
  7767.   Γöé              Γöé "goto" state-  Γöé "goto" state-  Γöé "goto" state- Γöé
  7768.   Γöé              Γöé ments.         Γöé ments.         Γöé ments.        Γöé
  7769.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7770.   Γöé              Γöé "/Wgot"        Γöé                Γöé               Γöé
  7771.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7772.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7773.   Γöé "/Ki[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Ki-"         Γöé "/Ki[Γö╝]"      Γöé
  7774.   Γöé              Γöé sages about    Γöé                Γöé               Γöé
  7775.   Γöé              Γöé variables that Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7776.   Γöé              Γöé are not        Γöé sages about    Γöé sages about   Γöé
  7777.   Γöé              Γöé explicitly     Γöé uninitialized  Γöé uninitialized Γöé
  7778.   Γöé              Γöé initialized.   Γöé variables.     Γöé variables.    Γöé
  7779.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7780.   Γöé              Γöé "/Wini" and    Γöé                Γöé               Γöé
  7781.   Γöé              Γöé "/Wuni"        Γöé                Γöé               Γöé
  7782.   Γöé              Γöé options.       Γöé                Γöé               Γöé
  7783.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7784.   Γöé "/Ko[Γö╝Γöé-]"   Γöé Control diag-  Γöé "/Ko-"         Γöé "/Ko[Γö╝]"      Γöé
  7785.   Γöé              Γöé nostic mes-    Γöé                Γöé               Γöé
  7786.   Γöé              Γöé sages about    Γöé Suppress por-  Γöé Produce por-  Γöé
  7787.   Γöé              Γöé portability.   Γöé tability mes-  Γöé tability mes- Γöé
  7788.   Γöé              Γöé Maps to the    Γöé sages.         Γöé sages.        Γöé
  7789.   Γöé              Γöé "/Wpor"        Γöé                Γöé               Γöé
  7790.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7791.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7792.   Γöé "/Kp[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Kp-"         Γöé "/Kp[Γö╝]"      Γöé
  7793.   Γöé              Γöé sages about    Γöé                Γöé               Γöé
  7794.   Γöé              Γöé function       Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7795.   Γöé              Γöé parameters     Γöé sages about    Γöé sages about   Γöé
  7796.   Γöé              Γöé that are not   Γöé unused func-   Γöé unused func-  Γöé
  7797.   Γöé              Γöé used.          Γöé tion parame-   Γöé tion parame-  Γöé
  7798.   Γöé              Γöé Maps to the    Γöé ters.          Γöé ters.         Γöé
  7799.   Γöé              Γöé "/Wpar"        Γöé                Γöé               Γöé
  7800.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7801.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7802.   Γöé "/Kr[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Kr-"         Γöé "/Kr[Γö╝]"      Γöé
  7803.   Γöé              Γöé sages about    Γöé                Γöé               Γöé
  7804.   Γöé              Γöé mapping of     Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7805.   Γöé              Γöé names to the   Γöé sages about    Γöé sages about   Γöé
  7806.   Γöé              Γöé linkage        Γöé name mapping.  Γöé name mapping. Γöé
  7807.   Γöé              Γöé editor.        Γöé                Γöé               Γöé
  7808.   Γöé              Γöé *********      Γöé                Γöé               Γöé
  7809.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7810.   Γöé              Γöé ????????       Γöé                Γöé               Γöé
  7811.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7812.   Γöé              Γöé *************  Γöé                Γöé               Γöé
  7813.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7814.   Γöé "/Kt[Γö╝Γöé-]"   Γöé Control pre-   Γöé "/Kt-"         Γöé "/Kt[Γö╝]"      Γöé
  7815.   Γöé              Γöé processor      Γöé                Γöé               Γöé
  7816.   Γöé              Γöé trace mes-     Γöé Suppress pre-  Γöé Produce pre-  Γöé
  7817.   Γöé              Γöé sages.         Γöé processor      Γöé processor     Γöé
  7818.   Γöé              Γöé Maps to the    Γöé trace mes-     Γöé trace mes-    Γöé
  7819.   Γöé              Γöé "/Wppt"        Γöé sages.         Γöé sages.        Γöé
  7820.   Γöé              Γöé option.        Γöé                Γöé               Γöé
  7821.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7822.   Γöé "/Kx[Γö╝Γöé-]"   Γöé Control mes-   Γöé "/Kx-"         Γöé "/Kx[Γö╝]"      Γöé
  7823.   Γöé              Γöé sages about    Γöé                Γöé               Γöé
  7824.   Γöé              Γöé variables and  Γöé Suppress mes-  Γöé Produce mes-  Γöé
  7825.   Γöé              Γöé functions that Γöé sages about    Γöé sages about   Γöé
  7826.   Γöé              Γöé have external  Γöé unreferenced   Γöé unreferenced  Γöé
  7827.   Γöé              Γöé declarations,  Γöé external vari- Γöé external var- Γöé
  7828.   Γöé              Γöé but are never  Γöé ables and      Γöé iables and    Γöé
  7829.   Γöé              Γöé used.          Γöé functions.     Γöé functions.    Γöé
  7830.   Γöé              Γöé Maps to the    Γöé                Γöé               Γöé
  7831.   Γöé              Γöé "/Wext" and    Γöé                Γöé               Γöé
  7832.   Γöé              Γöé "/Wuse"        Γöé                Γöé               Γöé
  7833.   Γöé              Γöé options.       Γöé                Γöé               Γöé
  7834.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7835.   Γöé "/Nn"        Γöé Set maximum    Γöé Set no limit   Γöé "/Nn"         Γöé
  7836.   Γöé              Γöé number of      Γöé on number of   Γöé End compila-  Γöé
  7837.   Γöé              Γöé errors before  Γöé errors.        Γöé tion when     Γöé
  7838.   Γöé              Γöé compilation    Γöé                Γöé error count   Γöé
  7839.   Γöé              Γöé aborts.        Γöé                Γöé reaches n.    Γöé
  7840.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7841.   Γöé "/Ti[Γö╝Γöé-]"   Γöé Generate       Γöé "/Ti-"         Γöé "/Ti[Γö╝]"      Γöé
  7842.   Γöé              Γöé C/C:font       Γöé Do not gen-    Γöé Generate      Γöé
  7843.   Γöé              Γöé facename=CourieΓöé erate debugger Γöé debugger      Γöé
  7844.   Γöé              Γöé size=15x12.Γö╝:foΓöétinformation.   Γöé information.  Γöé
  7845.   Γöé              Γöé facename=defaulΓöé                Γöé               Γöé
  7846.   Γöé              Γöé size=0x0.:font Γöé                Γöé               Γöé
  7847.   Γöé              Γöé facename=CourieΓöé                Γöé               Γöé
  7848.   Γöé              Γöé size=15x12.Γö╝:foΓöét               Γöé               Γöé
  7849.   Γöé              Γöé facename=defaulΓöé                Γöé               Γöé
  7850.   Γöé              Γöé size=0x0. for  Γöé                Γöé               Γöé
  7851.   Γöé              Γöé OS/2 debugger  Γöé                Γöé               Γöé
  7852.   Γöé              Γöé information.   Γöé                Γöé               Γöé
  7853.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7854.   Γöé "/Ts[Γö╝Γöé-]"   Γöé Generate code  Γöé "/Ts-"         Γöé "/Ts[Γö╝]"      Γöé
  7855.   Γöé              Γöé to allow the   Γöé                Γöé               Γöé
  7856.   Γöé              Γöé debugger to    Γöé Do not gen-    Γöé Generate code Γöé
  7857.   Γöé              Γöé maintain the   Γöé erate code to  Γöé to allow the  Γöé
  7858.   Γöé              Γöé call stack     Γöé allow the      Γöé debugger to   Γöé
  7859.   Γöé              Γöé across all     Γöé debugger to    Γöé maintain the  Γöé
  7860.   Γöé              Γöé calls that do  Γöé maintain the   Γöé call stack.   Γöé
  7861.   Γöé              Γöé not chain the  Γöé call stack.    Γöé               Γöé
  7862.   Γöé              Γöé EBP, that is,  Γöé                Γöé               Γöé
  7863.   Γöé              Γöé :font          Γöé                Γöé               Γöé
  7864.   Γöé              Γöé facename=CourieΓöé                Γöé               Γöé
  7865.   Γöé              Γöé size=15x12.systΓöém:font          Γöé               Γöé
  7866.   Γöé              Γöé facename=defaulΓöé                Γöé               Γöé
  7867.   Γöé              Γöé size=0x0.      Γöé                Γöé               Γöé
  7868.   Γöé              Γöé calls.         Γöé                Γöé               Γöé
  7869.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7870.   Γöé "/Tx[Γö╝Γöé-]"   Γöé Control infor- Γöé "/Tx-"         Γöé "/Tx[Γö╝Γöé-]"    Γöé
  7871.   Γöé              Γöé mation gener-  Γöé                Γöé               Γöé
  7872.   Γöé              Γöé ated when an   Γöé Provide only   Γöé Provide a     Γöé
  7873.   Γöé              Γöé exception      Γöé the exception  Γöé complete      Γöé
  7874.   Γöé              Γöé occurs.        Γöé message and    Γöé machine-state Γöé
  7875.   Γöé              Γöé                Γöé address when   Γöé dump when an  Γöé
  7876.   Γöé              Γöé                Γöé an exception   Γöé exception     Γöé
  7877.   Γöé              Γöé                Γöé occurs; do not Γöé occurs.       Γöé
  7878.   Γöé              Γöé                Γöé provide a com- Γöé               Γöé
  7879.   Γöé              Γöé                Γöé plete machine- Γöé               Γöé
  7880.   Γöé              Γöé                Γöé state dump.    Γöé               Γöé
  7881.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7882.   Γöé "/W<grp>[Γö╝Γöé-]ΓöégControl diag-  Γöé "/Wall-"       Γöé "/Wgrp"       Γöé
  7883.   Γöé              Γöé nostic mes-    Γöé Do not gen-    Γöé Generate mes- Γöé
  7884.   Γöé              Γöé sages.         Γöé erate diag-    Γöé sages in the  Γöé
  7885.   Γöé              Γöé                Γöé nostic         Γöé grp group.    Γöé
  7886.   Γöé              Γöé                Γöé messages.      Γöé More than one Γöé
  7887.   Γöé              Γöé                Γöé                Γöé group may be  Γöé
  7888.   Γöé              Γöé                Γöé                Γöé specified.    Γöé
  7889.   Γöé              Γöé                Γöé                Γöé See --        Γöé
  7890.   Γöé              Γöé                Γöé                Γöé Heading       Γöé
  7891.   Γöé              Γöé                Γöé                Γöé 'WCOPTS'      Γöé
  7892.   Γöé              Γöé                Γöé                Γöé unknown --    Γöé
  7893.   Γöé              Γöé                Γöé                Γöé for           Γöé
  7894.   Γöé              Γöé                Γöé                Γöé descriptions  Γöé
  7895.   Γöé              Γöé                Γöé                Γöé of the dif-   Γöé
  7896.   Γöé              Γöé                Γöé                Γöé ferent groups Γöé
  7897.   Γöé              Γöé                Γöé                Γöé of messages.  Γöé
  7898.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7899.   Γöé "/W[0Γöé1Γöé2Γöé3]"Γöé Set the type   Γöé "/W3"          Γöé "/W[0Γöé1Γöé2Γöé3]" Γöé
  7900.   Γöé              Γöé of message the Γöé Produce all    Γöé               Γöé
  7901.   Γöé              Γöé compiler       Γöé message types. Γöé "/W0"         Γöé
  7902.   Γöé              Γöé produces and   Γöé                Γöé Produce only  Γöé
  7903.   Γöé              Γöé that causes    Γöé                Γöé severe        Γöé
  7904.   Γöé              Γöé the error      Γöé                Γöé errors.       Γöé
  7905.   Γöé              Γöé count to       Γöé                Γöé               Γöé
  7906.   Γöé              Γöé increment.     Γöé                Γöé "/W1"         Γöé
  7907.   Γöé              Γöé                Γöé                Γöé Produce       Γöé
  7908.   Γöé              Γöé                Γöé                Γöé severe errors Γöé
  7909.   Γöé              Γöé                Γöé                Γöé and errors.   Γöé
  7910.   Γöé              Γöé                Γöé                Γöé               Γöé
  7911.   Γöé              Γöé                Γöé                Γöé "/W2"         Γöé
  7912.   Γöé              Γöé                Γöé                Γöé Produce       Γöé
  7913.   Γöé              Γöé                Γöé                Γöé severe        Γöé
  7914.   Γöé              Γöé                Γöé                Γöé errors,       Γöé
  7915.   Γöé              Γöé                Γöé                Γöé errors, and   Γöé
  7916.   Γöé              Γöé                Γöé                Γöé warnings.     Γöé
  7917.   Γöé              Γöé                Γöé                Γöé               Γöé
  7918.   Γöé              Γöé                Γöé                Γöé "/W3"  Same   Γöé
  7919.   Γöé              Γöé                Γöé                Γöé as default.   Γöé
  7920.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7921.  
  7922.  Using the /Wgrp Diagnostic Options 
  7923.  
  7924.  Related Information 
  7925.  
  7926.  o Specifying Compiler Options 
  7927.  o C/C++ for OS/2 Return Codes and Messages 
  7928.  
  7929.  
  7930. ΓòÉΓòÉΓòÉ 6.6.1. Using the /Wgrp Diagnostic Options ΓòÉΓòÉΓòÉ
  7931.  
  7932. Use these options to examine your source code for possible programming errors, 
  7933. weak programming style, and other information about the structure of your 
  7934. program. When you specify /Wall[+] all suboptions are turned on and all 
  7935. possible diagnostic messages are reported.  Because even a simple program that 
  7936. contains no errors can produce many informational messages, you can use the 
  7937. suboptions alone or in combination to specify the type of messages that you 
  7938. want the compiler to report. Suboptions can be separated by an optional + sign. 
  7939. To turn off a suboption, you must place a - sign after it. 
  7940.  
  7941. The following table lists the message groups and the message numbers that each 
  7942. controls, as well as the /Kn that formerly controlled each message. 
  7943.  
  7944. :font facename=Courier
  7945. size=15x12./W:font facename=default size=0x0.grp:font
  7946. facename=default size=0x0. Options
  7947. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7948. Γöé                                                                Γöé
  7949. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7950. Γöé   grp  Γöé  :FONT Γöé CONTROLS MESSAGES ABOUT    Γöé MESSAGES        Γöé
  7951. Γöé        Γöé FACENAMΓöé=COURIER                    Γöé                 Γöé
  7952. Γöé        Γöé SIZE=15Γöé12.:FONT                    Γöé                 Γöé
  7953. Γöé        Γöé FACENAMΓöé=COURIER                    Γöé                 Γöé
  7954. Γöé        Γöé SIZE=15Γöé12./K:FONT                  Γöé                 Γöé
  7955. Γöé        Γöé FACENAMΓöé=DEFAULT                    Γöé                 Γöé
  7956. Γöé        Γöé SIZE=0XΓöé.n:FONT                     Γöé                 Γöé
  7957. Γöé        Γöé FACENAMΓöé=DEFAULT                    Γöé                 Γöé
  7958. Γöé        Γöé SIZE=0XΓöé.                           Γöé                 Γöé
  7959. Γöé        Γöé OPTION Γöé                            Γöé                 Γöé
  7960. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7961. Γöé  "all" Γöé  "/Kf" Γöé All diagnostics.           Γöé All message     Γöé
  7962. Γöé        Γöé        Γöé                            Γöé numbers listed  Γöé
  7963. Γöé        Γöé        Γöé                            Γöé in this table.  Γöé
  7964. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7965. Γöé  "cmp" Γöé (none) Γöé Possible redundancies in   Γöé Messages for    Γöé
  7966. Γöé        Γöé        Γöé unsigned comparisons.      Γöé C:font          Γöé
  7967. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  7968. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  7969. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  7970. Γöé        Γöé        Γöé                            Γöé size=0x0.:font  Γöé
  7971. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  7972. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  7973. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  7974. Γöé        Γöé        Γöé                            Γöé size=0x0.       Γöé
  7975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7976. Γöé  "cnd" Γöé  "/Kb" Γöé Possible redundancies or   Γöé EDC0816,        Γöé
  7977. Γöé        Γöé        Γöé problems in conditional    Γöé EDC0821,        Γöé
  7978. Γöé        Γöé        Γöé expressions.               Γöé EDC0822         Γöé
  7979. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7980. Γöé  "cns" Γöé  "/Kb" Γöé Operations involving con-  Γöé EDC0823,        Γöé
  7981. Γöé        Γöé        Γöé stants.                    Γöé EDC0824,        Γöé
  7982. Γöé        Γöé        Γöé                            Γöé EDC0838,        Γöé
  7983. Γöé        Γöé        Γöé                            Γöé EDC0839,        Γöé
  7984. Γöé        Γöé        Γöé                            Γöé EDC0865,        Γöé
  7985. Γöé        Γöé        Γöé                            Γöé EDC0866,        Γöé
  7986. Γöé        Γöé        Γöé                            Γöé EDC0867         Γöé
  7987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7988. Γöé  "cnv" Γöé  "/Kb" Γöé Conversions.               Γöé Messages for    Γöé
  7989. Γöé        Γöé        Γöé                            Γöé C:font          Γöé
  7990. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  7991. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  7992. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  7993. Γöé        Γöé        Γöé                            Γöé size=0x0.:font  Γöé
  7994. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  7995. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  7996. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  7997. Γöé        Γöé        Γöé                            Γöé size=0x0.       Γöé
  7998. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7999. Γöé  "dcl" Γöé (none) Γöé Consistency of declara-    Γöé Messages for    Γöé
  8000. Γöé        Γöé        Γöé tions.                     Γöé C:font          Γöé
  8001. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8002. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8003. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8004. Γöé        Γöé        Γöé                            Γöé size=0x0.:font  Γöé
  8005. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8006. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8007. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8008. Γöé        Γöé        Γöé                            Γöé size=0x0.       Γöé
  8009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8010. Γöé  "eff" Γöé  "/Kb" Γöé Statements with no effect. Γöé EDC0811,        Γöé
  8011. Γöé        Γöé        Γöé                            Γöé EDC0812,        Γöé
  8012. Γöé        Γöé        Γöé                            Γöé EDC0813,        Γöé
  8013. Γöé        Γöé        Γöé                            Γöé EDC0814,        Γöé
  8014. Γöé        Γöé        Γöé                            Γöé EDC0815         Γöé
  8015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8016. Γöé  "enu" Γöé  "/Ke" Γöé Consistency of "enum" var- Γöé EDC0830,        Γöé
  8017. Γöé        Γöé        Γöé iables.                    Γöé EDC0831         Γöé
  8018. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8019. Γöé  "ext" Γöé  "/Kb" Γöé Unused external defi-      Γöé EDC0803,        Γöé
  8020. Γöé        Γöé   and  Γöé nitions.                   Γöé EDC0804,        Γöé
  8021. Γöé        Γöé  "/Kx" Γöé                            Γöé EDC0810         Γöé
  8022. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8023. Γöé  "gen" Γöé  "/Kb" Γöé General diagnostics.       Γöé EDC0807,        Γöé
  8024. Γöé        Γöé        Γöé                            Γöé EDC0809,        Γöé
  8025. Γöé        Γöé        Γöé                            Γöé EDC0826,        Γöé
  8026. Γöé        Γöé        Γöé                            Γöé EDC0835,        Γöé
  8027. Γöé        Γöé        Γöé                            Γöé EDC0868,        Γöé
  8028. Γöé        Γöé        Γöé                            Γöé EDC0869         Γöé
  8029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8030. Γöé  "got" Γöé  "/Kg" Γöé Usage of "goto" state-     Γöé EDC0832,        Γöé
  8031. Γöé        Γöé        Γöé ments.                     Γöé EDC0837         Γöé
  8032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8033. Γöé  "ini" Γöé  "/Ki" Γöé Possible problems with     Γöé EDC0861,        Γöé
  8034. Γöé        Γöé        Γöé initialization.            Γöé EDC0862,        Γöé
  8035. Γöé        Γöé        Γöé                            Γöé EDC0863,        Γöé
  8036. Γöé        Γöé        Γöé                            Γöé EDC0864         Γöé
  8037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8038. Γöé  "lan" Γöé (none) Γöé Effects of the language    Γöé Messages for    Γöé
  8039. Γöé        Γöé        Γöé level.                     Γöé C:font          Γöé
  8040. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8041. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8042. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8043. Γöé        Γöé        Γöé                            Γöé size=0x0.:font  Γöé
  8044. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8045. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8046. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8047. Γöé        Γöé        Γöé                            Γöé size=0x0.       Γöé
  8048. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8049. Γöé  "obs" Γöé  "/Kb" Γöé Features that are obso-    Γöé EDC0827,        Γöé
  8050. Γöé        Γöé        Γöé lete.                      Γöé EDC0828         Γöé
  8051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8052. Γöé  "ord" Γöé  "/Kb" Γöé Unspecified order of eval- Γöé EDC0829         Γöé
  8053. Γöé        Γöé        Γöé uation.                    Γöé                 Γöé
  8054. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8055. Γöé  "par" Γöé  "/Kp" Γöé Unused parameters.         Γöé EDC0800         Γöé
  8056. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8057. Γöé  "por" Γöé  "/Ko, Γöé Non-portable language con- Γöé EDC0464,        Γöé
  8058. Γöé        Γöé  /Kb"  Γöé structs.                   Γöé EDC0819,        Γöé
  8059. Γöé        Γöé        Γöé                            Γöé EDC0820         Γöé
  8060. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8061. Γöé  "ppc" Γöé  "/Kc" Γöé Possible problems with     Γöé EDC0836,        Γöé
  8062. Γöé        Γöé        Γöé using the preprocessor.    Γöé EDC0841,        Γöé
  8063. Γöé        Γöé        Γöé                            Γöé EDC0842,        Γöé
  8064. Γöé        Γöé        Γöé                            Γöé EDC0843,        Γöé
  8065. Γöé        Γöé        Γöé                            Γöé EDC0844,        Γöé
  8066. Γöé        Γöé        Γöé                            Γöé EDC0845,        Γöé
  8067. Γöé        Γöé        Γöé                            Γöé EDC0846,        Γöé
  8068. Γöé        Γöé        Γöé                            Γöé EDC0847,        Γöé
  8069. Γöé        Γöé        Γöé                            Γöé EDC0848         Γöé
  8070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8071. Γöé  "ppt" Γöé  "/Kt" Γöé Trace of preprocessor      Γöé EDC0851,        Γöé
  8072. Γöé        Γöé        Γöé actions.                   Γöé EDC0852,        Γöé
  8073. Γöé        Γöé        Γöé                            Γöé EDC0853,        Γöé
  8074. Γöé        Γöé        Γöé                            Γöé EDC0854,        Γöé
  8075. Γöé        Γöé        Γöé                            Γöé EDC0855,        Γöé
  8076. Γöé        Γöé        Γöé                            Γöé EDC0856,        Γöé
  8077. Γöé        Γöé        Γöé                            Γöé EDC0857,        Γöé
  8078. Γöé        Γöé        Γöé                            Γöé EDC0858,        Γöé
  8079. Γöé        Γöé        Γöé                            Γöé EDC0859,        Γöé
  8080. Γöé        Γöé        Γöé                            Γöé EDC0860,        Γöé
  8081. Γöé        Γöé        Γöé                            Γöé EDC0870         Γöé
  8082. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8083. Γöé  "pro" Γöé  "/Kb" Γöé Missing function proto-    Γöé EDC0185         Γöé
  8084. Γöé        Γöé        Γöé types.                     Γöé                 Γöé
  8085. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8086. Γöé  "rea" Γöé  "/Kb" Γöé Code that cannot be        Γöé EDC0825         Γöé
  8087. Γöé        Γöé        Γöé reached.                   Γöé                 Γöé
  8088. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8089. Γöé  "ret" Γöé  "/Kb" Γöé Consistency of "return"    Γöé EDC0833,        Γöé
  8090. Γöé        Γöé        Γöé statements.                Γöé EDC0834         Γöé
  8091. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8092. Γöé  "trd" Γöé  "/Ka" Γöé Possible truncation or     Γöé EDC0817,        Γöé
  8093. Γöé        Γöé        Γöé loss of data or precision. Γöé EDC0818         Γöé
  8094. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8095. Γöé  "tru" Γöé (none) Γöé Variable names truncated   Γöé Messages for    Γöé
  8096. Γöé        Γöé        Γöé by the compiler.           Γöé C:font          Γöé
  8097. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8098. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8099. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8100. Γöé        Γöé        Γöé                            Γöé size=0x0.:font  Γöé
  8101. Γöé        Γöé        Γöé                            Γöé facename=CourierΓöé
  8102. Γöé        Γöé        Γöé                            Γöé size=15x12.Γö╝:fonΓöé
  8103. Γöé        Γöé        Γöé                            Γöé facename=defaultΓöé
  8104. Γöé        Γöé        Γöé                            Γöé size=0x0.       Γöé
  8105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8106. Γöé  "uni" Γöé  "/Ki" Γöé Uninitialized variables.   Γöé EDC0808         Γöé
  8107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8108. Γöé  "use" Γöé  "/Kb, Γöé Unused "auto" and "static" Γöé EDC0801,        Γöé
  8109. Γöé        Γöé  /Kx"  Γöé variables.                 Γöé EDC0802,        Γöé
  8110. Γöé        Γöé        Γöé                            Γöé EDC0805,        Γöé
  8111. Γöé        Γöé        Γöé                            Γöé EDC0806         Γöé
  8112. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8113.  
  8114. More information about the messages generated by the /Wgrp options is available 
  8115. in C/C++ for OS/2 Return Codes and Messages. 
  8116.  
  8117. Examples of /Wgrp Options 
  8118.  
  8119. Related Information 
  8120.  
  8121.  o Specifying Compiler Options 
  8122.  o C/C++ for OS/2 Return Codes and Messages 
  8123.  
  8124.  
  8125. ΓòÉΓòÉΓòÉ 6.7. Source Code Options ΓòÉΓòÉΓòÉ
  8126.  
  8127. These options allow you to control how the C/C++ for OS/2 compiler interprets 
  8128. your source file. This control is especially useful, for example, if you are 
  8129. importing source files from other systems that use line numbers. 
  8130.  
  8131. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8132. Γöé          Source Code Options                                   Γöé
  8133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8134. Γöé OPTION         Γöé DESCRIPTION   Γöé DEFAULT       Γöé CHANGING      Γöé
  8135. Γöé                Γöé               Γöé               Γöé DEFAULT       Γöé
  8136. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8137. Γöé "/S[aΓöécΓöéeΓöé2]"  Γöé Set language  Γöé "/Se"         Γöé "/Sa"         Γöé
  8138. Γöé                Γöé standard.     Γöé               Γöé               Γöé
  8139. Γöé                Γöé               Γöé Allow all     Γöé Conform to    Γöé
  8140. Γöé                Γöé               Γöé C/C:font      Γöé ANSI stand-   Γöé
  8141. Γöé                Γöé               Γöé facename=CouriΓöérards.  "/Sc"  Γöé
  8142. Γöé                Γöé               Γöé size=15x12.Γö╝:fΓöént             Γöé
  8143. Γöé                Γöé               Γöé facename=defauΓöétConform to    Γöé
  8144. Γöé                Γöé               Γöé size=0x0.:fontΓöé CFRONT stand- Γöé
  8145. Γöé                Γöé               Γöé facename=CouriΓöérards.         Γöé
  8146. Γöé                Γöé               Γöé size=15x12.Γö╝:fΓöént             Γöé
  8147. Γöé                Γöé               Γöé facename=defauΓöét"/S2"         Γöé
  8148. Γöé                Γöé               Γöé size=0x0. for Γöé               Γöé
  8149. Γöé                Γöé               Γöé OS/2 language Γöé Conform to    Γöé
  8150. Γöé                Γöé               Γöé extensions.   Γöé SAA Level 2   Γöé
  8151. Γöé                Γöé               Γöé               Γöé standards.    Γöé
  8152. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8153. Γöé "/Sd"          Γöé Set default   Γöé "/Sd-"        Γöé "/Sd[Γö╝]"      Γöé
  8154. Γöé                Γöé file exten-   Γöé               Γöé               Γöé
  8155. Γöé                Γöé sion.         Γöé Set the       Γöé Set the       Γöé
  8156. Γöé                Γöé               Γöé default file  Γöé default file  Γöé
  8157. Γöé                Γöé               Γöé extension as  Γöé extension as  Γöé
  8158. Γöé                Γöé               Γöé ".OBJ".       Γöé ".C".         Γöé
  8159. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8160. Γöé "/Sg[l][,<rΓöé*>]Γöé Set left and  Γöé "/Sg-"        Γöé "/Sg[l][,rΓöé*]"Γöé
  8161. Γöé                Γöé right margins Γöé               Γöé               Γöé
  8162. Γöé "/Sg-"         Γöé of the input  Γöé Do not set    Γöé Set left      Γöé
  8163. Γöé                Γöé file and      Γöé any margins:  Γöé margin to     Γöé
  8164. Γöé                Γöé ignore text   Γöé use the       Γöé "l".  The     Γöé
  8165. Γöé                Γöé outside these Γöé entire input  Γöé right margin  Γöé
  8166. Γöé                Γöé margins.      Γöé file.         Γöé can be the    Γöé
  8167. Γöé                Γöé Useful when   Γöé               Γöé value r, or   Γöé
  8168. Γöé                Γöé using source  Γöé               Γöé an asterisk   Γöé
  8169. Γöé                Γöé files created Γöé               Γöé can be used   Γöé
  8170. Γöé                Γöé on other      Γöé               Γöé to denote no  Γöé
  8171. Γöé                Γöé systems       Γöé               Γöé right margin. Γöé
  8172. Γöé                Γöé               Γöé               Γöé "l" and r     Γöé
  8173. Γöé                Γöé NOTE:  This   Γöé               Γöé must be       Γöé
  8174. Γöé                Γöé option is     Γöé               Γöé between 1 and Γöé
  8175. Γöé                Γöé only valid    Γöé               Γöé 65535 inclu-  Γöé
  8176. Γöé                Γöé for C files.  Γöé               Γöé sive, and r   Γöé
  8177. Γöé                Γöé which contain Γöé               Γöé must be       Γöé
  8178. Γöé                Γöé characters    Γöé               Γöé greater than  Γöé
  8179. Γöé                Γöé that you want Γöé               Γöé or equal to   Γöé
  8180. Γöé                Γöé to ignore.    Γöé               Γöé "l".          Γöé
  8181. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8182. Γöé "/Sh[Γö╝Γöé-]"     Γöé Allow use of  Γöé "/Sh-"        Γöé "/Sh[Γö╝]"      Γöé
  8183. Γöé                Γöé ddnames.      Γöé               Γöé               Γöé
  8184. Γöé                Γöé               Γöé Do not allow  Γöé Allow use of  Γöé
  8185. Γöé                Γöé               Γöé ddnames.      Γöé ddnames.      Γöé
  8186. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8187. Γöé "/Si[Γö╝Γöé-]"     Γöé Control use   Γöé "/Si[Γö╝]"      Γöé "/Si-"        Γöé
  8188. Γöé                Γöé of precom-    Γöé Use precom-   Γöé Do not use    Γöé
  8189. Γöé                Γöé piled header  Γöé piled header  Γöé precompiled   Γöé
  8190. Γöé                Γöé files.        Γöé files if they Γöé header files. Γöé
  8191. Γöé                Γöé               Γöé exist and are Γöé               Γöé
  8192. Γöé                Γöé               Γöé current.      Γöé               Γöé
  8193. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8194. Γöé "/Sm[Γö╝Γöé-]"     Γöé Control com-  Γöé "/Sm-"        Γöé "/Sm[Γö╝]"      Γöé
  8195. Γöé                Γöé piler inter-  Γöé               Γöé               Γöé
  8196. Γöé                Γöé pretation of  Γöé Treat unsup-  Γöé Ignore unsup- Γöé
  8197. Γöé                Γöé unsupported   Γöé ported 16-bit Γöé ported 16-bit Γöé
  8198. Γöé                Γöé 16-bit        Γöé keywords like Γöé keywords.     Γöé
  8199. Γöé                Γöé keywords,     Γöé any other     Γöé               Γöé
  8200. Γöé                Γöé such as       Γöé identifier.   Γöé               Γöé
  8201. Γöé                Γöé "near" and    Γöé               Γöé               Γöé
  8202. Γöé                Γöé "far".        Γöé               Γöé               Γöé
  8203. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8204. Γöé "/Sn[Γö╝Γöé-]"     Γöé Allow use of  Γöé "/Sn-"        Γöé "/Sn[Γö╝]"      Γöé
  8205. Γöé                Γöé double-byte   Γöé               Γöé               Γöé
  8206. Γöé                Γöé character set Γöé Do not allow  Γöé Allow use of  Γöé
  8207. Γöé                Γöé (DBCS).       Γöé DBCS.         Γöé DBCS.         Γöé
  8208. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8209. Γöé "/Sp[1Γöé2Γöé4]"   Γöé Specify       Γöé "/Sp4"        Γöé "/Sp[1Γöé2]"    Γöé
  8210. Γöé                Γöé alignment or  Γöé               Γöé               Γöé
  8211. Γöé                Γöé packing of    Γöé Align struc-  Γöé Align struc-  Γöé
  8212. Γöé                Γöé data items    Γöé tures and     Γöé tures and     Γöé
  8213. Γöé                Γöé within struc- Γöé unions along  Γöé unions along  Γöé
  8214. Γöé                Γöé tures and     Γöé 4-byte bound- Γöé 1-byte or     Γöé
  8215. Γöé                Γöé unions.       Γöé aries (normal Γöé 2-byte bound- Γöé
  8216. Γöé                Γöé               Γöé alignment).   Γöé aries.  "/Sp" Γöé
  8217. Γöé                Γöé               Γöé               Γöé is equivalent Γöé
  8218. Γöé                Γöé               Γöé               Γöé to "/Sp1".    Γöé
  8219. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8220. Γöé "/Sq[l][,<rΓöé*>]Γöé Specify       Γöé "/Sq-"        Γöé "/Sq[l][,r]"  Γöé
  8221. Γöé                Γöé columns in    Γöé               Γöé               Γöé
  8222. Γöé "/Sq-"         Γöé which         Γöé Use no        Γöé Sequence      Γöé
  8223. Γöé                Γöé sequence      Γöé sequence      Γöé numbers       Γöé
  8224. Γöé                Γöé numbers       Γöé numbers.      Γöé appear        Γöé
  8225. Γöé                Γöé appear, and   Γöé               Γöé between       Γöé
  8226. Γöé                Γöé ignore text   Γöé               Γöé columns "l"   Γöé
  8227. Γöé                Γöé in those      Γöé               Γöé and r of each Γöé
  8228. Γöé                Γöé columns.      Γöé               Γöé line in the   Γöé
  8229. Γöé                Γöé This option   Γöé               Γöé input source  Γöé
  8230. Γöé                Γöé can be used   Γöé               Γöé code.  "l"    Γöé
  8231. Γöé                Γöé when          Γöé               Γöé and r must be Γöé
  8232. Γöé                Γöé importing     Γöé               Γöé between 1 and Γöé
  8233. Γöé                Γöé source files  Γöé               Γöé 65535 inclu-  Γöé
  8234. Γöé                Γöé from systems  Γöé               Γöé sive, and r   Γöé
  8235. Γöé                Γöé that uses     Γöé               Γöé must be       Γöé
  8236. Γöé                Γöé sequence      Γöé               Γöé greater than  Γöé
  8237. Γöé                Γöé numbers.      Γöé               Γöé or equal to   Γöé
  8238. Γöé                Γöé               Γöé               Γöé "l".  If you  Γöé
  8239. Γöé                Γöé NOTE:  This   Γöé               Γöé do not want   Γöé
  8240. Γöé                Γöé option is     Γöé               Γöé to specify a  Γöé
  8241. Γöé                Γöé only valid    Γöé               Γöé right column, Γöé
  8242. Γöé                Γöé for C files.  Γöé               Γöé use an        Γöé
  8243. Γöé                Γöé               Γöé               Γöé asterisk for  Γöé
  8244. Γöé                Γöé               Γöé               Γöé r.            Γöé
  8245. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8246. Γöé "/Sr[Γö╝Γöé-]"     Γöé Set type con- Γöé "/Sr-"        Γöé "/Sr[Γö╝]"      Γöé
  8247. Γöé                Γöé version       Γöé               Γöé               Γöé
  8248. Γöé                Γöé rules.        Γöé Use new-style Γöé Use old-style Γöé
  8249. Γöé                Γöé               Γöé rules for     Γöé rules for     Γöé
  8250. Γöé                Γöé               Γöé type conver-  Γöé type conver-  Γöé
  8251. Γöé                Γöé               Γöé sion.  New-   Γöé sion.  Old-   Γöé
  8252. Γöé                Γöé               Γöé style rules   Γöé style rules   Γöé
  8253. Γöé                Γöé               Γöé preserve      Γöé preserve the  Γöé
  8254. Γöé                Γöé               Γöé accuracy.     Γöé sign.  They   Γöé
  8255. Γöé                Γöé               Γöé               Γöé do not        Γöé
  8256. Γöé                Γöé               Γöé               Γöé conform to    Γöé
  8257. Γöé                Γöé               Γöé               Γöé ANSI stand-   Γöé
  8258. Γöé                Γöé               Γöé               Γöé ards.         Γöé
  8259. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8260. Γöé "/Ss[Γö╝Γöé-]"     Γöé Allow use of  Γöé "/Ss-"        Γöé "/Ss[Γö╝]"      Γöé
  8261. Γöé                Γöé double        Γöé               Γöé               Γöé
  8262. Γöé                Γöé slashes       Γöé Do not allow  Γöé Allow the     Γöé
  8263. Γöé                Γöé ("//") for    Γöé double        Γöé double slash  Γöé
  8264. Γöé                Γöé comments.     Γöé slashes to    Γöé format to     Γöé
  8265. Γöé                Γöé               Γöé indicate com- Γöé indicate com- Γöé
  8266. Γöé                Γöé NOTE:  This   Γöé ments.        Γöé ments.  This  Γöé
  8267. Γöé                Γöé option is not Γöé               Γöé type of       Γöé
  8268. Γöé                Γöé valid for     Γöé               Γöé comment is    Γöé
  8269. Γöé                Γöé C:font        Γöé               Γöé ended by a    Γöé
  8270. Γöé                Γöé facename=CouriΓöér              Γöé carriage      Γöé
  8271. Γöé                Γöé size=15x12.Γö╝:fΓöént             Γöé return.       Γöé
  8272. Γöé                Γöé facename=defauΓöét              Γöé               Γöé
  8273. Γöé                Γöé size=0x0.:fontΓöé               Γöé               Γöé
  8274. Γöé                Γöé facename=CouriΓöér              Γöé               Γöé
  8275. Γöé                Γöé size=15x12.Γö╝:fΓöént             Γöé               Γöé
  8276. Γöé                Γöé facename=defauΓöét              Γöé               Γöé
  8277. Γöé                Γöé size=0x0.     Γöé               Γöé               Γöé
  8278. Γöé                Γöé files because Γöé               Γöé               Γöé
  8279. Γöé                Γöé C:font        Γöé               Γöé               Γöé
  8280. Γöé                Γöé facename=CouriΓöér              Γöé               Γöé
  8281. Γöé                Γöé size=15x12.Γö╝:fΓöént             Γöé               Γöé
  8282. Γöé                Γöé facename=defauΓöét              Γöé               Γöé
  8283. Γöé                Γöé size=0x0.:fontΓöé               Γöé               Γöé
  8284. Γöé                Γöé facename=CouriΓöér              Γöé               Γöé
  8285. Γöé                Γöé size=15x12.Γö╝:fΓöént             Γöé               Γöé
  8286. Γöé                Γöé facename=defauΓöét              Γöé               Γöé
  8287. Γöé                Γöé size=0x0.     Γöé               Γöé               Γöé
  8288. Γöé                Γöé allows double Γöé               Γöé               Γöé
  8289. Γöé                Γöé slashes to    Γöé               Γöé               Γöé
  8290. Γöé                Γöé indicate com- Γöé               Γöé               Γöé
  8291. Γöé                Γöé ments as part Γöé               Γöé               Γöé
  8292. Γöé                Γöé of the lan-   Γöé               Γöé               Γöé
  8293. Γöé                Γöé guage         Γöé               Γöé               Γöé
  8294. Γöé                Γöé standard.     Γöé               Γöé               Γöé
  8295. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8296. Γöé "/Su[Γö╝Γöé-Γöé1Γöé2Γöé4]Γöé Control size  Γöé "/Su-"        Γöé "/Su[Γö╝]"      Γöé
  8297. Γöé                Γöé of "enum"     Γöé               Γöé               Γöé
  8298. Γöé                Γöé variables.    Γöé Use the SAA   Γöé Make all      Γöé
  8299. Γöé                Γöé               Γöé rules, that   Γöé "enum" vari-  Γöé
  8300. Γöé                Γöé               Γöé is, make all  Γöé ables 4       Γöé
  8301. Γöé                Γöé               Γöé "enum" vari-  Γöé bytes.        Γöé
  8302. Γöé                Γöé               Γöé ables the     Γöé "/Su1"        Γöé
  8303. Γöé                Γöé               Γöé size of the   Γöé               Γöé
  8304. Γöé                Γöé               Γöé smallest      Γöé Make all      Γöé
  8305. Γöé                Γöé               Γöé integral type Γöé "enum" vari-  Γöé
  8306. Γöé                Γöé               Γöé that can      Γöé ables 1 byte. Γöé
  8307. Γöé                Γöé               Γöé contain all   Γöé "/Su2"        Γöé
  8308. Γöé                Γöé               Γöé variables.    Γöé               Γöé
  8309. Γöé                Γöé               Γöé               Γöé Make all      Γöé
  8310. Γöé                Γöé               Γöé               Γöé "enum" vari-  Γöé
  8311. Γöé                Γöé               Γöé               Γöé ables 2       Γöé
  8312. Γöé                Γöé               Γöé               Γöé bytes.        Γöé
  8313. Γöé                Γöé               Γöé               Γöé "/Su4"        Γöé
  8314. Γöé                Γöé               Γöé               Γöé               Γöé
  8315. Γöé                Γöé               Γöé               Γöé Make all      Γöé
  8316. Γöé                Γöé               Γöé               Γöé "enum" vari-  Γöé
  8317. Γöé                Γöé               Γöé               Γöé ables 4       Γöé
  8318. Γöé                Γöé               Γöé               Γöé bytes.        Γöé
  8319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8320. Γöé "/Sv[Γö╝Γöé-]"     Γöé Allow use of  Γöé "/Sv-"        Γöé "/Sv[Γö╝]"      Γöé
  8321. Γöé                Γöé memory files. Γöé Do not allow  Γöé Allow use of  Γöé
  8322. Γöé                Γöé               Γöé memory files. Γöé memory files. Γöé
  8323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8324. Γöé "/Tc"          Γöé Specify that  Γöé Compile       Γöé "/Tc"         Γöé
  8325. Γöé                Γöé the following Γöé ".cpp" and    Γöé Compile the   Γöé
  8326. Γöé                Γöé file is a C   Γöé ".cxx" files  Γöé following     Γöé
  8327. Γöé                Γöé file.         Γöé as C:font     Γöé file as a C   Γöé
  8328. Γöé                Γöé               Γöé facename=CouriΓöérsource file,  Γöé
  8329. Γöé                Γöé               Γöé size=15x12.Γö╝:fΓöénregardless of Γöé
  8330. Γöé                Γöé               Γöé facename=defauΓöétits exten-    Γöé
  8331. Γöé                Γöé               Γöé size=0x0.:fontΓöé sion.         Γöé
  8332. Γöé                Γöé               Γöé facename=CouriΓöér              Γöé
  8333. Γöé                Γöé               Γöé size=15x12.Γö╝:fΓöénIMPORTANT:    Γöé
  8334. Γöé                Γöé               Γöé facename=defauΓöét       The    Γöé
  8335. Γöé                Γöé               Γöé size=0x0.     Γöé        "/Tc"  Γöé
  8336. Γöé                Γöé               Γöé files, and    Γöé        option Γöé
  8337. Γöé                Γöé               Γöé ".c" and all  Γöé        MUST   Γöé
  8338. Γöé                Γöé               Γöé other unrec-  Γöé        be     Γöé
  8339. Γöé                Γöé               Γöé ognized files Γöé        fol-   Γöé
  8340. Γöé                Γöé               Γöé as C files.   Γöé        lowed  Γöé
  8341. Γöé                Γöé               Γöé               Γöé        by a   Γöé
  8342. Γöé                Γöé               Γöé               Γöé        file   Γöé
  8343. Γöé                Γöé               Γöé               Γöé        name,  Γöé
  8344. Γöé                Γöé               Γöé               Γöé        and    Γöé
  8345. Γöé                Γöé               Γöé               Γöé        appliesΓöé
  8346. Γöé                Γöé               Γöé               Γöé        only   Γöé
  8347. Γöé                Γöé               Γöé               Γöé        to     Γöé
  8348. Γöé                Γöé               Γöé               Γöé        that   Γöé
  8349. Γöé                Γöé               Γöé               Γöé        file.  Γöé
  8350. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8351. Γöé "/Td[cΓöép]"     Γöé Specify       Γöé "/Td"         Γöé "/Tdc"        Γöé
  8352. Γöé                Γöé default lan-  Γöé Compile       Γöé Compile all   Γöé
  8353. Γöé                Γöé guage (C or   Γöé ".cpp" and    Γöé files that    Γöé
  8354. Γöé                Γöé C:font        Γöé ".cxx" files  Γöé follow on the Γöé
  8355. Γöé                Γöé facename=CouriΓöéras C:font     Γöé command line  Γöé
  8356. Γöé                Γöé size=15x12.Γö╝:fΓöénfacename=CouriΓöéras C files.   Γöé
  8357. Γöé                Γöé facename=defauΓöétsize=15x12.Γö╝:fΓöént             Γöé
  8358. Γöé                Γöé size=0x0.:fontΓöé facename=defauΓöét"/Tdp"        Γöé
  8359. Γöé                Γöé facename=CouriΓöérsize=0x0.:fontΓöé Compile all   Γöé
  8360. Γöé                Γöé size=15x12.Γö╝:fΓöénfacename=CouriΓöérfiles that    Γöé
  8361. Γöé                Γöé facename=defauΓöétsize=15x12.Γö╝:fΓöénfollow on the Γöé
  8362. Γöé                Γöé size=0x0.)    Γöé facename=defauΓöétcommand line  Γöé
  8363. Γöé                Γöé for files.    Γöé size=0x0.     Γöé as C:font     Γöé
  8364. Γöé                Γöé               Γöé files, and    Γöé facename=CouriΓöér
  8365. Γöé                Γöé               Γöé ".c" and all  Γöé size=15x12.Γö╝:fΓöént
  8366. Γöé                Γöé               Γöé other unrec-  Γöé facename=defauΓöét
  8367. Γöé                Γöé               Γöé ognized files Γöé size=0x0.:fontΓöé
  8368. Γöé                Γöé               Γöé as C files.   Γöé facename=CouriΓöér
  8369. Γöé                Γöé               Γöé               Γöé size=15x12.Γö╝:fΓöént
  8370. Γöé                Γöé               Γöé               Γöé facename=defauΓöét
  8371. Γöé                Γöé               Γöé               Γöé size=0x0.     Γöé
  8372. Γöé                Γöé               Γöé               Γöé files.        Γöé
  8373. Γöé                Γöé               Γöé               Γöé               Γöé
  8374. Γöé                Γöé               Γöé               Γöé NOTE:  You    Γöé
  8375. Γöé                Γöé               Γöé               Γöé can specify   Γöé
  8376. Γöé                Γöé               Γöé               Γöé "/Td" any-    Γöé
  8377. Γöé                Γöé               Γöé               Γöé where on the  Γöé
  8378. Γöé                Γöé               Γöé               Γöé command line  Γöé
  8379. Γöé                Γöé               Γöé               Γöé to return to  Γöé
  8380. Γöé                Γöé               Γöé               Γöé the default   Γöé
  8381. Γöé                Γöé               Γöé               Γöé rules for the Γöé
  8382. Γöé                Γöé               Γöé               Γöé files that    Γöé
  8383. Γöé                Γöé               Γöé               Γöé follow it.    Γöé
  8384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8385. Γöé "/Tp"          Γöé Specify that  Γöé Compile       Γöé "/Tc"         Γöé
  8386. Γöé                Γöé the following Γöé ".cpp" and    Γöé Compile the   Γöé
  8387. Γöé                Γöé file is a     Γöé ".cxx" files  Γöé following     Γöé
  8388. Γöé                Γöé C:font        Γöé as C:font     Γöé file as a     Γöé
  8389. Γöé                Γöé facename=CouriΓöérfacename=CouriΓöérC:font        Γöé
  8390. Γöé                Γöé size=15x12.Γö╝:fΓöénsize=15x12.Γö╝:fΓöénfacename=CouriΓöér
  8391. Γöé                Γöé facename=defauΓöétfacename=defauΓöétsize=15x12.Γö╝:fΓöént
  8392. Γöé                Γöé size=0x0.:fontΓöé size=0x0.:fontΓöé facename=defauΓöét
  8393. Γöé                Γöé facename=CouriΓöérfacename=CouriΓöérsize=0x0.:fontΓöé
  8394. Γöé                Γöé size=15x12.Γö╝:fΓöénsize=15x12.Γö╝:fΓöénfacename=CouriΓöér
  8395. Γöé                Γöé facename=defauΓöétfacename=defauΓöétsize=15x12.Γö╝:fΓöént
  8396. Γöé                Γöé size=0x0.     Γöé size=0x0.     Γöé facename=defauΓöét
  8397. Γöé                Γöé file.         Γöé files, and    Γöé size=0x0.     Γöé
  8398. Γöé                Γöé               Γöé ".c" and all  Γöé source file,  Γöé
  8399. Γöé                Γöé               Γöé other unrec-  Γöé regardless of Γöé
  8400. Γöé                Γöé               Γöé ognized files Γöé its exten-    Γöé
  8401. Γöé                Γöé               Γöé as C files.   Γöé sion.         Γöé
  8402. Γöé                Γöé               Γöé               Γöé               Γöé
  8403. Γöé                Γöé               Γöé               Γöé IMPORTANT:    Γöé
  8404. Γöé                Γöé               Γöé               Γöé        The    Γöé
  8405. Γöé                Γöé               Γöé               Γöé        "/Tp"  Γöé
  8406. Γöé                Γöé               Γöé               Γöé        option Γöé
  8407. Γöé                Γöé               Γöé               Γöé        MUST   Γöé
  8408. Γöé                Γöé               Γöé               Γöé        be     Γöé
  8409. Γöé                Γöé               Γöé               Γöé        fol-   Γöé
  8410. Γöé                Γöé               Γöé               Γöé        lowed  Γöé
  8411. Γöé                Γöé               Γöé               Γöé        by a   Γöé
  8412. Γöé                Γöé               Γöé               Γöé        file   Γöé
  8413. Γöé                Γöé               Γöé               Γöé        name,  Γöé
  8414. Γöé                Γöé               Γöé               Γöé        and    Γöé
  8415. Γöé                Γöé               Γöé               Γöé        appliesΓöé
  8416. Γöé                Γöé               Γöé               Γöé        only   Γöé
  8417. Γöé                Γöé               Γöé               Γöé        to     Γöé
  8418. Γöé                Γöé               Γöé               Γöé        that   Γöé
  8419. Γöé                Γöé               Γöé               Γöé        file.  Γöé
  8420. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8421.  
  8422. Related Information 
  8423.  
  8424.  o inf.#pragma langlvl 
  8425.  o -- Link Reference prpack not found --#pragma pack 
  8426.  o _Packed Qualifier 
  8427.  o -- Link Reference margins not found --#pragma margins 
  8428.  o inf.#pragma sequence 
  8429.  o Comments 
  8430.  o Specifying Compiler Options 
  8431.  
  8432.  
  8433. ΓòÉΓòÉΓòÉ 6.8. Preprocessor Options ΓòÉΓòÉΓòÉ
  8434.  
  8435. The options listed here let you control the use of the preprocessor. 
  8436.  
  8437. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8438. Γöé          Preprocessor Options                                  Γöé
  8439. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8440. Γöé OPTION      Γöé DESCRIPTION       Γöé DEFAULT           Γöé CHANGING Γöé
  8441. Γöé             Γöé                   Γöé                   Γöé DEFAULT  Γöé
  8442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8443. Γöé   /Dname[::nΓöé Define pre-       Γöé Define no macros  Γöé   /Dname[Γöé:n]
  8444. Γöé   or        Γöé processor macros  Γöé on command line.  Γöé   or     Γöé
  8445. Γöé   /Dname[=n]Γöé to specified      Γöé                   Γöé   /Dname[Γöén]
  8446. Γöé             Γöé values.           Γöé                   Γöé          Γöé
  8447. Γöé             Γöé                   Γöé                   Γöé Define   Γöé
  8448. Γöé             Γöé                   Γöé                   Γöé pre-     Γöé
  8449. Γöé             Γöé                   Γöé                   Γöé processorΓöé
  8450. Γöé             Γöé                   Γöé                   Γöé macro    Γöé
  8451. Γöé             Γöé                   Γöé                   Γöé name to  Γöé
  8452. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8453. Γöé             Γöé                   Γöé                   Γöé value n. Γöé
  8454. Γöé             Γöé                   Γöé                   Γöé If n is  Γöé
  8455. Γöé             Γöé                   Γöé                   Γöé omitted, Γöé
  8456. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8457. Γöé             Γöé                   Γöé                   Γöé macro is Γöé
  8458. Γöé             Γöé                   Γöé                   Γöé set to a Γöé
  8459. Γöé             Γöé                   Γöé                   Γöé null     Γöé
  8460. Γöé             Γöé                   Γöé                   Γöé string.  Γöé
  8461. Γöé             Γöé                   Γöé                   Γöé Macros   Γöé
  8462. Γöé             Γöé                   Γöé                   Γöé defined  Γöé
  8463. Γöé             Γöé                   Γöé                   Γöé on the   Γöé
  8464. Γöé             Γöé                   Γöé                   Γöé command  Γöé
  8465. Γöé             Γöé                   Γöé                   Γöé line     Γöé
  8466. Γöé             Γöé                   Γöé                   Γöé override Γöé
  8467. Γöé             Γöé                   Γöé                   Γöé macros   Γöé
  8468. Γöé             Γöé                   Γöé                   Γöé defined  Γöé
  8469. Γöé             Γöé                   Γöé                   Γöé in the   Γöé
  8470. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8471. Γöé             Γöé                   Γöé                   Γöé code.    Γöé
  8472. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8473. Γöé "/P[Γö╝Γöé-]"   Γöé Control the pre-  Γöé "/P-"             Γöé "/P[Γö╝]"  Γöé
  8474. Γöé             Γöé processor.        Γöé                   Γöé          Γöé
  8475. Γöé             Γöé                   Γöé Run the pre-      Γöé Run the  Γöé
  8476. Γöé             Γöé                   Γöé processor and     Γöé pre-     Γöé
  8477. Γöé             Γöé                   Γöé compiler.  Do not Γöé processorΓöé
  8478. Γöé             Γöé                   Γöé generate pre-     Γöé only.    Γöé
  8479. Γöé             Γöé                   Γöé processor output. Γöé Create a Γöé
  8480. Γöé             Γöé                   Γöé                   Γöé pre-     Γöé
  8481. Γöé             Γöé                   Γöé                   Γöé processorΓöé
  8482. Γöé             Γöé                   Γöé                   Γöé output   Γöé
  8483. Γöé             Γöé                   Γöé                   Γöé file     Γöé
  8484. Γöé             Γöé                   Γöé                   Γöé that has Γöé
  8485. Γöé             Γöé                   Γöé                   Γöé the same Γöé
  8486. Γöé             Γöé                   Γöé                   Γöé name as  Γöé
  8487. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8488. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8489. Γöé             Γöé                   Γöé                   Γöé file,    Γöé
  8490. Γöé             Γöé                   Γöé                   Γöé with the Γöé
  8491. Γöé             Γöé                   Γöé                   Γöé exten-   Γöé
  8492. Γöé             Γöé                   Γöé                   Γöé sion     Γöé
  8493. Γöé             Γöé                   Γöé                   Γöé ".i".    Γöé
  8494. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8495. Γöé "/Pc[Γö╝Γöé-]"  Γöé Preserve source   Γöé "/Pc-"            Γöé "/Pc[Γö╝]" Γöé
  8496. Γöé             Γöé code comments in  Γöé Run the pre-      Γöé Run the  Γöé
  8497. Γöé             Γöé preprocessor      Γöé processor only.   Γöé pre-     Γöé
  8498. Γöé             Γöé output.           Γöé Create a pre-     Γöé processorΓöé
  8499. Γöé             Γöé                   Γöé processor output  Γöé only.    Γöé
  8500. Γöé             Γöé                   Γöé file and strip    Γöé Create a Γöé
  8501. Γöé             Γöé                   Γöé out any comments. Γöé pre-     Γöé
  8502. Γöé             Γöé                   Γöé The output file   Γöé processorΓöé
  8503. Γöé             Γöé                   Γöé has the same name Γöé output   Γöé
  8504. Γöé             Γöé                   Γöé as the source     Γöé file     Γöé
  8505. Γöé             Γöé                   Γöé file with the     Γöé that     Γöé
  8506. Γöé             Γöé                   Γöé extension ".i".   Γöé includes Γöé
  8507. Γöé             Γöé                   Γöé                   Γöé the com- Γöé
  8508. Γöé             Γöé                   Γöé                   Γöé ments    Γöé
  8509. Γöé             Γöé                   Γöé                   Γöé from the Γöé
  8510. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8511. Γöé             Γöé                   Γöé                   Γöé code.    Γöé
  8512. Γöé             Γöé                   Γöé                   Γöé The      Γöé
  8513. Γöé             Γöé                   Γöé                   Γöé output   Γöé
  8514. Γöé             Γöé                   Γöé                   Γöé file has Γöé
  8515. Γöé             Γöé                   Γöé                   Γöé the same Γöé
  8516. Γöé             Γöé                   Γöé                   Γöé name as  Γöé
  8517. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8518. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8519. Γöé             Γöé                   Γöé                   Γöé file     Γöé
  8520. Γöé             Γöé                   Γöé                   Γöé with the Γöé
  8521. Γöé             Γöé                   Γöé                   Γöé exten-   Γöé
  8522. Γöé             Γöé                   Γöé                   Γöé sion     Γöé
  8523. Γöé             Γöé                   Γöé                   Γöé ".i".    Γöé
  8524. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8525. Γöé "/Pd[Γö╝Γöé-]"  Γöé Redirect pre-     Γöé "/Pd-"            Γöé "/Pd[Γö╝]" Γöé
  8526. Γöé             Γöé processor output. Γöé Run the pre-      Γöé Run the  Γöé
  8527. Γöé             Γöé                   Γöé processor only.   Γöé pre-     Γöé
  8528. Γöé             Γöé                   Γöé Do not redirect   Γöé processorΓöé
  8529. Γöé             Γöé                   Γöé preprocessor      Γöé only.    Γöé
  8530. Γöé             Γöé                   Γöé output.  Write    Γöé Send the Γöé
  8531. Γöé             Γöé                   Γöé preprocessor      Γöé pre-     Γöé
  8532. Γöé             Γöé                   Γöé output to a file  Γöé processorΓöé
  8533. Γöé             Γöé                   Γöé that has the same Γöé output   Γöé
  8534. Γöé             Γöé                   Γöé name as the       Γöé to       Γöé
  8535. Γöé             Γöé                   Γöé source file, with Γöé "stdout".Γöé
  8536. Γöé             Γöé                   Γöé the extension     Γöé          Γöé
  8537. Γöé             Γöé                   Γöé ".I".             Γöé          Γöé
  8538. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8539. Γöé "/Pe[Γö╝Γöé-]"  Γöé Suppress "#line"  Γöé "/Pe-"            Γöé "/Pe[Γö╝]" Γöé
  8540. Γöé             Γöé directives in     Γöé Run the pre-      Γöé Run the  Γöé
  8541. Γöé             Γöé preprocessor      Γöé processor only.   Γöé pre-     Γöé
  8542. Γöé             Γöé output.           Γöé Generate "#line"  Γöé processorΓöé
  8543. Γöé             Γöé                   Γöé directives in the Γöé only.    Γöé
  8544. Γöé             Γöé                   Γöé preprocessor      Γöé Suppress Γöé
  8545. Γöé             Γöé                   Γöé output.  The      Γöé creation Γöé
  8546. Γöé             Γöé                   Γöé output file has   Γöé of       Γöé
  8547. Γöé             Γöé                   Γöé the same name as  Γöé "#line"  Γöé
  8548. Γöé             Γöé                   Γöé the source file   Γöé direc-   Γöé
  8549. Γöé             Γöé                   Γöé with the exten-   Γöé tives in Γöé
  8550. Γöé             Γöé                   Γöé sion ".i".        Γöé pre-     Γöé
  8551. Γöé             Γöé                   Γöé                   Γöé processorΓöé
  8552. Γöé             Γöé                   Γöé                   Γöé output.  Γöé
  8553. Γöé             Γöé                   Γöé                   Γöé The      Γöé
  8554. Γöé             Γöé                   Γöé                   Γöé output   Γöé
  8555. Γöé             Γöé                   Γöé                   Γöé file has Γöé
  8556. Γöé             Γöé                   Γöé                   Γöé the same Γöé
  8557. Γöé             Γöé                   Γöé                   Γöé name as  Γöé
  8558. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8559. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8560. Γöé             Γöé                   Γöé                   Γöé file     Γöé
  8561. Γöé             Γöé                   Γöé                   Γöé with the Γöé
  8562. Γöé             Γöé                   Γöé                   Γöé exten-   Γöé
  8563. Γöé             Γöé                   Γöé                   Γöé sion     Γöé
  8564. Γöé             Γöé                   Γöé                   Γöé ".i".    Γöé
  8565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8566. Γöé "/U<nameΓöé*>"Γöé Remove macros.    Γöé Retain macros.    Γöé "/Uname" Γöé
  8567. Γöé             Γöé                   Γöé                   Γöé          Γöé
  8568. Γöé             Γöé                   Γöé                   Γöé Remove   Γöé
  8569. Γöé             Γöé                   Γöé                   Γöé macro    Γöé
  8570. Γöé             Γöé                   Γöé                   Γöé name.    Γöé
  8571. Γöé             Γöé                   Γöé                   Γöé          Γöé
  8572. Γöé             Γöé                   Γöé                   Γöé "/U*"    Γöé
  8573. Γöé             Γöé                   Γöé                   Γöé          Γöé
  8574. Γöé             Γöé                   Γöé                   Γöé Remove   Γöé
  8575. Γöé             Γöé                   Γöé                   Γöé all      Γöé
  8576. Γöé             Γöé                   Γöé                   Γöé macros.  Γöé
  8577. Γöé             Γöé                   Γöé                   Γöé "/U"     Γöé
  8578. Γöé             Γöé                   Γöé                   Γöé does not Γöé
  8579. Γöé             Γöé                   Γöé                   Γöé affect   Γöé
  8580. Γöé             Γöé                   Γöé                   Γöé the      Γöé
  8581. Γöé             Γöé                   Γöé                   Γöé macros   Γöé
  8582. Γöé             Γöé                   Γöé                   Γöé "__DATE__Γöé
  8583. Γöé             Γöé                   Γöé                   Γöé __TIME__,Γöé
  8584. Γöé             Γöé                   Γöé                   Γöé __TIMESTAΓöéP__,
  8585. Γöé             Γöé                   Γöé                   Γöé __FILE__"Γöé
  8586. Γöé             Γöé                   Γöé                   Γöé and      Γöé
  8587. Γöé             Γöé                   Γöé                   Γöé "__FUNCTIΓöéN",
  8588. Γöé             Γöé                   Γöé                   Γöé nor does Γöé
  8589. Γöé             Γöé                   Γöé                   Γöé it unde- Γöé
  8590. Γöé             Γöé                   Γöé                   Γöé fine     Γöé
  8591. Γöé             Γöé                   Γöé                   Γöé macros   Γöé
  8592. Γöé             Γöé                   Γöé                   Γöé defined  Γöé
  8593. Γöé             Γöé                   Γöé                   Γöé in       Γöé
  8594. Γöé             Γöé                   Γöé                   Γöé source   Γöé
  8595. Γöé             Γöé                   Γöé                   Γöé code.    Γöé
  8596. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8597.  
  8598. Related Information 
  8599.  
  8600.  o Preprocessor Directives 
  8601.  o Predefined Macros 
  8602.  o Specifying Compiler Options 
  8603.  
  8604.  
  8605. ΓòÉΓòÉΓòÉ 6.9. Code Generation Options ΓòÉΓòÉΓòÉ
  8606.  
  8607. These options allow you to specify the type of code that the compiler will 
  8608. produce. 
  8609.  
  8610. Notes: 
  8611.  
  8612.  o The /Oi[+] option is more effective when /O[+] is also specified. 
  8613.  
  8614.  o Using optimization (/O[+]) limits your use of the C/C++ for OS/2 debugger to 
  8615.    debug your code. The /Ti option is not recommended for use with 
  8616.    optimization. 
  8617.  
  8618.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8619.   Γöé          Code Generation Options                               Γöé
  8620.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8621.   Γöé OPTION       Γöé DESCRIPTION    Γöé DEFAULT        Γöé CHANGING      Γöé
  8622.   Γöé              Γöé                Γöé                Γöé DEFAULT       Γöé
  8623.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8624.   Γöé "/Gd[Γö╝Γöé-]"   Γöé Specify static Γöé "/Gd-"         Γöé "/Gd[Γö╝]"      Γöé
  8625.   Γöé              Γöé or dynamic     Γöé                Γöé               Γöé
  8626.   Γöé              Γöé linking of the Γöé Statically     Γöé Dynamically   Γöé
  8627.   Γöé              Γöé runtime        Γöé link the       Γöé link the      Γöé
  8628.   Γöé              Γöé library.       Γöé runtime        Γöé runtime       Γöé
  8629.   Γöé              Γöé                Γöé library.  All  Γöé library.      Γöé
  8630.   Γöé              Γöé                Γöé external names Γöé               Γöé
  8631.   Γöé              Γöé                Γöé beginning with Γöé               Γöé
  8632.   Γöé              Γöé                Γöé the letters    Γöé               Γöé
  8633.   Γöé              Γöé                Γöé "Dos", "Kbd",  Γöé               Γöé
  8634.   Γöé              Γöé                Γöé and "Vio" are  Γöé               Γöé
  8635.   Γöé              Γöé                Γöé reserved.      Γöé               Γöé
  8636.   Γöé              Γöé                Γöé This           Γöé               Γöé
  8637.   Γöé              Γöé                Γöé restriction    Γöé               Γöé
  8638.   Γöé              Γöé                Γöé does not apply Γöé               Γöé
  8639.   Γöé              Γöé                Γöé when compiling Γöé               Γöé
  8640.   Γöé              Γöé                Γöé with "/GdΓö╝".   Γöé               Γöé
  8641.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8642.   Γöé "/Ge[Γö╝Γöé-]"   Γöé Specify cre-   Γöé "/Ge[Γö╝]"       Γöé "/Ge-"        Γöé
  8643.   Γöé              Γöé ation of an    Γöé                Γöé               Γöé
  8644.   Γöé              Γöé ".EXE" or a    Γöé Build an       Γöé Build a       Γöé
  8645.   Γöé              Γöé ".DLL" file.   Γöé ".EXE" file.   Γöé ".DLL" file.  Γöé
  8646.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8647.   Γöé "/Gf[Γö╝Γöé-]"   Γöé Specify fast   Γöé "/Gf-"         Γöé "/Gf[Γö╝]"      Γöé
  8648.   Γöé              Γöé floating-point Γöé                Γöé               Γöé
  8649.   Γöé              Γöé execution.     Γöé Do not use     Γöé Use fast      Γöé
  8650.   Γöé              Γöé                Γöé fast floating- Γöé floating-     Γöé
  8651.   Γöé              Γöé If your        Γöé point exe-     Γöé point exe-    Γöé
  8652.   Γöé              Γöé program does   Γöé cution.        Γöé cution.       Γöé
  8653.   Γöé              Γöé not need to    Γöé                Γöé               Γöé
  8654.   Γöé              Γöé abide by ANSI  Γöé                Γöé               Γöé
  8655.   Γöé              Γöé rules          Γöé                Γöé               Γöé
  8656.   Γöé              Γöé regarding the  Γöé                Γöé               Γöé
  8657.   Γöé              Γöé processing of  Γöé                Γöé               Γöé
  8658.   Γöé              Γöé "double" and   Γöé                Γöé               Γöé
  8659.   Γöé              Γöé "float" types, Γöé                Γöé               Γöé
  8660.   Γöé              Γöé then you can   Γöé                Γöé               Γöé
  8661.   Γöé              Γöé use this       Γöé                Γöé               Γöé
  8662.   Γöé              Γöé option to      Γöé                Γöé               Γöé
  8663.   Γöé              Γöé increase your  Γöé                Γöé               Γöé
  8664.   Γöé              Γöé program's per- Γöé                Γöé               Γöé
  8665.   Γöé              Γöé formance.      Γöé                Γöé               Γöé
  8666.   Γöé              Γöé Because the    Γöé                Γöé               Γöé
  8667.   Γöé              Γöé fast floating- Γöé                Γöé               Γöé
  8668.   Γöé              Γöé point method   Γöé                Γöé               Γöé
  8669.   Γöé              Γöé does not       Γöé                Γöé               Γöé
  8670.   Γöé              Γöé perform all    Γöé                Γöé               Γöé
  8671.   Γöé              Γöé the conver-    Γöé                Γöé               Γöé
  8672.   Γöé              Γöé sions neces-   Γöé                Γöé               Γöé
  8673.   Γöé              Γöé sary to        Γöé                Γöé               Γöé
  8674.   Γöé              Γöé maintain accu- Γöé                Γöé               Γöé
  8675.   Γöé              Γöé racy, some     Γöé                Γöé               Γöé
  8676.   Γöé              Γöé variables may  Γöé                Γöé               Γöé
  8677.   Γöé              Γöé lose preci-    Γöé                Γöé               Γöé
  8678.   Γöé              Γöé sion.          Γöé                Γöé               Γöé
  8679.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8680.   Γöé "/Gh[Γö╝Γöé-]"   Γöé Generate code  Γöé "/Gh-"         Γöé "/Gh[Γö╝]"      Γöé
  8681.   Γöé              Γöé enabled for    Γöé                Γöé               Γöé
  8682.   Γöé              Γöé Execution      Γöé Do not enable  Γöé Enable code   Γöé
  8683.   Γöé              Γöé Trace Analyzer Γöé code for Exe-  Γöé to be run by  Γöé
  8684.   Γöé              Γöé and other pro- Γöé cution Trace   Γöé Execution     Γöé
  8685.   Γöé              Γöé filing tools.  Γöé Analyzer.      Γöé Trace Ana-    Γöé
  8686.   Γöé              Γöé                Γöé                Γöé lyzer and     Γöé
  8687.   Γöé              Γöé                Γöé                Γöé other pro-    Γöé
  8688.   Γöé              Γöé                Γöé                Γöé filing tools  Γöé
  8689.   Γöé              Γöé                Γöé                Γöé by generated  Γöé
  8690.   Γöé              Γöé                Γöé                Γöé profiler      Γöé
  8691.   Γöé              Γöé                Γöé                Γöé hooks in      Γöé
  8692.   Γöé              Γöé                Γöé                Γöé function      Γöé
  8693.   Γöé              Γöé                Γöé                Γöé prologs.      Γöé
  8694.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8695.   Γöé "/Gi[Γö╝Γöé-]"   Γöé Specify fast   Γöé "/Gi-"         Γöé "/Gi[Γö╝]"      Γöé
  8696.   Γöé              Γöé integer exe-   Γöé                Γöé               Γöé
  8697.   Γöé              Γöé cution.        Γöé Do not use     Γöé Use fast      Γöé
  8698.   Γöé              Γöé                Γöé fast integer   Γöé integer exe-  Γöé
  8699.   Γöé              Γöé If you are     Γöé execution.     Γöé cution.       Γöé
  8700.   Γöé              Γöé shifting bits  Γöé                Γöé               Γöé
  8701.   Γöé              Γöé by a variable  Γöé                Γöé               Γöé
  8702.   Γöé              Γöé amount, you    Γöé                Γöé               Γöé
  8703.   Γöé              Γöé can use fast   Γöé                Γöé               Γöé
  8704.   Γöé              Γöé integer exe-   Γöé                Γöé               Γöé
  8705.   Γöé              Γöé cution to      Γöé                Γöé               Γöé
  8706.   Γöé              Γöé ensure that    Γöé                Γöé               Γöé
  8707.   Γöé              Γöé for values     Γöé                Γöé               Γöé
  8708.   Γöé              Γöé greater than   Γöé                Γöé               Γöé
  8709.   Γöé              Γöé 31, the bits   Γöé                Γöé               Γöé
  8710.   Γöé              Γöé are shifted by Γöé                Γöé               Γöé
  8711.   Γöé              Γöé the result of  Γöé                Γöé               Γöé
  8712.   Γöé              Γöé a modulo 32 of Γöé                Γöé               Γöé
  8713.   Γöé              Γöé the value.     Γöé                Γöé               Γöé
  8714.   Γöé              Γöé Otherwise the  Γöé                Γöé               Γöé
  8715.   Γöé              Γöé result of the  Γöé                Γöé               Γöé
  8716.   Γöé              Γöé shift is 0.    Γöé                Γöé               Γöé
  8717.   Γöé              Γöé                Γöé                Γöé               Γöé
  8718.   Γöé              Γöé NOTE:  If your Γöé                Γöé               Γöé
  8719.   Γöé              Γöé shift value is Γöé                Γöé               Γöé
  8720.   Γöé              Γöé a constant     Γöé                Γöé               Γöé
  8721.   Γöé              Γöé greater than   Γöé                Γöé               Γöé
  8722.   Γöé              Γöé 32, the result Γöé                Γöé               Γöé
  8723.   Γöé              Γöé will always be Γöé                Γöé               Γöé
  8724.   Γöé              Γöé 0.             Γöé                Γöé               Γöé
  8725.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8726.   Γöé "/Gm[Γö╝Γöé-]"   Γöé Choose single  Γöé "/Gm-"         Γöé "/Gm[Γö╝]"      Γöé
  8727.   Γöé              Γöé or multithread Γöé                Γöé               Γöé
  8728.   Γöé              Γöé libraries.     Γöé Link with the  Γöé Link with the Γöé
  8729.   Γöé              Γöé                Γöé single-thread  Γöé multithread   Γöé
  8730.   Γöé              Γöé                Γöé version of the Γöé version of    Γöé
  8731.   Γöé              Γöé                Γöé library (no    Γöé the library.  Γöé
  8732.   Γöé              Γöé                Γöé multithread    Γöé               Γöé
  8733.   Γöé              Γöé                Γöé capabilities). Γöé               Γöé
  8734.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8735.   Γöé "/Gn[Γö╝Γöé-]"   Γöé Do not gen-    Γöé "/Gn-"         Γöé "/Gn[Γö╝]"      Γöé
  8736.   Γöé              Γöé erate default  Γöé                Γöé               Γöé
  8737.   Γöé              Γöé libraries in   Γöé Do default     Γöé Do not search Γöé
  8738.   Γöé              Γöé object.        Γöé library        Γöé libraries     Γöé
  8739.   Γöé              Γöé                Γöé search,        Γöé during compi- Γöé
  8740.   Γöé              Γöé                Γöé according to   Γöé lation to     Γöé
  8741.   Γöé              Γöé                Γöé other "/G"     Γöé resolve       Γöé
  8742.   Γöé              Γöé                Γöé options speci- Γöé external ref- Γöé
  8743.   Γöé              Γöé                Γöé fied.  Provide Γöé erences.  All Γöé
  8744.   Γöé              Γöé                Γöé linker infor-  Γöé libraries     Γöé
  8745.   Γöé              Γöé                Γöé mation about   Γöé must be       Γöé
  8746.   Γöé              Γöé                Γöé the default    Γöé explicitly    Γöé
  8747.   Γöé              Γöé                Γöé libraries.     Γöé specified at  Γöé
  8748.   Γöé              Γöé                Γöé                Γöé link time.    Γöé
  8749.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8750.   Γöé "/Gp[Γö╝Γöé-]"   Γöé Create pro-    Γöé "/Gp-"         Γöé "/Gp[Γö╝]"      Γöé
  8751.   Γöé              Γöé tected DLL.    Γöé                Γöé               Γöé
  8752.   Γöé              Γöé                Γöé Do not gen-    Γöé Generate the  Γöé
  8753.   Γöé              Γöé                Γöé erate the code Γöé proper code   Γöé
  8754.   Γöé              Γöé                Γöé required for   Γöé to create a   Γöé
  8755.   Γöé              Γöé                Γöé protected      Γöé protected     Γöé
  8756.   Γöé              Γöé                Γöé DLLs.          Γöé DLL.          Γöé
  8757.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8758.   Γöé "/Gr[Γö╝Γöé-]"   Γöé Allow object   Γöé "/Gr-"         Γöé "/Gr[Γö╝]"      Γöé
  8759.   Γöé              Γöé code to run at Γöé                Γöé               Γöé
  8760.   Γöé              Γöé ring 0.  Use   Γöé Do not allow   Γöé Allow object  Γöé
  8761.   Γöé              Γöé this option if Γöé object code to Γöé code to run   Γöé
  8762.   Γöé              Γöé you are        Γöé run at ring 0. Γöé at ring 0.    Γöé
  8763.   Γöé              Γöé writing code,  Γöé                Γöé               Γöé
  8764.   Γöé              Γöé such as device Γöé                Γöé               Γöé
  8765.   Γöé              Γöé drivers or     Γöé                Γöé               Γöé
  8766.   Γöé              Γöé operating      Γöé                Γöé               Γöé
  8767.   Γöé              Γöé systems, that  Γöé                Γöé               Γöé
  8768.   Γöé              Γöé will run at    Γöé                Γöé               Γöé
  8769.   Γöé              Γöé ring 0 instead Γöé                Γöé               Γöé
  8770.   Γöé              Γöé of ring 3.     Γöé                Γöé               Γöé
  8771.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8772.   Γöé "/Gs[Γö╝Γöé-]"   Γöé Remove stack   Γöé "/Gs-"         Γöé "/Gs[Γö╝]"      Γöé
  8773.   Γöé              Γöé probes from    Γöé                Γöé               Γöé
  8774.   Γöé              Γöé the generated  Γöé Do not remove  Γöé Remove stack  Γöé
  8775.   Γöé              Γöé code.          Γöé stack probes.  Γöé probes.       Γöé
  8776.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8777.   Γöé "/Gt[Γö╝Γöé-]"   Γöé Enable tiled   Γöé "/Gt-"         Γöé "/Gt[Γö╝]"      Γöé
  8778.   Γöé              Γöé memory and     Γöé                Γöé               Γöé
  8779.   Γöé              Γöé store vari-    Γöé Do not enable  Γöé Enable all    Γöé
  8780.   Γöé              Γöé ables such     Γöé variables to   Γöé variables to  Γöé
  8781.   Γöé              Γöé that they may  Γöé be passed to   Γöé be passed to  Γöé
  8782.   Γöé              Γöé be passed to   Γöé 16-bit func-   Γöé 16-bit func-  Γöé
  8783.   Γöé              Γöé 16-bit func-   Γöé tions.         Γöé tions.        Γöé
  8784.   Γöé              Γöé tions.         Γöé                Γöé Static and    Γöé
  8785.   Γöé              Γöé                Γöé                Γöé external var- Γöé
  8786.   Γöé              Γöé                Γöé                Γöé iables are    Γöé
  8787.   Γöé              Γöé                Γöé                Γöé mapped into   Γöé
  8788.   Γöé              Γöé                Γöé                Γöé 16-bit seg-   Γöé
  8789.   Γöé              Γöé                Γöé                Γöé ments.  Vari- Γöé
  8790.   Γöé              Γöé                Γöé                Γöé ables larger  Γöé
  8791.   Γöé              Γöé                Γöé                Γöé than 64K will Γöé
  8792.   Γöé              Γöé                Γöé                Γöé be aligned    Γöé
  8793.   Γöé              Γöé                Γöé                Γöé on, but will  Γöé
  8794.   Γöé              Γöé                Γöé                Γöé still cross,  Γöé
  8795.   Γöé              Γöé                Γöé                Γöé 64K bounda-   Γöé
  8796.   Γöé              Γöé                Γöé                Γöé ries.         Γöé
  8797.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8798.   Γöé "/Gu[Γö╝Γöé-]"   Γöé Tell interme-  Γöé "/Gu-"         Γöé "/GuΓö╝"        Γöé
  8799.   Γöé              Γöé diate linker   Γöé External func- Γöé The data is   Γöé
  8800.   Γöé              Γöé whether        Γöé tions may use  Γöé used only     Γöé
  8801.   Γöé              Γöé external func- Γöé data in the    Γöé within the    Γöé
  8802.   Γöé              Γöé tions use data Γöé intermediate   Γöé intermediate  Γöé
  8803.   Γöé              Γöé defined in the Γöé files being    Γöé files being   Γöé
  8804.   Γöé              Γöé intermediate   Γöé linked.        Γöé linked, with  Γöé
  8805.   Γöé              Γöé link.          Γöé                Γöé the exception Γöé
  8806.   Γöé              Γöé                Γöé                Γöé of data qual- Γöé
  8807.   Γöé              Γöé                Γöé                Γöé ified with    Γöé
  8808.   Γöé              Γöé                Γöé                Γöé the :font     Γöé
  8809.   Γöé              Γöé                Γöé                Γöé facename=CouriΓöér
  8810.   Γöé              Γöé                Γöé                Γöé size=15x12._ExΓöéort:font
  8811.   Γöé              Γöé                Γöé                Γöé facename=defauΓöét
  8812.   Γöé              Γöé                Γöé                Γöé size=0x0.     Γöé
  8813.   Γöé              Γöé                Γöé                Γöé keyword.  See Γöé
  8814.   Γöé              Γöé                Γöé                Γöé -- Heading    Γöé
  8815.   Γöé              Γöé                Γöé                Γöé 'ICLINK'      Γöé
  8816.   Γöé              Γöé                Γöé                Γöé unknown --    Γöé
  8817.   Γöé              Γöé                Γöé                Γöé for more      Γöé
  8818.   Γöé              Γöé                Γöé                Γöé information   Γöé
  8819.   Γöé              Γöé                Γöé                Γöé about the     Γöé
  8820.   Γöé              Γöé                Γöé                Γöé intermediate  Γöé
  8821.   Γöé              Γöé                Γöé                Γöé code linker.  Γöé
  8822.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8823.   Γöé "/Gw[Γö╝Γöé-]"   Γöé Control gener- Γöé "/Gw-"         Γöé "/Gw[Γö╝]"      Γöé
  8824.   Γöé              Γöé ation of       Γöé                Γöé               Γöé
  8825.   Γöé              Γöé "FWAIT"        Γöé Do not gen-    Γöé Generate      Γöé
  8826.   Γöé              Γöé instruction    Γöé erate "FWAIT"  Γöé "FWAIT"       Γöé
  8827.   Γöé              Γöé after each     Γöé instruction    Γöé instruction   Γöé
  8828.   Γöé              Γöé floating-point Γöé after each     Γöé after each    Γöé
  8829.   Γöé              Γöé load instruc-  Γöé floating-point Γöé floating-     Γöé
  8830.   Γöé              Γöé tion.          Γöé load instruc-  Γöé point load    Γöé
  8831.   Γöé              Γöé                Γöé tion.          Γöé instruction.  Γöé
  8832.   Γöé              Γöé                Γöé                Γöé This allows   Γöé
  8833.   Γöé              Γöé                Γöé                Γöé the program   Γöé
  8834.   Γöé              Γöé                Γöé                Γöé to take a     Γöé
  8835.   Γöé              Γöé                Γöé                Γöé floating-     Γöé
  8836.   Γöé              Γöé                Γöé                Γöé point stack   Γöé
  8837.   Γöé              Γöé                Γöé                Γöé overflow      Γöé
  8838.   Γöé              Γöé                Γöé                Γöé exception     Γöé
  8839.   Γöé              Γöé                Γöé                Γöé immediately   Γöé
  8840.   Γöé              Γöé                Γöé                Γöé after the     Γöé
  8841.   Γöé              Γöé                Γöé                Γöé load instruc- Γöé
  8842.   Γöé              Γöé                Γöé                Γöé tion that     Γöé
  8843.   Γöé              Γöé                Γöé                Γöé caused it.    Γöé
  8844.   Γöé              Γöé                Γöé                Γöé               Γöé
  8845.   Γöé              Γöé                Γöé                Γöé NOTE:  This   Γöé
  8846.   Γöé              Γöé                Γöé                Γöé option is not Γöé
  8847.   Γöé              Γöé                Γöé                Γöé recommended   Γöé
  8848.   Γöé              Γöé                Γöé                Γöé because it    Γöé
  8849.   Γöé              Γöé                Γöé                Γöé increases the Γöé
  8850.   Γöé              Γöé                Γöé                Γöé size of your  Γöé
  8851.   Γöé              Γöé                Γöé                Γöé executable    Γöé
  8852.   Γöé              Γöé                Γöé                Γöé file and      Γöé
  8853.   Γöé              Γöé                Γöé                Γöé greatly       Γöé
  8854.   Γöé              Γöé                Γöé                Γöé decreases its Γöé
  8855.   Γöé              Γöé                Γöé                Γöé performance.  Γöé
  8856.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8857.   Γöé "/G[3Γöé4Γöé5]"  Γöé Specify type   Γöé "/G3"          Γöé "/G4"         Γöé
  8858.   Γöé              Γöé of processor.  Γöé                Γöé               Γöé
  8859.   Γöé              Γöé                Γöé Optimize code  Γöé Optimize code Γöé
  8860.   Γöé              Γöé                Γöé for use with a Γöé for use with  Γöé
  8861.   Γöé              Γöé                Γöé 386 processor. Γöé a 486         Γöé
  8862.   Γöé              Γöé                Γöé The code will  Γöé processor.    Γöé
  8863.   Γöé              Γöé                Γöé run on a 486   Γöé The code will Γöé
  8864.   Γöé              Γöé                Γöé or P5          Γöé run on a 386  Γöé
  8865.   Γöé              Γöé                Γöé processor.     Γöé or P5         Γöé
  8866.   Γöé              Γöé                Γöé                Γöé processor.    Γöé
  8867.   Γöé              Γöé                Γöé                Γöé               Γöé
  8868.   Γöé              Γöé                Γöé                Γöé "/G5"         Γöé
  8869.   Γöé              Γöé                Γöé                Γöé               Γöé
  8870.   Γöé              Γöé                Γöé                Γöé Optimize code Γöé
  8871.   Γöé              Γöé                Γöé                Γöé for use with  Γöé
  8872.   Γöé              Γöé                Γöé                Γöé a P5          Γöé
  8873.   Γöé              Γöé                Γöé                Γöé processor.    Γöé
  8874.   Γöé              Γöé                Γöé                Γöé The code will Γöé
  8875.   Γöé              Γöé                Γöé                Γöé run on a 386  Γöé
  8876.   Γöé              Γöé                Γöé                Γöé or 486        Γöé
  8877.   Γöé              Γöé                Γöé                Γöé processor.    Γöé
  8878.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8879.   Γöé "/MpΓöé/Ms"    Γöé Set calling    Γöé "/Mp"          Γöé "/Ms"         Γöé
  8880.   Γöé              Γöé convention.    Γöé                Γöé               Γöé
  8881.   Γöé              Γöé                Γöé Use :font      Γöé Use :font     Γöé
  8882.   Γöé              Γöé                Γöé facename=CourieΓöé facename=CouriΓöér
  8883.   Γöé              Γöé                Γöé size=15x12.optlΓöénsize=15x12.sysΓöéem:font
  8884.   Γöé              Γöé                Γöé facename=defaulΓöé facename=defauΓöét
  8885.   Γöé              Γöé                Γöé size=0x0.      Γöé size=0x0.     Γöé
  8886.   Γöé              Γöé                Γöé linkage for    Γöé linkage for   Γöé
  8887.   Γöé              Γöé                Γöé functions.     Γöé functions.    Γöé
  8888.   Γöé              Γöé                Γöé                Γöé               Γöé
  8889.   Γöé              Γöé                Γöé You must       Γöé You must      Γöé
  8890.   Γöé              Γöé                Γöé include the    Γöé include the   Γöé
  8891.   Γöé              Γöé                Γöé OS/2 2.0       Γöé library       Γöé
  8892.   Γöé              Γöé                Γöé Developer's    Γöé header files  Γöé
  8893.   Γöé              Γöé                Γöé Toolkit header Γöé to call func- Γöé
  8894.   Γöé              Γöé                Γöé files to call  Γöé tions.        Γöé
  8895.   Γöé              Γöé                Γöé OS/2 applica-  Γöé               Γöé
  8896.   Γöé              Γöé                Γöé tion program-  Γöé               Γöé
  8897.   Γöé              Γöé                Γöé ming           Γöé               Γöé
  8898.   Γöé              Γöé                Γöé interfaces.    Γöé               Γöé
  8899.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8900.   Γöé "/Ndname"    Γöé Specify names  Γöé Use the        Γöé "/Ndname"     Γöé
  8901.   Γöé              Γöé of default     Γöé default names  Γöé               Γöé
  8902.   Γöé              Γöé data and con-  Γöé DATA32 and     Γöé Use the names Γöé
  8903.   Γöé              Γöé stant seg-     Γöé CONST32.       Γöé nameDATA32    Γöé
  8904.   Γöé              Γöé ments.         Γöé                Γöé and           Γöé
  8905.   Γöé              Γöé                Γöé                Γöé nameCONST32.  Γöé
  8906.   Γöé              Γöé                Γöé                Γöé You can then  Γöé
  8907.   Γöé              Γöé                Γöé                Γöé give the seg- Γöé
  8908.   Γöé              Γöé                Γöé                Γöé ments special Γöé
  8909.   Γöé              Γöé                Γöé                Γöé attributes.   Γöé
  8910.   Γöé              Γöé                Γöé                Γöé The renamed   Γöé
  8911.   Γöé              Γöé                Γöé                Γöé segments are  Γöé
  8912.   Γöé              Γöé                Γöé                Γöé not placed in Γöé
  8913.   Γöé              Γöé                Γöé                Γöé the default   Γöé
  8914.   Γöé              Γöé                Γöé                Γöé data group.   Γöé
  8915.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8916.   Γöé "/Ntname"    Γöé Specify name   Γöé Use the        Γöé "/Ntname"     Γöé
  8917.   Γöé              Γöé of default     Γöé default name   Γöé               Γöé
  8918.   Γöé              Γöé text segment.  Γöé CODE32.        Γöé Use the name  Γöé
  8919.   Γöé              Γöé                Γöé                Γöé nameCODE32.   Γöé
  8920.   Γöé              Γöé                Γöé                Γöé You can then  Γöé
  8921.   Γöé              Γöé                Γöé                Γöé give the      Γöé
  8922.   Γöé              Γöé                Γöé                Γöé segment       Γöé
  8923.   Γöé              Γöé                Γöé                Γöé special       Γöé
  8924.   Γöé              Γöé                Γöé                Γöé attributes.   Γöé
  8925.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8926.   Γöé "/O[Γö╝Γöé-]"    Γöé Turn on opti-  Γöé "/O-"          Γöé "/O[Γö╝]"       Γöé
  8927.   Γöé              Γöé mization.      Γöé                Γöé               Γöé
  8928.   Γöé              Γöé                Γöé Do not opti-   Γöé Optimize      Γöé
  8929.   Γöé              Γöé                Γöé mize code.     Γöé code.         Γöé
  8930.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8931.   Γöé "/Oi[Γö╝Γöé-ΓöévaluΓöé]Control        Γöé "/Oi-"         Γöé "/Oi[Γö╝]"      Γöé
  8932.   Γöé              Γöé inlining of    Γöé                Γöé               Γöé
  8933.   Γöé              Γöé user code.     Γöé Do not inline  Γöé Inline all    Γöé
  8934.   Γöé              Γöé                Γöé any user code. Γöé user func-    Γöé
  8935.   Γöé              Γöé                Γöé                Γöé tions quali-  Γöé
  8936.   Γöé              Γöé                Γöé NOTE:  When    Γöé fied with the Γöé
  8937.   Γöé              Γöé                Γöé "/O[Γö╝]" is     Γöé :font         Γöé
  8938.   Γöé              Γöé                Γöé specified,     Γöé facename=CouriΓöér
  8939.   Γöé              Γöé                Γöé "/OiΓö╝" becomes Γöé size=15x12._InΓöéine:font
  8940.   Γöé              Γöé                Γöé the default.   Γöé facename=defauΓöét
  8941.   Γöé              Γöé                Γöé                Γöé size=0x0.     Γöé
  8942.   Γöé              Γöé                Γöé                Γöé keyword.      Γöé
  8943.   Γöé              Γöé                Γöé                Γöé               Γöé
  8944.   Γöé              Γöé                Γöé                Γöé "/Oivalue"    Γöé
  8945.   Γöé              Γöé                Γöé                Γöé               Γöé
  8946.   Γöé              Γöé                Γöé                Γöé Inline all    Γöé
  8947.   Γöé              Γöé                Γöé                Γöé user func-    Γöé
  8948.   Γöé              Γöé                Γöé                Γöé tions quali-  Γöé
  8949.   Γöé              Γöé                Γöé                Γöé fied with the Γöé
  8950.   Γöé              Γöé                Γöé                Γöé :font         Γöé
  8951.   Γöé              Γöé                Γöé                Γöé facename=CouriΓöér
  8952.   Γöé              Γöé                Γöé                Γöé size=15x12._InΓöéine:font
  8953.   Γöé              Γöé                Γöé                Γöé facename=defauΓöét
  8954.   Γöé              Γöé                Γöé                Γöé size=0x0.     Γöé
  8955.   Γöé              Γöé                Γöé                Γöé keyword or    Γöé
  8956.   Γöé              Γöé                Γöé                Γöé that are      Γöé
  8957.   Γöé              Γöé                Γöé                Γöé smaller than  Γöé
  8958.   Γöé              Γöé                Γöé                Γöé value in      Γöé
  8959.   Γöé              Γöé                Γöé                Γöé abstract code Γöé
  8960.   Γöé              Γöé                Γöé                Γöé units.        Γöé
  8961.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8962.   Γöé "/Ol[Γö╝Γöé-]"   Γöé Control use of Γöé "/Ol-"         Γöé "/Ol[Γö╝]"      Γöé
  8963.   Γöé              Γöé intermediate   Γöé Do not pass    Γöé Pass code     Γöé
  8964.   Γöé              Γöé code linker.   Γöé code through   Γöé through the   Γöé
  8965.   Γöé              Γöé                Γöé the interme-   Γöé intermediate  Γöé
  8966.   Γöé              Γöé                Γöé diate linker.  Γöé linker before Γöé
  8967.   Γöé              Γöé                Γöé                Γöé generating an Γöé
  8968.   Γöé              Γöé                Γöé                Γöé object file.  Γöé
  8969.   Γöé              Γöé                Γöé                Γöé See --        Γöé
  8970.   Γöé              Γöé                Γöé                Γöé Heading       Γöé
  8971.   Γöé              Γöé                Γöé                Γöé 'ICLINK'      Γöé
  8972.   Γöé              Γöé                Γöé                Γöé unknown --    Γöé
  8973.   Γöé              Γöé                Γöé                Γöé for more      Γöé
  8974.   Γöé              Γöé                Γöé                Γöé information   Γöé
  8975.   Γöé              Γöé                Γöé                Γöé on the inter- Γöé
  8976.   Γöé              Γöé                Γöé                Γöé mediate code  Γöé
  8977.   Γöé              Γöé                Γöé                Γöé linker.       Γöé
  8978.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8979.   Γöé "/ReΓöé/Rn"    Γöé Control exe-   Γöé "/Re"          Γöé "/Rn"         Γöé
  8980.   Γöé              Γöé cutable run-   Γöé                Γöé               Γöé
  8981.   Γöé              Γöé time           Γöé Generate exe-  Γöé Generate exe- Γöé
  8982.   Γöé              Γöé environment.   Γöé cutable code   Γöé cutable code  Γöé
  8983.   Γöé              Γöé                Γöé that runs in a Γöé that can be   Γöé
  8984.   Γöé              Γöé                Γöé C/C:font       Γöé used as a     Γöé
  8985.   Γöé              Γöé                Γöé facename=CourieΓöé subsystem     Γöé
  8986.   Γöé              Γöé                Γöé size=15x12.Γö╝:foΓöétwithout a     Γöé
  8987.   Γöé              Γöé                Γöé facename=defaulΓöé runtime envi- Γöé
  8988.   Γöé              Γöé                Γöé size=0x0.:font Γöé ronment.      Γöé
  8989.   Γöé              Γöé                Γöé facename=CourieΓöé               Γöé
  8990.   Γöé              Γöé                Γöé size=15x12.Γö╝:foΓöét              Γöé
  8991.   Γöé              Γöé                Γöé facename=defaulΓöé               Γöé
  8992.   Γöé              Γöé                Γöé size=0x0. for  Γöé               Γöé
  8993.   Γöé              Γöé                Γöé OS/2 runtime   Γöé               Γöé
  8994.   Γöé              Γöé                Γöé environment.   Γöé               Γöé
  8995.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8996.  
  8997.  Related Information 
  8998.  
  8999.  o Using the /Ge Option 
  9000.  o Linkage Keywords 
  9001.  o inf.#pragma linkage 
  9002.  o Specifying Compiler Options 
  9003.  
  9004.  
  9005. ΓòÉΓòÉΓòÉ 6.9.1. Using the /Ge Option ΓòÉΓòÉΓòÉ
  9006.  
  9007. The C/C++ for OS/2 libraries provide two initialization routines, one for 
  9008. executable modules and one for DLLs. For each object file, the compiler must 
  9009. include a reference to the appropriate initialization routine. The name of this 
  9010. routine is then passed to the linker when the file is linked. Use the /Ge 
  9011. option at compile time to tell the compiler which routine to reference. 
  9012.  
  9013. The /Ge- option causes the compiler to generate a reference to _dllentry for 
  9014. every module compiled. The /Ge+ option generates a reference to _exeentry only 
  9015. if a main function is found in the source.  If no main function is included, no 
  9016. linking reference is generated. 
  9017.  
  9018. If you want to create a library of objects that can be linked into either an 
  9019. executable file or a DLL, use the /Ge+ option when you compile.  Typically, 
  9020. none of these objects would contain a reference to main. 
  9021.  
  9022. If one of the objects did contain a reference to main, you can override the /Ge 
  9023. option when you link your files.  Create a source file that defines the routine 
  9024. already referenced in your object file. In the same file, add a dummy statement 
  9025. that references the correct initialization routine. Then compile this file and 
  9026. link it with your other object files. 
  9027.  
  9028. For example, if you compiled myprog.obj using the /Ge+ option, and want to link 
  9029. it to create a DLL, your extra source file would contain statements like the 
  9030. following: 
  9031.  
  9032. int _exeentry = 1;
  9033. extern int _dllentry;
  9034.  
  9035. int main(void)
  9036. {
  9037.    int x;
  9038.    .
  9039.    .
  9040.    .
  9041.    x = _dllentry;
  9042.    .
  9043.    .
  9044.    .
  9045. }
  9046. The reference to _exeentry in myprog.obj is resolved by this file, and this 
  9047. file's reference to _dllentry causes the linker to link in the correct 
  9048. initialization routine. 
  9049.  
  9050. Related Information 
  9051.  
  9052.  o Code Generation Options 
  9053.  o Specifying Compiler Options 
  9054.  
  9055.  
  9056. ΓòÉΓòÉΓòÉ 6.10. Other Options ΓòÉΓòÉΓòÉ
  9057.  
  9058. Use these options to control linker parameters, logo display, default char 
  9059. type, and other C/C++ for OS/2 options. 
  9060.  
  9061. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9062. Γöé          Other Options                                         Γöé
  9063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9064. Γöé OPTION       Γöé DESCRIPTION    Γöé DEFAULT        Γöé CHANGING      Γöé
  9065. Γöé              Γöé                Γöé                Γöé DEFAULT       Γöé
  9066. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9067. Γöé "/B"options""Γöé Specify param- Γöé "/B"""         Γöé "/B"options"" Γöé
  9068. Γöé              Γöé eters to be    Γöé                Γöé               Γöé
  9069. Γöé              Γöé passed to      Γöé Pass no param- Γöé Pass options  Γöé
  9070. Γöé              Γöé linker.        Γöé eters to the   Γöé string to the Γöé
  9071. Γöé              Γöé                Γöé linker.        Γöé linker as     Γöé
  9072. Γöé              Γöé See the OS/2   Γöé                Γöé parameters.   Γöé
  9073. Γöé              Γöé 2.0 Develop-   Γöé                Γöé               Γöé
  9074. Γöé              Γöé er's Toolkit   Γöé                Γöé               Γöé
  9075. Γöé              Γöé Tools Refer-   Γöé                Γöé               Γöé
  9076. Γöé              Γöé ence for       Γöé                Γöé               Γöé
  9077. Γöé              Γöé information    Γöé                Γöé               Γöé
  9078. Γöé              Γöé about the      Γöé                Γöé               Γöé
  9079. Γöé              Γöé options you    Γöé                Γöé               Γöé
  9080. Γöé              Γöé can pass to    Γöé                Γöé               Γöé
  9081. Γöé              Γöé the OS/2       Γöé                Γöé               Γöé
  9082. Γöé              Γöé linker.        Γöé                Γöé               Γöé
  9083. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9084. Γöé "/C[Γö╝Γöé-]"    Γöé Perform        Γöé "/C-"          Γöé "/C[Γö╝]"       Γöé
  9085. Γöé              Γöé compile only,  Γöé                Γöé               Γöé
  9086. Γöé              Γöé or compile and Γöé Perform        Γöé Perform       Γöé
  9087. Γöé              Γöé link.          Γöé compile and    Γöé compile only, Γöé
  9088. Γöé              Γöé                Γöé link.          Γöé no link.      Γöé
  9089. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9090. Γöé "/Hnum"      Γöé Set signif-    Γöé "/H255"        Γöé "/H"num       Γöé
  9091. Γöé              Γöé icant length   Γöé                Γöé               Γöé
  9092. Γöé              Γöé of external    Γöé Set the first  Γöé Set the first Γöé
  9093. Γöé              Γöé names.         Γöé 255 characters Γöé num charac-   Γöé
  9094. Γöé              Γöé                Γöé of external    Γöé ters of       Γöé
  9095. Γöé              Γöé                Γöé names to be    Γöé external      Γöé
  9096. Γöé              Γöé                Γöé significant.   Γöé names to be   Γöé
  9097. Γöé              Γöé                Γöé                Γöé significant.  Γöé
  9098. Γöé              Γöé                Γöé                Γöé The value of  Γöé
  9099. Γöé              Γöé                Γöé                Γöé num must be   Γöé
  9100. Γöé              Γöé                Γöé                Γöé between 6 and Γöé
  9101. Γöé              Γöé                Γöé                Γöé 255 inclusive Γöé
  9102. Γöé              Γöé                Γöé                Γöé for C files,  Γöé
  9103. Γöé              Γöé                Γöé                Γöé and between   Γöé
  9104. Γöé              Γöé                Γöé                Γöé 10 and 255    Γöé
  9105. Γöé              Γöé                Γöé                Γöé inclusive for Γöé
  9106. Γöé              Γöé                Γöé                Γöé C:font        Γöé
  9107. Γöé              Γöé                Γöé                Γöé facename=CouriΓöér
  9108. Γöé              Γöé                Γöé                Γöé size=15x12.Γö╝:fΓöént
  9109. Γöé              Γöé                Γöé                Γöé facename=defauΓöét
  9110. Γöé              Γöé                Γöé                Γöé size=0x0.:fontΓöé
  9111. Γöé              Γöé                Γöé                Γöé facename=CouriΓöér
  9112. Γöé              Γöé                Γöé                Γöé size=15x12.Γö╝:fΓöént
  9113. Γöé              Γöé                Γöé                Γöé facename=defauΓöét
  9114. Γöé              Γöé                Γöé                Γöé size=0x0.     Γöé
  9115. Γöé              Γöé                Γöé                Γöé files.        Γöé
  9116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9117. Γöé "/J[Γö╝Γöé-]"    Γöé Set default    Γöé "/J[Γö╝]"        Γöé "/J-"         Γöé
  9118. Γöé              Γöé "char" type.   Γöé                Γöé               Γöé
  9119. Γöé              Γöé                Γöé Set unspeci-   Γöé Set unspeci-  Γöé
  9120. Γöé              Γöé                Γöé fied "char"    Γöé fied "char"   Γöé
  9121. Γöé              Γöé                Γöé variables to   Γöé variables to  Γöé
  9122. Γöé              Γöé                Γöé "unsigned      Γöé "signed       Γöé
  9123. Γöé              Γöé                Γöé char".         Γöé char".        Γöé
  9124. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9125. Γöé "/Q[Γö╝Γöé-]"    Γöé Display com-   Γöé "/Q-"          Γöé "/Q[Γö╝]"       Γöé
  9126. Γöé              Γöé piler logo     Γöé                Γöé               Γöé
  9127. Γöé              Γöé when invoking  Γöé Display logo   Γöé Do not        Γöé
  9128. Γöé              Γöé compiler.      Γöé on "stderr".   Γöé display logo. Γöé
  9129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9130. Γöé "/V"string"" Γöé Include a      Γöé "/V"""         Γöé "/V"string""  Γöé
  9131. Γöé              Γöé version string Γöé                Γöé               Γöé
  9132. Γöé              Γöé in the object  Γöé Set no version Γöé Set version   Γöé
  9133. Γöé              Γöé and executable Γöé string.        Γöé string to     Γöé
  9134. Γöé              Γöé files.         Γöé                Γöé string.  The  Γöé
  9135. Γöé              Γöé                Γöé                Γöé length of the Γöé
  9136. Γöé              Γöé                Γöé                Γöé string can be Γöé
  9137. Γöé              Γöé                Γöé                Γöé up to 256     Γöé
  9138. Γöé              Γöé                Γöé                Γöé characters.   Γöé
  9139. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9140.  
  9141. Examples of Other Options 
  9142.  
  9143. Related Information 
  9144.  
  9145.  o inf.#pragma chars 
  9146.  o Specifying Compiler Options 
  9147.  
  9148.  
  9149. ΓòÉΓòÉΓòÉ 7. C/C++ for OS/2 Return Codes and Messages ΓòÉΓòÉΓòÉ
  9150.  
  9151. These panels contains information about the compile-time messages and should 
  9152. not be used as programming interface information. 
  9153.  
  9154. For every compilation job or job step, the compiler generates a return code 
  9155. that indicates to the operating system the degree of success or failure it 
  9156. achieved. The meanings of the codes are: 
  9157.  
  9158. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9159. Γöé          Return Codes from Compilation of a C Program          Γöé
  9160. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9161. Γöé RETURN    Γöé                                                    Γöé
  9162. Γöé CODE      Γöé MEANING                                            Γöé
  9163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9164. Γöé 0         Γöé No error detected; compilation completed; suc-     Γöé
  9165. Γöé           Γöé cessful execution anticipated.                     Γöé
  9166. Γöé           Γöé   OR                                               Γöé
  9167. Γöé           Γöé Possible error (warning) detected; compilation     Γöé
  9168. Γöé           Γöé completed; successful execution probable.          Γöé
  9169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9170. Γöé 12        Γöé Error detected; compilation may have been com-     Γöé
  9171. Γöé           Γöé pleted; successful execution impossible.           Γöé
  9172. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9173. Γöé 16        Γöé Severe error detected; compilation terminated      Γöé
  9174. Γöé           Γöé abnormally; successful execution impossible.       Γöé
  9175. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9176. Γöé 20        Γöé Fatal error detected; compilation terminated       Γöé
  9177. Γöé           Γöé abnormally and abruptly; successful execution      Γöé
  9178. Γöé           Γöé impossible.                                        Γöé
  9179. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9180.  
  9181.  
  9182. ΓòÉΓòÉΓòÉ 7.1. Compiler Messages ΓòÉΓòÉΓòÉ
  9183.  
  9184.  
  9185. Message Format:   filename.ext(line:col): ss EDCnnnn: text 
  9186.  
  9187.  where:
  9188.  
  9189.           filename.ext - file name (with extension) where the error occurred
  9190.           line - line where the error occurred
  9191.           col - column where the error occurred
  9192.           ss - error severity:
  9193.                 00 - informational
  9194.                 10 - warning
  9195.                 30 - error
  9196.                 40 - severe error
  9197.                 50 - fatal error
  9198.           nnnn - error message number
  9199.           text - message text, which may contain substitution
  9200.                text indicated by &n
  9201.  
  9202. Note:  The message text is prefixed with the severity string (for example, 
  9203.        warning), not with the severity number. 
  9204.  
  9205. Messages other than those in the 4000 range are prefixed with the name of the 
  9206. file and the line and column number where the message was generated. 
  9207.  
  9208. For messages in the 4000 range, the file name and line number where the error 
  9209. occurred follow the message text. The severity of errors for these messages is 
  9210. determined dynamically as the error occurs. If the error is unrecognized by the 
  9211. compiler, it is prefaced by unknown error. If one of these messages is 
  9212. generated, contact your IBM Service representative. 
  9213.  
  9214.  In migration mode (using the /Sm option or the #pragma langlvl(mig) 
  9215.  directive), error checking is less strict in some cases.  Informational or 
  9216.  warning messages are generated where error messages would be generated in any 
  9217.  other mode. 
  9218.  
  9219.  There are four messages that are generated if the message files cannot be 
  9220.  accessed.  They are: 
  9221.  
  9222.  Cannot find the message. 
  9223.  
  9224.  Cannot access the message file. 
  9225.  
  9226.  The message file format is not valid. 
  9227.  
  9228.  Cannot find the message file. 
  9229.  If one of these messages is generated, ensure that 
  9230.  
  9231.  o The DPATH variable is set in your CONFIG.SYS file 
  9232.  o The message files are in a directory in the DPATH 
  9233.  o The DPATH allows read access to the directories specified 
  9234.  o The file system is functioning properly 
  9235.  o The message files are not corrupted. 
  9236.  Reinstall the message files if any have been corrupted. Reboot the system. 
  9237.  
  9238.  If the problem persists, contact your IBM Service Representative. 
  9239.  
  9240.  
  9241. ΓòÉΓòÉΓòÉ 7.2. EDC0001 ΓòÉΓòÉΓòÉ
  9242.  
  9243. Internal compiler error at procedure &1. 
  9244.  
  9245. An error occurred during compilation. 
  9246.  
  9247. Recovery: Contact your IBM Service Representative. 
  9248.  
  9249.  
  9250. ΓòÉΓòÉΓòÉ 7.3. EDC0002 ΓòÉΓòÉΓòÉ
  9251.  
  9252. Unexpected compiler error #&1&2 occurred. 
  9253.  
  9254. An error occurred from which the compiler was not able to recover. 
  9255.  
  9256. Recovery: Contact your IBM Service Representative. 
  9257.  
  9258.  
  9259. ΓòÉΓòÉΓòÉ 7.4. EDC0003 ΓòÉΓòÉΓòÉ
  9260.  
  9261. Compilation aborted by user. 
  9262.  
  9263. Ctrl-Break or Ctrl-C was pressed to stop the compiler. 
  9264.  
  9265. Recovery: None. 
  9266.  
  9267.  
  9268. ΓòÉΓòÉΓòÉ 7.5. EDC0041 ΓòÉΓòÉΓòÉ
  9269.  
  9270. Identifier &1 must be declared prior to use. 
  9271.  
  9272. A C identifier must be declared before it is used in an expression. 
  9273.  
  9274. Recovery: Declare an identifier of that name in the current scope or in a 
  9275. higher scope. 
  9276.  
  9277.  
  9278. ΓòÉΓòÉΓòÉ 7.6. EDC0042 ΓòÉΓòÉΓòÉ
  9279.  
  9280. A declaration must declare a variable, a tag, or enum members. 
  9281.  
  9282. A data type cannot be followed by a semicolon or an enum tag without the list 
  9283. of enum constants. 
  9284.  
  9285. Recovery: Add a variable name to the data type or provide the list of enum 
  9286. constants to complete the declaration. 
  9287.  
  9288.  
  9289. ΓòÉΓòÉΓòÉ 7.7. EDC0043 ΓòÉΓòÉΓòÉ
  9290.  
  9291. A type must be specified in the declaration of the object &1. 
  9292.  
  9293. A declaration must always specify the type of the object declared or the return 
  9294. type of the function declared.  A missing type (an object name followed by a 
  9295. semicolon) does not default to int. 
  9296.  
  9297. Recovery: Declare the object or function with a type. 
  9298.  
  9299.  
  9300. ΓòÉΓòÉΓòÉ 7.8. EDC0044 ΓòÉΓòÉΓòÉ
  9301.  
  9302. An incomplete struct or union tag cannot be used in a declaration. 
  9303.  
  9304. Only pointer declarations can include incomplete types.  A struct or union tag 
  9305. is undefined when the list describing the name and type of its members has not 
  9306. been specified. 
  9307.  
  9308. Recovery: Define the tag before it is used in the declaration of an identifier 
  9309. or complete the declaration. 
  9310.  
  9311.  
  9312. ΓòÉΓòÉΓòÉ 7.9. EDC0045 ΓòÉΓòÉΓòÉ
  9313.  
  9314. The enum constants must be specified when the enum tag is declared. 
  9315.  
  9316. When an enumeration tag is declared, the list of the enumeration constants must 
  9317. be included in the declaration. 
  9318.  
  9319. Recovery: Add the list of enumeration constants in the enum tag declaration. 
  9320.  
  9321.  
  9322. ΓòÉΓòÉΓòÉ 7.10. EDC0047 ΓòÉΓòÉΓòÉ
  9323.  
  9324. External objects cannot be initialized in a block. 
  9325.  
  9326. Recovery: Initialize the external object in the external declaration. 
  9327.  
  9328.  
  9329. ΓòÉΓòÉΓòÉ 7.11. EDC0050 ΓòÉΓòÉΓòÉ
  9330.  
  9331. A C reserved word cannot appear in a #pragma directive. 
  9332.  
  9333. Recovery: Replace the reserved word by the name of a function or variable. 
  9334.  
  9335.  
  9336. ΓòÉΓòÉΓòÉ 7.12. EDC0060 ΓòÉΓòÉΓòÉ
  9337.  
  9338. Width of bit-field &1 must be less than or equal to 32 bits. 
  9339.  
  9340. Recovery: Define the bit-field again so that it does not exceed 32 bits. 
  9341.  
  9342.  
  9343. ΓòÉΓòÉΓòÉ 7.13. EDC0061 ΓòÉΓòÉΓòÉ
  9344.  
  9345. Bit-field &1 must have type signed int or unsigned int. 
  9346.  
  9347. Recovery: Define the bit-field again so that it has type signed int or unsigned 
  9348. int. 
  9349.  
  9350.  
  9351. ΓòÉΓòÉΓòÉ 7.14. EDC0062 ΓòÉΓòÉΓòÉ
  9352.  
  9353. A bit-field with a zero width must be unnamed. 
  9354.  
  9355. Recovery: Redefine the bit-field so that it has a width greater than zero or 
  9356. remove the name of the bit-field. 
  9357.  
  9358.  
  9359. ΓòÉΓòÉΓòÉ 7.15. EDC0063 ΓòÉΓòÉΓòÉ
  9360.  
  9361. Width of bit-field &1 must be a constant expression. 
  9362.  
  9363. Recovery: Replace the expression that specifies the width of the bit-field by a 
  9364. constant expression. 
  9365.  
  9366.  
  9367. ΓòÉΓòÉΓòÉ 7.16. EDC0064 ΓòÉΓòÉΓòÉ
  9368.  
  9369. Width of bit-field &1 must be positive. 
  9370.  
  9371. Recovery: Replace the constant expression that specifies the width of the 
  9372. bit-field by a positive value. 
  9373.  
  9374.  
  9375. ΓòÉΓòÉΓòÉ 7.17. EDC0065 ΓòÉΓòÉΓòÉ
  9376.  
  9377. Width of bit-field &1 must be a constant integral expression. 
  9378.  
  9379. Recovery: Replace the constant expression that specifies the width of the 
  9380. bit-field by a constant integral expression. 
  9381.  
  9382.  
  9383. ΓòÉΓòÉΓòÉ 7.18. EDC0067 ΓòÉΓòÉΓòÉ
  9384.  
  9385. A struct or union member cannot be declared with a storage class. 
  9386.  
  9387. A storage class specifier was found in the declaration of a struct or union 
  9388. member.  Members automatically take on the same storage class as their parent 
  9389. structure or union. 
  9390.  
  9391. Recovery: Remove the storage class specifier from the member of the struct or 
  9392. union. 
  9393.  
  9394.  
  9395. ΓòÉΓòÉΓòÉ 7.19. EDC0068 ΓòÉΓòÉΓòÉ
  9396.  
  9397. The &1 definition must specify a member list. 
  9398.  
  9399. The declaration of a struct or a union that includes an empty member list 
  9400. enclosed between braces is not a valid struct or union definition. 
  9401.  
  9402. Recovery: Specify the members of the struct or union in the definition or 
  9403. remove the empty braces to make it a simple struct or union tag declaration. 
  9404.  
  9405.  
  9406. ΓòÉΓòÉΓòÉ 7.20. EDC0069 ΓòÉΓòÉΓòÉ
  9407.  
  9408. A member declaration must specify a name. 
  9409.  
  9410. A struct or union member declaration must specify a name.  A type cannot be 
  9411. followed by a semicolon. 
  9412.  
  9413. Recovery: Declare the member with a name. 
  9414.  
  9415.  
  9416. ΓòÉΓòÉΓòÉ 7.21. EDC0080 ΓòÉΓòÉΓòÉ
  9417.  
  9418. An object cannot be cast to an aggregate, union or function type. 
  9419.  
  9420. An attempt was made to cast an operand to an aggregate, union or function type. 
  9421.  
  9422. Recovery: Use pointers instead of aggregate, union or function objects. Cast 
  9423. the new pointer operand to a pointer to the desired struct, union or function 
  9424. type. 
  9425.  
  9426.  
  9427. ΓòÉΓòÉΓòÉ 7.22. EDC0081 ΓòÉΓòÉΓòÉ
  9428.  
  9429. A struct or union cannot be cast to another data type. 
  9430.  
  9431. Recovery: Use a pointer to the struct or union as the operand. 
  9432.  
  9433.  
  9434. ΓòÉΓòÉΓòÉ 7.23. EDC0082 ΓòÉΓòÉΓòÉ
  9435.  
  9436. The data conversion is not valid. 
  9437.  
  9438. The statement contains an expression that converts data to a type that is not 
  9439. valid.  See the SAA CPI C Reference for the table of correct data conversions. 
  9440.  
  9441. Recovery: Check the type declaration of the indicated operand and the type of 
  9442. the conversion.  Ensure the conversion is correct. 
  9443.  
  9444.  
  9445. ΓòÉΓòÉΓòÉ 7.24. EDC0083 ΓòÉΓòÉΓòÉ
  9446.  
  9447. Only casts to arithmetic types are allowed in an arithmetic constant 
  9448. expression. 
  9449.  
  9450. In an arithmetic constant expression, casts must be to arithmetic types. Valid 
  9451. arithmetic types include: char, signed and unsigned int, enum, float, double, 
  9452. and long double. 
  9453.  
  9454. Recovery: Remove the cast operator or change the cast to an arithmetic one. 
  9455.  
  9456.  
  9457. ΓòÉΓòÉΓòÉ 7.25. EDC0096 ΓòÉΓòÉΓòÉ
  9458.  
  9459. The subscript must be a constant integral expression. 
  9460.  
  9461. Recovery: Replace the expression that specifies the array subscript by a 
  9462. constant integral expression. 
  9463.  
  9464.  
  9465. ΓòÉΓòÉΓòÉ 7.26. EDC0097 ΓòÉΓòÉΓòÉ
  9466.  
  9467. Pointers to void and pointers to function are not assignment compatible. 
  9468.  
  9469. Recovery: Ensure that your function declarations are correct. 
  9470.  
  9471.  
  9472. ΓòÉΓòÉΓòÉ 7.27. EDC0098 ΓòÉΓòÉΓòÉ
  9473.  
  9474. Pointers to void and pointers to function cannot be compared. 
  9475.  
  9476. Recovery: Check the logic of the comparison. 
  9477.  
  9478.  
  9479. ΓòÉΓòÉΓòÉ 7.28. EDC0099 ΓòÉΓòÉΓòÉ
  9480.  
  9481. A pointer to incomplete type cannot be subscripted. 
  9482.  
  9483. Recovery: Define the type before you reference it. 
  9484.  
  9485.  
  9486. ΓòÉΓòÉΓòÉ 7.29. EDC0100 ΓòÉΓòÉΓòÉ
  9487.  
  9488. Operand of bitwise complement must have integral type. 
  9489.  
  9490. The operand of the bitwise complement operator does not have an integral type. 
  9491. Valid integral types include: signed and unsigned char; signed and unsigned 
  9492. short, long, and int; and enum. 
  9493.  
  9494. Recovery: Change the type of the operand, or use a different operand. 
  9495.  
  9496.  
  9497. ΓòÉΓòÉΓòÉ 7.30. EDC0101 ΓòÉΓòÉΓòÉ
  9498.  
  9499. Operand of unary minus operator must have arithmetic type. 
  9500.  
  9501. The operand of the unary minus operator (-) does not have an arithmetic type. 
  9502. Valid arithmetic types include: signed and unsigned char; signed and unsigned 
  9503. short, long, and int; enum, float, double, and long double. 
  9504.  
  9505. Recovery: Change the type of the operand, or use a different operand. 
  9506.  
  9507.  
  9508. ΓòÉΓòÉΓòÉ 7.31. EDC0102 ΓòÉΓòÉΓòÉ
  9509.  
  9510. Operand of logical negation must have scalar type. 
  9511.  
  9512. The operand of the logical negation operator (!) does not have a scalar type. 
  9513. Valid scalar types include: signed and unsigned char; signed and unsigned 
  9514. short, long, and int; enum, float, double, long double, and pointers. 
  9515.  
  9516. Recovery: Change the type of the operand, or use a different operand. 
  9517.  
  9518.  
  9519. ΓòÉΓòÉΓòÉ 7.32. EDC0104 ΓòÉΓòÉΓòÉ
  9520.  
  9521. Only pointers to compatible types can be subtracted. 
  9522.  
  9523. The expression must contain pointers to compatible data types. See the SAA CPI 
  9524. C Reference for the rules on compatible types. 
  9525.  
  9526. Recovery: Ensure that the pointers point to compatible data types. 
  9527.  
  9528.  
  9529. ΓòÉΓòÉΓòÉ 7.33. EDC0105 ΓòÉΓòÉΓòÉ
  9530.  
  9531. Operand of address operator must be a function or an lvalue. 
  9532.  
  9533. The operand of the address operator (unary &) is not valid. The operand must be 
  9534. either a function designator or an lvalue that designates an object that is not 
  9535. a bit-field and is not declared with register storage class. 
  9536.  
  9537. Recovery: Change the operand. 
  9538.  
  9539.  
  9540. ΓòÉΓòÉΓòÉ 7.34. EDC0106 ΓòÉΓòÉΓòÉ
  9541.  
  9542. The sizeof operator cannot be used with a function, void or bit-field. 
  9543.  
  9544. The operand of the sizeof operator is not valid.  The sizeof operator cannot be 
  9545. applied to an expression that has a function type or an incomplete type, to the 
  9546. parenthesized name of such a type, or to an lvalue that designates a bit-field 
  9547. object. 
  9548.  
  9549. Recovery: Change the operand. 
  9550.  
  9551.  
  9552. ΓòÉΓòÉΓòÉ 7.35. EDC0107 ΓòÉΓòÉΓòÉ
  9553.  
  9554. Operand of indirection operator must be a pointer. 
  9555.  
  9556. The operand of the indirection operator (unary *) is not a pointer. 
  9557.  
  9558. Recovery: Change the operand. 
  9559.  
  9560.  
  9561. ΓòÉΓòÉΓòÉ 7.36. EDC0108 ΓòÉΓòÉΓòÉ
  9562.  
  9563. Operand of arrow operator must be a pointer to a struct or union. 
  9564.  
  9565. The left hand operand of the arrow operator (->) must have type "pointer to 
  9566. structure" or "pointer to union". 
  9567.  
  9568. Recovery: Change the operand. 
  9569.  
  9570.  
  9571. ΓòÉΓòÉΓòÉ 7.37. EDC0109 ΓòÉΓòÉΓòÉ
  9572.  
  9573. The subscript must be an integral expression. 
  9574.  
  9575. The subscript expression must have integral type. Valid integral types include: 
  9576. char, signed and unsigned int, and enum. 
  9577.  
  9578. Recovery: Change the subscript expression to have an integral type. 
  9579.  
  9580.  
  9581. ΓòÉΓòÉΓòÉ 7.38. EDC0110 ΓòÉΓòÉΓòÉ
  9582.  
  9583. Operand of dot operator must be a struct or a union. 
  9584.  
  9585. The left hand operand of the dot (.) operator is not of type struct or union. 
  9586.  
  9587. Recovery: Change the operand. 
  9588.  
  9589.  
  9590. ΓòÉΓòÉΓòÉ 7.39. EDC0111 ΓòÉΓòÉΓòÉ
  9591.  
  9592. Identifier &1 must be a member of the struct or union. 
  9593.  
  9594. The specified member does not belong to the structure or union given. One of 
  9595. the following has occurred: 
  9596.  
  9597.   1. The right hand operand of the dot (.) operator is not a member of the 
  9598.      structure or union specified on the left hand side of the operator. 
  9599.  
  9600.   2. The right hand operand of the arrow (->) operator is not a member of the 
  9601.      structure or union pointed to by the pointer on the left hand side of the 
  9602.      operator. 
  9603.  
  9604.  Recovery: Change the identifier. 
  9605.  
  9606.  
  9607. ΓòÉΓòÉΓòÉ 7.40. EDC0112 ΓòÉΓòÉΓòÉ
  9608.  
  9609. The expression must be a function designator. 
  9610.  
  9611. The expression is followed by an argument list but does not evaluate to a 
  9612. function designator. 
  9613.  
  9614. Recovery: Change the expression to be a function or a pointer to a function. 
  9615.  
  9616.  
  9617. ΓòÉΓòÉΓòÉ 7.41. EDC0113 ΓòÉΓòÉΓòÉ
  9618.  
  9619. Operand must have integral type. 
  9620.  
  9621. The operand of the bitwise operators or modulus (%) operator must have integral 
  9622. type.  Valid integral types include: char, signed and unsigned int, and enum. 
  9623.  
  9624. Recovery: Change the operand. 
  9625.  
  9626.  
  9627. ΓòÉΓòÉΓòÉ 7.42. EDC0114 ΓòÉΓòÉΓòÉ
  9628.  
  9629. Operand must be a modifiable lvalue. 
  9630.  
  9631. See the SAA CPI C Reference for a description of lvalue. 
  9632.  
  9633. Recovery: Change the operand. 
  9634.  
  9635.  
  9636. ΓòÉΓòÉΓòÉ 7.43. EDC0115 ΓòÉΓòÉΓòÉ
  9637.  
  9638. A struct or union can be assigned only to a compatible type. 
  9639.  
  9640. Two structures have compatible types if both have been declared with the same 
  9641. structure tag.  Two unions have compatible types if both have been declared 
  9642. with the same union tag.  However, tags are scope sensitive.  Even if two tag 
  9643. names and their member lists are identical, if their definitions are located in 
  9644. different scopes, the types associated with these tags are different. 
  9645.  
  9646. Recovery: Make sure that the structures or unions used in the assignment have 
  9647. been declared with the same tag in the same scope. 
  9648.  
  9649.  
  9650. ΓòÉΓòÉΓòÉ 7.44. EDC0116 ΓòÉΓòÉΓòÉ
  9651.  
  9652. Identifier &1 cannot be redeclared as an enum tag. 
  9653.  
  9654. In the declaration, the object is declared to be an enum tag. The object was 
  9655. previously declared to the tag of a struct or union type. 
  9656.  
  9657. Recovery: Change the name of the tag. 
  9658.  
  9659.  
  9660. ΓòÉΓòÉΓòÉ 7.45. EDC0117 ΓòÉΓòÉΓòÉ
  9661.  
  9662. The operation between these types is not valid. 
  9663.  
  9664. The identifiers on the left hand side and the right hand side of the operator 
  9665. have types that do not respect the restrictions of the operator.  The operation 
  9666. specified in the expression cannot be performed.  See the SAA CPI C Reference 
  9667. for the list of operator restrictions. 
  9668.  
  9669. Recovery: Change the operands. 
  9670.  
  9671.  
  9672. ΓòÉΓòÉΓòÉ 7.46. EDC0118 ΓòÉΓòÉΓòÉ
  9673.  
  9674. The divisor for the modulus or division operator cannot be zero. 
  9675.  
  9676. The value of the divisor expression cannot be zero. 
  9677.  
  9678. Recovery: Change the expression used as the divisor. 
  9679.  
  9680.  
  9681. ΓòÉΓòÉΓòÉ 7.47. EDC0119 ΓòÉΓòÉΓòÉ
  9682.  
  9683. The void pointer must be cast prior to this operation. 
  9684.  
  9685. A void pointer must be cast to a data type before it is used in this operation. 
  9686.  
  9687. Recovery: Cast the pointer to a type other than void prior to this operation. 
  9688.  
  9689.  
  9690. ΓòÉΓòÉΓòÉ 7.48. EDC0120 ΓòÉΓòÉΓòÉ
  9691.  
  9692. Operand of unary plus operator must have arithmetic type. 
  9693.  
  9694. The operand of the unary plus operator (+) does not have an arithmetic type. 
  9695. Valid arithmetic types include: signed and unsigned char; signed and unsigned 
  9696. short, long, and int; enum, float, double, and long double. 
  9697.  
  9698. Recovery: Change the operand. 
  9699.  
  9700.  
  9701. ΓòÉΓòÉΓòÉ 7.49. EDC0121 ΓòÉΓòÉΓòÉ
  9702.  
  9703. Operand must have scalar type. 
  9704.  
  9705. The operand for this operation does not have scalar type.  Valid scalar types 
  9706. include: signed and unsigned char; signed and unsigned short, long, and int; 
  9707. enum, float, double, long double, and pointers. 
  9708.  
  9709. Recovery: Change the type of the operand, or use a different operand. 
  9710.  
  9711.  
  9712. ΓòÉΓòÉΓòÉ 7.50. EDC0122 ΓòÉΓòÉΓòÉ
  9713.  
  9714. Operand must have arithmetic type. 
  9715.  
  9716. The operand of this operation does not have arithmetic type. Valid arithmetic 
  9717. types include: signed and unsigned char; signed and unsigned short, long, and 
  9718. int; enum, float, double, and long double. 
  9719.  
  9720. Recovery: Change the operand. 
  9721.  
  9722.  
  9723. ΓòÉΓòÉΓòÉ 7.51. EDC0123 ΓòÉΓòÉΓòÉ
  9724.  
  9725. If one operand is void, the other must be void. 
  9726.  
  9727. If one operand in the conditional expression has type void, the other operand 
  9728. must also have type void. 
  9729.  
  9730. Recovery: Make the operands compatible. 
  9731.  
  9732.  
  9733. ΓòÉΓòÉΓòÉ 7.52. EDC0125 ΓòÉΓòÉΓòÉ
  9734.  
  9735. Operands of the conditional operator must have compatible types. 
  9736.  
  9737. If one operand of the conditional expression has type struct or union, the 
  9738. other operand must be a struct or union declared using the same tag in the same 
  9739. scope. Two structures have compatible types if both have been declared with the 
  9740. same structure tag.  Two unions are have compatible types if both have been 
  9741. declared with the same union tag.  However, tags are scope sensitive.  Even if 
  9742. two tag names and their member lists are identical, if their definitions are 
  9743. located in different scopes, the types associated with these tags are 
  9744. different. 
  9745.  
  9746. Recovery: Make sure that the structures or unions used in the conditional 
  9747. expression have been declared/defined with the same tag (in the same scope). 
  9748.  
  9749.  
  9750. ΓòÉΓòÉΓòÉ 7.53. EDC0126 ΓòÉΓòÉΓòÉ
  9751.  
  9752. If one operand is a pointer, the other must also be a pointer. 
  9753.  
  9754. If one operand of either the relational or the equality operator is a pointer, 
  9755. the other operand must be either a pointer to the same qualified or unqualified 
  9756. type, a NULL pointer, or a pointer to void. 
  9757.  
  9758. Recovery: Change the operands. 
  9759.  
  9760.  
  9761. ΓòÉΓòÉΓòÉ 7.54. EDC0127 ΓòÉΓòÉΓòÉ
  9762.  
  9763. If the operands are pointers, they must point to compatible types. 
  9764.  
  9765. If one operand of either the relational or the equality operator is a pointer, 
  9766. the other operand must be either a pointer to the same qualified or unqualified 
  9767. type, a NULL pointer, or a pointer to void. 
  9768.  
  9769. Recovery: Change the operands. 
  9770.  
  9771.  
  9772. ΓòÉΓòÉΓòÉ 7.55. EDC0128 ΓòÉΓòÉΓòÉ
  9773.  
  9774. Two pointers cannot be added. 
  9775.  
  9776. The addition operator requires that either both operands have arithmetic type 
  9777. or, if one of the operands is a pointer, the other one must have integral type. 
  9778. Valid integral types include: char, signed and unsigned int, and enum.  Valid 
  9779. arithmetic types include: the integral types plus float, double, long double, 
  9780. and bit fields. 
  9781.  
  9782. Recovery: Change the operands. 
  9783.  
  9784.  
  9785. ΓòÉΓòÉΓòÉ 7.56. EDC0129 ΓòÉΓòÉΓòÉ
  9786.  
  9787. The offsetof macro cannot be used with an incomplete struct or union. 
  9788.  
  9789. A structure or union is incomplete when the definition of its tag has not been 
  9790. specified.  A struct or union tag is undefined when the list describing the 
  9791. name and type of its members has not been specified. 
  9792.  
  9793. Recovery: Define the tag before using it with the offsetof macro. 
  9794.  
  9795.  
  9796. ΓòÉΓòÉΓòÉ 7.57. EDC0130 ΓòÉΓòÉΓòÉ
  9797.  
  9798. The operation cannot be performed on an incomplete struct or union. 
  9799.  
  9800. The definition of the operand must be completed prior to this operations.  A 
  9801. structure or union type is completed when the definition of its tag is 
  9802. specified.  A struct or union tag is defined when the list describing the name 
  9803. and type of its members is specified. 
  9804.  
  9805. Recovery: Define the tag before using it in an expression. 
  9806.  
  9807.  
  9808. ΓòÉΓòÉΓòÉ 7.58. EDC0131 ΓòÉΓòÉΓòÉ
  9809.  
  9810. Subtraction between void pointers is not allowed. 
  9811.  
  9812. Recovery: Cast the pointers to a type other than void or do not subtract them. 
  9813.  
  9814.  
  9815. ΓòÉΓòÉΓòÉ 7.59. EDC0132 ΓòÉΓòÉΓòÉ
  9816.  
  9817. A pointer to void cannot be subscripted. 
  9818.  
  9819. The subscript operator requires a pointer to a valid address. 
  9820.  
  9821. Recovery: Cast the pointer to a type other than void before using it with the 
  9822. subscript operator. 
  9823.  
  9824.  
  9825. ΓòÉΓòÉΓòÉ 7.60. EDC0133 ΓòÉΓòÉΓòÉ
  9826.  
  9827. An identifier can not be declared in a cast or sizeof expression. 
  9828.  
  9829. Only abstract declarators can appear in cast or sizeof expressions. 
  9830.  
  9831. Recovery: Remove the identifier from the cast or sizeof expression and replace 
  9832. it with an abstract declarator. 
  9833.  
  9834.  
  9835. ΓòÉΓòÉΓòÉ 7.61. EDC0134 ΓòÉΓòÉΓòÉ
  9836.  
  9837. The sizeof operator cannot be used with an incomplete struct. 
  9838.  
  9839. A struct is incomplete when the definition of its tag has not been specified. 
  9840. A struct tag is undefined when the list describing the name and type of its 
  9841. members has not been specified. 
  9842.  
  9843. Recovery: Define the tag before using it with the sizeof operator. 
  9844.  
  9845.  
  9846. ΓòÉΓòÉΓòÉ 7.62. EDC0135 ΓòÉΓòÉΓòÉ
  9847.  
  9848. The sizeof operator cannot be used with an incomplete union. 
  9849.  
  9850. A union is incomplete when the definition of its tag has not been specified.  A 
  9851. union tag is undefined when the list describing the name and type of its 
  9852. members has not been specified. 
  9853.  
  9854. Recovery: Define the tag before using it with the sizeof operator. 
  9855.  
  9856.  
  9857. ΓòÉΓòÉΓòÉ 7.63. EDC0136 ΓòÉΓòÉΓòÉ
  9858.  
  9859. The sizeof operator cannot be used with arrays of unknown size. 
  9860.  
  9861. Recovery: Make sure the array and its size have been declared before using it 
  9862. with the sizeof operator. 
  9863.  
  9864.  
  9865. ΓòÉΓòÉΓòÉ 7.64. EDC0137 ΓòÉΓòÉΓòÉ
  9866.  
  9867. The indirection operator cannot be applied to a pointer to an incomplete struct 
  9868. or union. 
  9869.  
  9870. Except for pointers, it is not valid to declare an object of incomplete 
  9871. structure or union type.  A structure or union is incomplete when the 
  9872. definition of its tag has not been specified. A struct or union tag is 
  9873. undefined when the list describing the name and type of its members has not 
  9874. been specified. 
  9875.  
  9876. Recovery: Define the tag before using it in the declaration of an identifier. 
  9877.  
  9878.  
  9879. ΓòÉΓòÉΓòÉ 7.65. EDC0138 ΓòÉΓòÉΓòÉ
  9880.  
  9881. The indirection operator cannot be applied to a void pointer. 
  9882.  
  9883. The indirection operator requires a pointer to a valid address. 
  9884.  
  9885. Recovery: Cast the pointer to a type other than void before using it with the 
  9886. indirection operator. 
  9887.  
  9888.  
  9889. ΓòÉΓòÉΓòÉ 7.66. EDC0139 ΓòÉΓòÉΓòÉ
  9890.  
  9891. A translation unit must contain at least one external declaration. 
  9892.  
  9893. A translation unit that does not contain any external declaration will not be 
  9894. linked to. Normally it will not affect the execution of the executable program. 
  9895.  
  9896. Recovery: Make sure this is what was intended or change the appropriate 
  9897. declarations to the external ones. 
  9898.  
  9899.  
  9900. ΓòÉΓòÉΓòÉ 7.67. EDC0140 ΓòÉΓòÉΓòÉ
  9901.  
  9902. Operand has type &1. 
  9903.  
  9904. An error has occurred due to conflicting operands.  This message states the 
  9905. type of the operand used in the expression. 
  9906.  
  9907. Recovery: No recovery is necessary if this result was intended. Change the type 
  9908. of the operand if necessary. 
  9909.  
  9910.  
  9911. ΓòÉΓòÉΓòÉ 7.68. EDC0141 ΓòÉΓòÉΓòÉ
  9912.  
  9913. Prototype has type &1. 
  9914.  
  9915. An error has occurred due to conflicting function declarations. This message 
  9916. states the type of the prototype declaration. 
  9917.  
  9918. Recovery: No recovery is necessary if this result was intended. Change the type 
  9919. of the prototype if necessary. 
  9920.  
  9921.  
  9922. ΓòÉΓòÉΓòÉ 7.69. EDC0142 ΓòÉΓòÉΓòÉ
  9923.  
  9924. Previous declaration has type &1. 
  9925.  
  9926. An error has occurred due to conflicting identifier declarations. This message 
  9927. states the type of the identifier in the current declaration. 
  9928.  
  9929. Recovery: No recovery is necessary if this result was intended. Change the 
  9930. declarations to the same type if necessary. 
  9931.  
  9932.  
  9933. ΓòÉΓòÉΓòÉ 7.70. EDC0143 ΓòÉΓòÉΓòÉ
  9934.  
  9935. The post- and pre- increment and decrement operators cannot be applied to void 
  9936. pointers. 
  9937.  
  9938. Pointers to void cannot be incremented or decremented. 
  9939.  
  9940. Recovery: Cast the pointer to a type other than void before using it with any 
  9941. one of the increment or decrement operators. 
  9942.  
  9943.  
  9944. ΓòÉΓòÉΓòÉ 7.71. EDC0144 ΓòÉΓòÉΓòÉ
  9945.  
  9946. The address operator cannot be used with arrays of unknown size. 
  9947.  
  9948. Recovery: Make sure the array and its size have been declared before using it 
  9949. with the address operator. 
  9950.  
  9951.  
  9952. ΓòÉΓòÉΓòÉ 7.72. EDC0145 ΓòÉΓòÉΓòÉ
  9953.  
  9954. Redeclaration has type &1. 
  9955.  
  9956. An error has occurred because of conflicting declarations. This message states 
  9957. the type of the identifier in the redeclarations. 
  9958.  
  9959. Recovery: No recovery is necessary if this result was intended. Change the 
  9960. types in the declarations to be compatible, if necessary. 
  9961.  
  9962.  
  9963. ΓòÉΓòÉΓòÉ 7.73. EDC0146 ΓòÉΓòÉΓòÉ
  9964.  
  9965. Function has return type &1. 
  9966.  
  9967. Recovery: No recovery is necessary if this result was intended. Change the 
  9968. return type if necessary. 
  9969.  
  9970.  
  9971. ΓòÉΓòÉΓòÉ 7.74. EDC0147 ΓòÉΓòÉΓòÉ
  9972.  
  9973. Argument has type &1. 
  9974.  
  9975. The argument type in the function call conflicts with the parameter in the 
  9976. function prototype.  This message states the type of the argument. 
  9977.  
  9978. Recovery: No recovery is necessary if this result was intended. Change the 
  9979. argument types to be compatible, if necessary. 
  9980.  
  9981.  
  9982. ΓòÉΓòÉΓòÉ 7.75. EDC0148 ΓòÉΓòÉΓòÉ
  9983.  
  9984. Expression has type &1. 
  9985.  
  9986. Recovery: Informational message.  No recovery is necessary if this result was 
  9987. intended. 
  9988.  
  9989.  
  9990. ΓòÉΓòÉΓòÉ 7.76. EDC0149 ΓòÉΓòÉΓòÉ
  9991.  
  9992. Operation not allowed with enum that is not defined. 
  9993.  
  9994. The sizeof or cast operator cannot be used with enum that is not defined. 
  9995.  
  9996. Recovery: Declare the enum. 
  9997.  
  9998.  
  9999. ΓòÉΓòÉΓòÉ 7.77. EDC0150 ΓòÉΓòÉΓòÉ
  10000.  
  10001. The number of initializers cannot be greater than the number of elements. 
  10002.  
  10003. Too many initializers were found in the initializer list for the indicated 
  10004. declaration. 
  10005.  
  10006. Recovery: Check the number of initializers.  Check the closing brace at the end 
  10007. of the initializer list to ensure that it has been positioned correctly. 
  10008.  
  10009.  
  10010. ΓòÉΓòÉΓòÉ 7.78. EDC0151 ΓòÉΓòÉΓòÉ
  10011.  
  10012. The initializer must be a constant expression. 
  10013.  
  10014. The initializers for identifiers of static storage duration, or for identifiers 
  10015. of an array, structure, or union type must be constant expressions. 
  10016.  
  10017. Recovery: Remove the initialization or change the indicated initializer to a 
  10018. constant expression. 
  10019.  
  10020.  
  10021. ΓòÉΓòÉΓòÉ 7.79. EDC0152 ΓòÉΓòÉΓòÉ
  10022.  
  10023. A register array may only be used as the operand to sizeof. 
  10024.  
  10025. The only operator that may be applied to a register array is sizeof. 
  10026.  
  10027. Recovery: Remove the register keyword from the declaration. 
  10028.  
  10029.  
  10030. ΓòÉΓòÉΓòÉ 7.80. EDC0153 ΓòÉΓòÉΓòÉ
  10031.  
  10032. An initializer for a static identifier cannot have the automatic storage class. 
  10033.  
  10034. The initializer cannot have an automatic storage class if the identifier being 
  10035. initialized has a static storage class. 
  10036.  
  10037. Recovery: Either change the storage class in the identifier declaration or 
  10038. change the initializer. 
  10039.  
  10040.  
  10041. ΓòÉΓòÉΓòÉ 7.81. EDC0166 ΓòÉΓòÉΓòÉ
  10042.  
  10043. A non-lvalue array cannot be subscripted. 
  10044.  
  10045. Subscript operator cannot be used with a non-lvalue array. 
  10046.  
  10047. Recovery: Change the array to an lvalue one. 
  10048.  
  10049.  
  10050. ΓòÉΓòÉΓòÉ 7.82. EDC0167 ΓòÉΓòÉΓòÉ
  10051.  
  10052. A non-lvalue array cannot be used in this context. 
  10053.  
  10054. The location of a non-lvalue array may not be referenced. 
  10055.  
  10056. Recovery: Change the array to an lvalue one. 
  10057.  
  10058.  
  10059. ΓòÉΓòÉΓòÉ 7.83. EDC0168 ΓòÉΓòÉΓòÉ
  10060.  
  10061. Invalid operation on a function pointer. 
  10062.  
  10063. Subscript operator, additive operator, and pre- and post-increment and 
  10064. decrement operators cannot be used with an operand of type pointer to function. 
  10065.  
  10066. Recovery: Change the operator or the operand. 
  10067.  
  10068.  
  10069. ΓòÉΓòÉΓòÉ 7.84. EDC0170 ΓòÉΓòÉΓòÉ
  10070.  
  10071. A function cannot be initialized. 
  10072.  
  10073. An attempt was made to assign an initial value to a function identifier. 
  10074.  
  10075. Recovery: Remove the assignment operator and the initializer. 
  10076.  
  10077.  
  10078. ΓòÉΓòÉΓòÉ 7.85. EDC0171 ΓòÉΓòÉΓòÉ
  10079.  
  10080. A function cannot return a function. 
  10081.  
  10082. A function cannot have a return type of function. 
  10083.  
  10084. Recovery: Return a pointer to the function or specify a different return type. 
  10085.  
  10086.  
  10087. ΓòÉΓòÉΓòÉ 7.86. EDC0172 ΓòÉΓòÉΓòÉ
  10088.  
  10089. Function &1 cannot have a storage class of auto or register. 
  10090.  
  10091. Recovery: Remove the storage class specifier for the function identifier, or 
  10092. change it to either extern or static. 
  10093.  
  10094.  
  10095. ΓòÉΓòÉΓòÉ 7.87. EDC0173 ΓòÉΓòÉΓòÉ
  10096.  
  10097. A function cannot be a member of a struct or union. 
  10098.  
  10099. Recovery: Use a pointer to the function or remove the function from the member 
  10100. list. 
  10101.  
  10102.  
  10103. ΓòÉΓòÉΓòÉ 7.88. EDC0174 ΓòÉΓòÉΓòÉ
  10104.  
  10105. A function cannot return a const qualified type. 
  10106.  
  10107. Recovery: Remove the const qualifier or return a pointer to the const qualified 
  10108. type. 
  10109.  
  10110.  
  10111. ΓòÉΓòÉΓòÉ 7.89. EDC0175 ΓòÉΓòÉΓòÉ
  10112.  
  10113. A function cannot return a volatile qualified type. 
  10114.  
  10115. Recovery: Remove the volatile qualifier or return a pointer to the volatile 
  10116. qualified type. 
  10117.  
  10118.  
  10119. ΓòÉΓòÉΓòÉ 7.90. EDC0176 ΓòÉΓòÉΓòÉ
  10120.  
  10121. Return type must be compatible with declaration of function &1. 
  10122.  
  10123. The return statement of the function tries to return a structure or a union 
  10124. type that is not compatible with the return type specified in the function 
  10125. declaration/definition. The type of a structure or union is represented by its 
  10126. tag. Two structures have compatible types if both have been declared with the 
  10127. same structure tag.  Two unions are have compatible types if both have been 
  10128. declared with the same union tag.  However, tags are scope sensitive.  Even if 
  10129. two tag names and their member lists are identical, if their definitions are 
  10130. located in different scopes, the types associated with these tags are 
  10131. different. 
  10132.  
  10133. Recovery: Make sure that the same tag (in the same scope) is used in the 
  10134. function declaration/definition, as well as in the declaration/definition of 
  10135. the value specified on the return statement, 
  10136.  
  10137.  
  10138. ΓòÉΓòÉΓòÉ 7.91. EDC0177 ΓòÉΓòÉΓòÉ
  10139.  
  10140. A function declared to return void cannot return a value. 
  10141.  
  10142. When a function is declared to have a void return type, the return statement of 
  10143. the function cannot return any value.  An attempt was made to return a value in 
  10144. a function that was declared/defined with a void return type. 
  10145.  
  10146. Recovery: Change the declaration to specify the return type or do not return a 
  10147. value. 
  10148.  
  10149.  
  10150. ΓòÉΓòÉΓòÉ 7.92. EDC0178 ΓòÉΓòÉΓòÉ
  10151.  
  10152. A function cannot return an array. 
  10153.  
  10154. Recovery: Return a pointer to the array or specify a different return type. 
  10155.  
  10156.  
  10157. ΓòÉΓòÉΓòÉ 7.93. EDC0179 ΓòÉΓòÉΓòÉ
  10158.  
  10159. The function &1 cannot be redefined. 
  10160.  
  10161. It is not valid to define a function more than once.  Do not confuse function 
  10162. definitions and function declarations.  A declaration describes the return type 
  10163. of the function.  A definition is a declaration followed by the code that is to 
  10164. be executed when the function is called (the code portion is called the 
  10165. function body). Only one definition per function is allowed. 
  10166.  
  10167. Recovery: Remove all extra definitions or change the name of the function. 
  10168.  
  10169.  
  10170. ΓòÉΓòÉΓòÉ 7.94. EDC0180 ΓòÉΓòÉΓòÉ
  10171.  
  10172. The static function &1 is referenced but is not defined in this file. 
  10173.  
  10174. A static function was declared and referenced in this file. The definition of 
  10175. the function was not found before the end of the file.  When a function is 
  10176. declared to be static, the function definition must appear in the same file. 
  10177.  
  10178. Recovery: Define the function or remove the static storage class. 
  10179.  
  10180.  
  10181. ΓòÉΓòÉΓòÉ 7.95. EDC0181 ΓòÉΓòÉΓòÉ
  10182.  
  10183. The struct, union, or enum tag &1 cannot be redefined. 
  10184.  
  10185. A struct or union tag is defined when it is declared with the list describing 
  10186. the name and type of its members.  An enum tag is defined when it is declared 
  10187. with the list of its enumeration constants. It is invalid to define a struct, 
  10188. union, or enum tag more than once in the same scope. 
  10189.  
  10190. Recovery: Remove all extra definitions or rename the tag. 
  10191.  
  10192.  
  10193. ΓòÉΓòÉΓòÉ 7.96. EDC0182 ΓòÉΓòÉΓòÉ
  10194.  
  10195. A function cannot be an element of an array. 
  10196.  
  10197. Recovery: Use a pointer to the function, or change the type of the element. 
  10198.  
  10199.  
  10200. ΓòÉΓòÉΓòÉ 7.97. EDC0183 ΓòÉΓòÉΓòÉ
  10201.  
  10202. An argument cannot be an incomplete struct or union. 
  10203.  
  10204. The argument has an incomplete struct or union type. A structure or union is 
  10205. incomplete when the definition of the tag (i.e. when the number and the type of 
  10206. its members) has not been specified. It is not valid to pass arguments of 
  10207. incomplete type to a function. 
  10208.  
  10209. Recovery: Use a pointer to the incomplete type or define the type before using 
  10210. it. 
  10211.  
  10212.  
  10213. ΓòÉΓòÉΓòÉ 7.98. EDC0184 ΓòÉΓòÉΓòÉ
  10214.  
  10215. An argument cannot have type void. 
  10216.  
  10217. The indicated parameter has type void.  You cannot pass a parameter of type 
  10218. void on a function call. 
  10219.  
  10220. Recovery: Use a pointer to void or cast the type of the argument. 
  10221.  
  10222.  
  10223. ΓòÉΓòÉΓòÉ 7.99. EDC0185 ΓòÉΓòÉΓòÉ
  10224.  
  10225. Function &1 has not been prototyped prior to use. 
  10226.  
  10227. A prototype declaration of the function specifying the number and type of the 
  10228. parameters was not found before the function was called. Errors may occur if 
  10229. the function call does not respect the function definition. 
  10230.  
  10231. Recovery: Include a prototype declaration of the function before calling it. 
  10232.  
  10233.  
  10234. ΓòÉΓòÉΓòÉ 7.100. EDC0187 ΓòÉΓòÉΓòÉ
  10235.  
  10236. The declaration or definition of the function is not valid. 
  10237.  
  10238. The compiler cannot read the declaration.  It assumes that it was an invalid 
  10239. function declaration.  The return type or the parameters may have been 
  10240. specified incorrectly. 
  10241.  
  10242. Recovery: Check for incorrect spelling or missing parentheses. 
  10243.  
  10244.  
  10245. ΓòÉΓòÉΓòÉ 7.101. EDC0189 ΓòÉΓòÉΓòÉ
  10246.  
  10247. The return type of the function main must have type int. 
  10248.  
  10249. Recovery: Change the return type of function main to int. 
  10250.  
  10251.  
  10252. ΓòÉΓòÉΓòÉ 7.102. EDC0190 ΓòÉΓòÉΓòÉ
  10253.  
  10254. A switch expression must have integral type. 
  10255.  
  10256. The controlling expression in a switch statement must have integral type. 
  10257. Valid integral type include: char, signed and unsigned int, and enum. 
  10258.  
  10259. Recovery: Change the expression. 
  10260.  
  10261.  
  10262. ΓòÉΓòÉΓòÉ 7.103. EDC0191 ΓòÉΓòÉΓòÉ
  10263.  
  10264. A case label must be a constant integral expression. 
  10265.  
  10266. The expression in the case statement must be a constant integral expression. 
  10267. Valid integral expressions are: char, signed and unsigned int, and enum. 
  10268.  
  10269. Recovery: Change the expression. 
  10270.  
  10271.  
  10272. ΓòÉΓòÉΓòÉ 7.104. EDC0192 ΓòÉΓòÉΓòÉ
  10273.  
  10274. The case label cannot be a duplicate of the case label on line &1. 
  10275.  
  10276. Two case labels in the same switch statement cannot evaluate to the same 
  10277. integer value. 
  10278.  
  10279. Recovery: Change one of the labels. 
  10280.  
  10281.  
  10282. ΓòÉΓòÉΓòÉ 7.105. EDC0193 ΓòÉΓòÉΓòÉ
  10283.  
  10284. A default case label cannot be placed outside a switch statement. 
  10285.  
  10286. Recovery: Remove the default case label, or place it inside a switch statement. 
  10287. Check for misplaced braces on a previous switch statement. 
  10288.  
  10289.  
  10290. ΓòÉΓòÉΓòÉ 7.106. EDC0194 ΓòÉΓòÉΓòÉ
  10291.  
  10292. A switch statement cannot contain more than one default statement. 
  10293.  
  10294. Recovery: Remove one of the default statements. 
  10295.  
  10296.  
  10297. ΓòÉΓòÉΓòÉ 7.107. EDC0195 ΓòÉΓòÉΓòÉ
  10298.  
  10299. A case statement cannot be placed outside a switch statement. 
  10300.  
  10301. Recovery: Remove the case statement, or place it within a switch statement 
  10302. group.  Check for misplaced braces on the previous switch statement. 
  10303.  
  10304.  
  10305. ΓòÉΓòÉΓòÉ 7.108. EDC0196 ΓòÉΓòÉΓòÉ
  10306.  
  10307. The case label evaluates to integer value &1. 
  10308.  
  10309. An error occurred due to conflicting case labels. This message states the value 
  10310. of the case labels. 
  10311.  
  10312. Recovery: Change the case label if necessary. 
  10313.  
  10314.  
  10315. ΓòÉΓòÉΓòÉ 7.109. EDC0200 ΓòÉΓòÉΓòÉ
  10316.  
  10317. A break statement cannot be placed outside a while, do, for or switch 
  10318. statement. 
  10319.  
  10320. Recovery: Remove the break statement or place it inside a while, do, for or 
  10321. switch statement.  Check for misplaced braces on a previous statement. 
  10322.  
  10323.  
  10324. ΓòÉΓòÉΓòÉ 7.110. EDC0201 ΓòÉΓòÉΓòÉ
  10325.  
  10326. A continue statement cannot be placed outside a while, do or for loop. 
  10327.  
  10328. Recovery: Remove the continue statement or place it inside a while, do or for 
  10329. loop.  Check for misplaced braces on a previous loop. 
  10330.  
  10331.  
  10332. ΓòÉΓòÉΓòÉ 7.111. EDC0220 ΓòÉΓòÉΓòÉ
  10333.  
  10334. Only arrays and pointers to object types can be subscripted. 
  10335.  
  10336. An attempt was made to subscript an identifier that was not an array or a 
  10337. pointer to an object type. 
  10338.  
  10339. Recovery: Remove the subscripts or change the identifier. 
  10340.  
  10341.  
  10342. ΓòÉΓòÉΓòÉ 7.112. EDC0221 ΓòÉΓòÉΓòÉ
  10343.  
  10344. Array size must be a positive constant integral expression. 
  10345.  
  10346. The array was declared with an invalid size.  If compilation continues, the 
  10347. compiler will assume that the array has size 1. 
  10348.  
  10349. Recovery: Make the array size a positive constant integral expression. 
  10350.  
  10351.  
  10352. ΓòÉΓòÉΓòÉ 7.113. EDC0222 ΓòÉΓòÉΓòÉ
  10353.  
  10354. Arrays cannot be redeclared with a different size. 
  10355.  
  10356. Recovery: Make the size consistent with the previous declaration or remove one 
  10357. of the array declarations. 
  10358.  
  10359.  
  10360. ΓòÉΓòÉΓòÉ 7.114. EDC0223 ΓòÉΓòÉΓòÉ
  10361.  
  10362. All array dimensions except the first must be specified. 
  10363.  
  10364. Only the first dimension of an initialized array may be unspecified. All the 
  10365. other dimensions must be specified on the declaration. 
  10366.  
  10367. Recovery: Specify all the other dimensions in the array declaration. 
  10368.  
  10369.  
  10370. ΓòÉΓòÉΓòÉ 7.115. EDC0224 ΓòÉΓòÉΓòÉ
  10371.  
  10372. All dimensions must be specified for array definitions. 
  10373.  
  10374. All the dimensions of arrays of automatic or static storage class must be 
  10375. specified on the declaration.  If the declaration of the automatic or static 
  10376. array provides an initialization, the first dimension may be unspecified 
  10377. because the initialization will determine the size needed. 
  10378.  
  10379. Recovery: Specify all of the dimensions in the array declaration. 
  10380.  
  10381.  
  10382. ΓòÉΓòÉΓòÉ 7.116. EDC0225 ΓòÉΓòÉΓòÉ
  10383.  
  10384. Arrays that are members must have all dimensions specified. 
  10385.  
  10386. Arrays that are struct or union members must have all dimensions specified in 
  10387. the array declaration. 
  10388.  
  10389. Recovery: Specify all of the dimensions in the array declaration. 
  10390.  
  10391.  
  10392. ΓòÉΓòÉΓòÉ 7.117. EDC0226 ΓòÉΓòÉΓòÉ
  10393.  
  10394. The parameter lists of the function pointers are not compatible. 
  10395.  
  10396. If one operand of either the relational or the equality operator is a pointer, 
  10397. the other operand must be either a pointer to the same qualified or unqualified 
  10398. type, a NULL pointer, or a pointer to void. 
  10399.  
  10400. Recovery: Make sure that the parameter lists of the function pointers are 
  10401. compatible. 
  10402.  
  10403.  
  10404. ΓòÉΓòÉΓòÉ 7.118. EDC0227 ΓòÉΓòÉΓòÉ
  10405.  
  10406. The return types of the function pointers are not compatible. 
  10407.  
  10408. If one operand of either the relational or the equality operator is a pointer, 
  10409. the other operand must be either a pointer to the same qualified or unqualified 
  10410. type, a NULL pointer, or a pointer to void. 
  10411.  
  10412. Recovery: Make sure that the return types of the function pointers are 
  10413. compatible. 
  10414.  
  10415.  
  10416. ΓòÉΓòÉΓòÉ 7.119. EDC0240 ΓòÉΓòÉΓòÉ
  10417.  
  10418. Octal constant is too big for character representation. 
  10419.  
  10420. Octal character constants specified in an escape sequence exceeded the decimal 
  10421. value of 255, or the octal equivalent of 377. 
  10422.  
  10423. Recovery: Change the octal escape sequence so that the value does not exceed 
  10424. the maximum value. 
  10425.  
  10426.  
  10427. ΓòÉΓòÉΓòÉ 7.120. EDC0241 ΓòÉΓòÉΓòÉ
  10428.  
  10429. Hex constant is too big for character representation. 
  10430.  
  10431. Hexadecimal character constants specified in an escape sequence exceeded the 
  10432. decimal value of 255, or the hexadecimal equivalent of FF. 
  10433.  
  10434. Recovery: Change the hexadecimal escape sequence so that the value does not 
  10435. exceed the maximum value. 
  10436.  
  10437.  
  10438. ΓòÉΓòÉΓòÉ 7.121. EDC0242 ΓòÉΓòÉΓòÉ
  10439.  
  10440. Nesting cannot exceed the maximum limit &1. 
  10441.  
  10442. The internal compiler limit of &1 nested #include files was exceeded. 
  10443.  
  10444. Recovery: Remove the nesting by putting all of the #include files at the same 
  10445. level, or reduce it such that the maximum nesting level is not exceeded. 
  10446.  
  10447.  
  10448. ΓòÉΓòÉΓòÉ 7.122. EDC0244 ΓòÉΓòÉΓòÉ
  10449.  
  10450. External name &1 has been truncated to &2. 
  10451.  
  10452. The external object has a name &1 which exceeds the limit and has been 
  10453. truncated to the name &2. 
  10454.  
  10455. Recovery: Change the name if necessary. 
  10456.  
  10457.  
  10458. ΓòÉΓòÉΓòÉ 7.123. EDC0247 ΓòÉΓòÉΓòÉ
  10459.  
  10460. Virtual storage exceeded. 
  10461.  
  10462. The compiler ran out of memory trying to compile the file.  This sometimes 
  10463. happens with large files or programs with large functions. Note that very large 
  10464. programs limit the amount of optimization that can be done. 
  10465.  
  10466. Recovery: Shut down any large processes that are running, make sure your swap 
  10467. path is large enough, turn off optimization, and redefine your virtual storage 
  10468. to a larger size.  You can also divide the file into several small sections or 
  10469. shorten the function. 
  10470.  
  10471.  
  10472. ΓòÉΓòÉΓòÉ 7.124. EDC0248 ΓòÉΓòÉΓòÉ
  10473.  
  10474. External name &1 cannot be redefined. 
  10475.  
  10476. An external name cannot be redefined.  External names can have up to 255 
  10477. significant characters, and can be upper or lowercase. Because you can limit 
  10478. the number of significant characters using the /H option, the compiler may 
  10479. recognize two names as identical although they are not.  For example, when you 
  10480. specify /H3, the identifiers ABCD and ABCE are considered identical because 
  10481. only the first three letters are significant. 
  10482.  
  10483. Recovery: Remove one of the definitions, change one of the names, or change the 
  10484. number specified on the /H option. 
  10485.  
  10486.  
  10487. ΓòÉΓòÉΓòÉ 7.125. EDC0249 ΓòÉΓòÉΓòÉ
  10488.  
  10489. The number of errors exceeds the limit. 
  10490.  
  10491. The number of errors has exceeded the number specified on the /N option. 
  10492.  
  10493. Recovery: Fix the errors or increase the error limit on the /N option. 
  10494.  
  10495.  
  10496. ΓòÉΓòÉΓòÉ 7.126. EDC0250 ΓòÉΓòÉΓòÉ
  10497.  
  10498. The maximum number of errors for one line has been exceeded. 
  10499.  
  10500. The compiler is unable to specify the location of each error in the listing 
  10501. because there are too many errors on one line. 
  10502.  
  10503. Recovery: Correct the errors or split the source line into multiple lines. 
  10504.  
  10505.  
  10506. ΓòÉΓòÉΓòÉ 7.127. EDC0260 ΓòÉΓòÉΓòÉ
  10507.  
  10508. Declaration cannot specify multiple sign type specifiers. 
  10509.  
  10510. A declaration can specify a signed or unsigned type, but not both. 
  10511.  
  10512. Recovery: Keep only one sign type specifier. 
  10513.  
  10514.  
  10515. ΓòÉΓòÉΓòÉ 7.128. EDC0261 ΓòÉΓòÉΓòÉ
  10516.  
  10517. Declaration cannot specify multiple length type specifiers. 
  10518.  
  10519. A declaration can specify a long or short type, but not both. 
  10520.  
  10521. Recovery: Keep only one length type specifier. 
  10522.  
  10523.  
  10524. ΓòÉΓòÉΓòÉ 7.129. EDC0262 ΓòÉΓòÉΓòÉ
  10525.  
  10526. Declaration cannot specify multiple type specifiers. 
  10527.  
  10528. A declaration can specify only one data type specifier.  Valid specifiers 
  10529. include: char, int, float and double. 
  10530.  
  10531. Recovery: Keep only one type specifier. 
  10532.  
  10533.  
  10534. ΓòÉΓòÉΓòÉ 7.130. EDC0263 ΓòÉΓòÉΓòÉ
  10535.  
  10536. Declaration cannot specify multiple linkage specifiers. 
  10537.  
  10538. A declaration can specify only one linkage type.  Valid linkage types include: 
  10539. _System, _Optlink, _Far16 _Cdecl, _Far16 _Pascal, and _Far16 _Fastcall. 
  10540.  
  10541. Recovery: Use only one linkage type. 
  10542.  
  10543.  
  10544. ΓòÉΓòÉΓòÉ 7.131. EDC0265 ΓòÉΓòÉΓòÉ
  10545.  
  10546. Declaration cannot specify multiple storage class specifiers. 
  10547.  
  10548. A declaration can specify only one storage class.  Valid storage classes 
  10549. include: auto, static, extern, register and typedef. 
  10550.  
  10551. Recovery: Keep only one storage class specifier. 
  10552.  
  10553.  
  10554. ΓòÉΓòÉΓòÉ 7.132. EDC0266 ΓòÉΓòÉΓòÉ
  10555.  
  10556. The sign type specifier cannot be used with float or double. 
  10557.  
  10558. A sign type specifiers signed and unsigned cannot be used with type float or 
  10559. double. 
  10560.  
  10561. Recovery: Ensure that the appropriate type is used, and remove the sign type 
  10562. specifier from the declaration.  Use type long double if a larger identifier is 
  10563. required. 
  10564.  
  10565.  
  10566. ΓòÉΓòÉΓòÉ 7.133. EDC0267 ΓòÉΓòÉΓòÉ
  10567.  
  10568. The short type specifier cannot be used with float or double. 
  10569.  
  10570. Recovery: Ensure that the appropriate type specifier is used, and remove the 
  10571. short type specifier. 
  10572.  
  10573.  
  10574. ΓòÉΓòÉΓòÉ 7.134. EDC0268 ΓòÉΓòÉΓòÉ
  10575.  
  10576. The long type specifier cannot be used with float. 
  10577.  
  10578. Recovery: Remove the long type specifier or use double instead of float. 
  10579.  
  10580.  
  10581. ΓòÉΓòÉΓòÉ 7.135. EDC0269 ΓòÉΓòÉΓòÉ
  10582.  
  10583. The long or short type specifier cannot be used with char. 
  10584.  
  10585. Recovery: Remove the length type specifier.  Use type int or short int if a 
  10586. larger identifier is required. 
  10587.  
  10588.  
  10589. ΓòÉΓòÉΓòÉ 7.136. EDC0270 ΓòÉΓòÉΓòÉ
  10590.  
  10591. The long or short type specifier cannot be used with void. 
  10592.  
  10593. No other type specifier can be used with type void. 
  10594.  
  10595. Recovery: Remove the length type specifier or the void. 
  10596.  
  10597.  
  10598. ΓòÉΓòÉΓòÉ 7.137. EDC0271 ΓòÉΓòÉΓòÉ
  10599.  
  10600. The sign type specifier cannot be used with void. 
  10601.  
  10602. The sign type specifiers signed and unsigned cannot be used with void. 
  10603.  
  10604. Recovery: Remove the sign type specifier or the void. 
  10605.  
  10606.  
  10607. ΓòÉΓòÉΓòÉ 7.138. EDC0272 ΓòÉΓòÉΓòÉ
  10608.  
  10609. The long or short type specifier cannot be used with struct, union or enum. 
  10610.  
  10611. No other type specifiers can be used with struct, union or enum. 
  10612.  
  10613. Recovery: Remove the length type specifier. 
  10614.  
  10615.  
  10616. ΓòÉΓòÉΓòÉ 7.139. EDC0273 ΓòÉΓòÉΓòÉ
  10617.  
  10618. The sign type specifier cannot be used with struct, union or enum. 
  10619.  
  10620. The sign type specifiers signed and unsigned cannot be used with struct, union 
  10621. or enum. 
  10622.  
  10623. Recovery: Remove the sign type specifier. 
  10624.  
  10625.  
  10626. ΓòÉΓòÉΓòÉ 7.140. EDC0274 ΓòÉΓòÉΓòÉ
  10627.  
  10628. The length type specifier cannot be used for variables declared with a typedef. 
  10629.  
  10630. No other type specifiers can be used for variables declared with a typedef. 
  10631.  
  10632. Recovery: Remove the length type specifier or the typedef. 
  10633.  
  10634.  
  10635. ΓòÉΓòÉΓòÉ 7.141. EDC0275 ΓòÉΓòÉΓòÉ
  10636.  
  10637. The sign type specifier cannot be used for variables declared with a typedef. 
  10638.  
  10639. Recovery: Remove the sign type specifier or the typedef. 
  10640.  
  10641.  
  10642. ΓòÉΓòÉΓòÉ 7.142. EDC0277 ΓòÉΓòÉΓòÉ
  10643.  
  10644. _Packed can only qualify a struct or union. 
  10645.  
  10646. Recovery: Remove the _Packed specifier from the declaration/definition, or 
  10647. ensure it qualifies a struct or union. 
  10648.  
  10649.  
  10650. ΓòÉΓòÉΓòÉ 7.143. EDC0278 ΓòÉΓòÉΓòÉ
  10651.  
  10652. Declaration cannot specify multiple &1 specifiers. 
  10653.  
  10654. Recovery: Ensure that only one &1 specifier is used. 
  10655.  
  10656.  
  10657. ΓòÉΓòÉΓòÉ 7.144. EDC0279 ΓòÉΓòÉΓòÉ
  10658.  
  10659. _Seg16 can only qualify a pointer type. 
  10660.  
  10661. Recovery: Remove the _Seg16 specifier from the declaration/definition, or 
  10662. ensure it qualifies a pointer. 
  10663.  
  10664.  
  10665. ΓòÉΓòÉΓòÉ 7.145. EDC0280 ΓòÉΓòÉΓòÉ
  10666.  
  10667. The predefined macro &1 cannot be redefined. 
  10668.  
  10669. The macro &1 is predefined.  You cannot redefine predefined macros. 
  10670.  
  10671. Recovery: Remove the redefine statement. 
  10672.  
  10673.  
  10674. ΓòÉΓòÉΓòÉ 7.146. EDC0281 ΓòÉΓòÉΓòÉ
  10675.  
  10676. The identifier &1 cannot be redeclared. 
  10677.  
  10678. Only external objects can be redeclared. 
  10679.  
  10680. Recovery: Delete or change the name of the extra declaration. 
  10681.  
  10682.  
  10683. ΓòÉΓòÉΓòÉ 7.147. EDC0282 ΓòÉΓòÉΓòÉ
  10684.  
  10685. The struct member &1 cannot be redeclared. 
  10686.  
  10687. You cannot redeclare the same struct member.  If you redeclare the structure 
  10688. itself, you must use the same tag. 
  10689.  
  10690. Recovery: Delete or change the name of the extra declaration. 
  10691.  
  10692.  
  10693. ΓòÉΓòÉΓòÉ 7.148. EDC0283 ΓòÉΓòÉΓòÉ
  10694.  
  10695. The tag &1 cannot be redefined as a tag of another type. 
  10696.  
  10697. The tag is already associated with another struct, union or enum type. 
  10698.  
  10699. Recovery: Delete or rename the tag. 
  10700.  
  10701.  
  10702. ΓòÉΓòÉΓòÉ 7.149. EDC0284 ΓòÉΓòÉΓòÉ
  10703.  
  10704. The label &1 cannot be redefined. 
  10705.  
  10706. The label has already been defined in the function (a label of the same name 
  10707. followed by a colon and a section of code already appeared in the same 
  10708. function).  It is not valid to redefine a label. 
  10709.  
  10710. Recovery: Change the name of one label. 
  10711.  
  10712.  
  10713. ΓòÉΓòÉΓòÉ 7.150. EDC0285 ΓòÉΓòÉΓòÉ
  10714.  
  10715. #undef cannot be used with the predefined macro &1. 
  10716.  
  10717. You cannot undefine predefined macros. 
  10718.  
  10719. Recovery: Delete the #undef directive. 
  10720.  
  10721.  
  10722. ΓòÉΓòÉΓòÉ 7.151. EDC0286 ΓòÉΓòÉΓòÉ
  10723.  
  10724. The redeclaration cannot specify a different storage class. 
  10725.  
  10726. The redeclaration, including type qualifiers (const, volatile), must be 
  10727. identical to the first declaration. Redeclaring basic types: The type (which 
  10728. includes the type specifiers and the length and sign adjectives) and the type 
  10729. qualifiers (const, volatile) must be the same. Redeclaring functions: The 
  10730. return type with its type qualifiers has to be the same.  If the function has 
  10731. been prototyped, the prototyped redeclarations must have an identical parameter 
  10732. list (the number and type of the parameters must be the same). Redeclaring 
  10733. pointers: They have to point at the same type (including the type qualifiers). 
  10734. Redeclaring arrays: Their members must be of the same type (including the type 
  10735. qualifiers).  The array size must be the same. Redeclaring enumerations, 
  10736. structures, and unions: They must have the same tag. 
  10737.  
  10738. Recovery: Ensure that the storage class of the subsequent declarations match 
  10739. the original declaration or remove one of the declarations. 
  10740.  
  10741.  
  10742. ΓòÉΓòÉΓòÉ 7.152. EDC0287 ΓòÉΓòÉΓòÉ
  10743.  
  10744. The goto label is not defined in function &1. 
  10745.  
  10746. The goto label is referenced but not defined in the function. The label 
  10747. definition (label followed by a colon and a section of code) must appear in the 
  10748. same function that references the label. 
  10749.  
  10750. Recovery: Define the goto label in the function or remove the reference. 
  10751.  
  10752.  
  10753. ΓòÉΓòÉΓòÉ 7.153. EDC0288 ΓòÉΓòÉΓòÉ
  10754.  
  10755. The void type can only be used with functions and pointers. 
  10756.  
  10757. The type void can only be used as the return type or parameter list of a 
  10758. function, or with a pointer indicating the type to which it is pointed.  No 
  10759. other object can be of type void. 
  10760.  
  10761. Recovery: Ensure that the declaration uses type void correctly. 
  10762.  
  10763.  
  10764. ΓòÉΓòÉΓòÉ 7.154. EDC0289 ΓòÉΓòÉΓòÉ
  10765.  
  10766. The typedef name &1 cannot be redefined. 
  10767.  
  10768. Redefinitions of typedef names are not allowed even if the definitions occur at 
  10769. file scope with identical type specifiers. 
  10770.  
  10771. Recovery: Remove identical definitions or, for a new definition, rename the 
  10772. typedef. 
  10773.  
  10774.  
  10775. ΓòÉΓòÉΓòÉ 7.155. EDC0290 ΓòÉΓòÉΓòÉ
  10776.  
  10777. The auto storage class cannot be used with external identifier &1. 
  10778.  
  10779. Identifiers may only be declared with auto storage class if they are declared 
  10780. inside a block. 
  10781.  
  10782. Recovery: Remove the auto storage class specifier or change the scope of the 
  10783. identifier so that it is no longer at file scope. 
  10784.  
  10785.  
  10786. ΓòÉΓòÉΓòÉ 7.156. EDC0291 ΓòÉΓòÉΓòÉ
  10787.  
  10788. The register storage class cannot be used with external identifier &1. 
  10789.  
  10790. Identifiers may only be declared with register storage class if they are 
  10791. declared inside a block. 
  10792.  
  10793. Recovery: Remove the register storage class specifier or change the scope of 
  10794. the identifier so that it is no longer at file scope. 
  10795.  
  10796.  
  10797. ΓòÉΓòÉΓòÉ 7.157. EDC0292 ΓòÉΓòÉΓòÉ
  10798.  
  10799. The block scope declaration of object &1 must be compatible with its external 
  10800. declaration. 
  10801.  
  10802. This block scope redeclaration of the external object is incompatible with the 
  10803. previous external declaration. 
  10804.  
  10805. Recovery: Ensure that the block scope declaration is identical with the file 
  10806. scope declaration, or remove one of the declarations. 
  10807.  
  10808.  
  10809. ΓòÉΓòÉΓòÉ 7.158. EDC0293 ΓòÉΓòÉΓòÉ
  10810.  
  10811. The static storage class cannot be used with functions declared at block scope. 
  10812.  
  10813. Recovery: Place the declaration of the static function at file scope, or remove 
  10814. the storage class specifier. 
  10815.  
  10816.  
  10817. ΓòÉΓòÉΓòÉ 7.159. EDC0294 ΓòÉΓòÉΓòÉ
  10818.  
  10819. The typedef storage class cannot be used on function definitions. 
  10820.  
  10821. The typedef storage class can only be used with function declarations to 
  10822. declare a function type.  A typedef name cannot carry the information of a 
  10823. function definition, it cannot specify the part of code to be executed when a 
  10824. function is called. 
  10825.  
  10826. Recovery: Remove the typedef storage class. 
  10827.  
  10828.  
  10829. ΓòÉΓòÉΓòÉ 7.160. EDC0297 ΓòÉΓòÉΓòÉ
  10830.  
  10831. Only functions or typedefs of functions can be given a linkage type. 
  10832.  
  10833. You have applied either #pragma linkage or a linkage keyword to an identifier 
  10834. which does not correspond to a function type or a typedef of a function. 
  10835.  
  10836. Recovery: If the error applies to an identifier used on a #pragma linkage 
  10837. directive, then change the name specified on the #pragma linkage directive or 
  10838. remove the directive.  If the error applies to an identifier used with a 
  10839. linkage keyword, then remove the keyword. 
  10840.  
  10841.  
  10842. ΓòÉΓòÉΓòÉ 7.161. EDC0298 ΓòÉΓòÉΓòÉ
  10843.  
  10844. A #pragma &1 directive was previously specified for the object &2. 
  10845.  
  10846. More than one #pragma linkage directive was specified for the same object. 
  10847.  
  10848. Recovery: Remove the extra #pragma linkage directives. 
  10849.  
  10850.  
  10851. ΓòÉΓòÉΓòÉ 7.162. EDC0299 ΓòÉΓòÉΓòÉ
  10852.  
  10853. A map name was previously given to the object &1. 
  10854.  
  10855. An object can map to only one name.  See -- Reference prag370 not found -- for 
  10856. more information on #pragma map. 
  10857.  
  10858. Recovery: Remove the extra #pragma map directives. 
  10859.  
  10860.  
  10861. ΓòÉΓòÉΓòÉ 7.163. EDC0300 ΓòÉΓòÉΓòÉ
  10862.  
  10863. The floating point constant is not valid. 
  10864.  
  10865. See the SAA CPI C Reference for a description of a floating-point constant. 
  10866.  
  10867. Recovery: Ensure that the floating-point constant does not contain any 
  10868. characters that are not valid. 
  10869.  
  10870.  
  10871. ΓòÉΓòÉΓòÉ 7.164. EDC0301 ΓòÉΓòÉΓòÉ
  10872.  
  10873. A const qualified object cannot be modified. 
  10874.  
  10875. The value of a const cannot be changed.  Increment/decrement can only be 
  10876. performed on objects that are not constants. 
  10877.  
  10878. Recovery: Either do not declare the object with the const type qualifier, or do 
  10879. not use the object in an increment/decrement operation. 
  10880.  
  10881.  
  10882. ΓòÉΓòÉΓòÉ 7.165. EDC0302 ΓòÉΓòÉΓòÉ
  10883.  
  10884. An enum constant must be a constant integral expression. 
  10885.  
  10886. If an enum constant is initialized in the definition of an enum tag, the value 
  10887. that the constant is initialized to must be an integral expression. 
  10888.  
  10889. Recovery: Remove the initial value, or ensure that the initial value is an 
  10890. integral constant expression. 
  10891.  
  10892.  
  10893. ΓòÉΓòÉΓòÉ 7.166. EDC0303 ΓòÉΓòÉΓòÉ
  10894.  
  10895. Only function names can be specified in a #pragma &1 directive. 
  10896.  
  10897. Recovery: Make sure that the spelling of the function name is correct and that 
  10898. the function name has been declared before you use it in this directive. 
  10899.  
  10900.  
  10901. ΓòÉΓòÉΓòÉ 7.167. EDC0307 ΓòÉΓòÉΓòÉ
  10902.  
  10903. The floating-point constant is too large and is converted to an infinity. 
  10904.  
  10905. The magnitude of the floating-point constant specified is too large. The number 
  10906. is converted into positive or negative infinity, depending on the sign of the 
  10907. number. 
  10908.  
  10909. Recovery: Make sure this is what was intended. 
  10910.  
  10911.  
  10912. ΓòÉΓòÉΓòÉ 7.168. EDC0308 ΓòÉΓòÉΓòÉ
  10913.  
  10914. An enum constant must be an integral constant expression that has a value 
  10915. representable as an int. 
  10916.  
  10917. If an enum constant is initialized in the definition of an enum tag, the value 
  10918. that the constant is initialized to must be an integral expression that has a 
  10919. value representable as an int. 
  10920.  
  10921. Recovery: Remove the initial value, or ensure that the initial value is an 
  10922. integral constant expression that has a value representable as an int. 
  10923.  
  10924.  
  10925. ΓòÉΓòÉΓòÉ 7.169. EDC0309 ΓòÉΓòÉΓòÉ
  10926.  
  10927. A linkage type must appear to the left of the identifier to which it applies. 
  10928.  
  10929. Linkage keywords must appear immediately to the left of the identifier they 
  10930. qualify.  For example, 
  10931.  
  10932.    int _System foo();
  10933.  
  10934. Recovery: Move the linkage keyword to the left of the identifier. 
  10935.  
  10936.  
  10937. ΓòÉΓòÉΓòÉ 7.170. EDC0320 ΓòÉΓòÉΓòÉ
  10938.  
  10939. Redeclaration cannot specify fewer parameters than the previous declaration. 
  10940.  
  10941. The prototyped redeclaration of the function is not correct. The redeclaration 
  10942. contains fewer parameters than the previous declaration. 
  10943.  
  10944. Recovery: Make the redeclaration consistent with the original declaration. 
  10945.  
  10946.  
  10947. ΓòÉΓòÉΓòÉ 7.171. EDC0321 ΓòÉΓòÉΓòÉ
  10948.  
  10949. Redeclaration cannot specify the additional parameter &1. 
  10950.  
  10951. The prototyped redeclaration of the function is not correct. The function 
  10952. redeclaration contains more parameters than the previous declaration. 
  10953.  
  10954. Recovery: Make the redeclaration consistent with the original declaration. 
  10955.  
  10956.  
  10957. ΓòÉΓòÉΓòÉ 7.172. EDC0322 ΓòÉΓòÉΓòÉ
  10958.  
  10959. Type of the parameter &1 cannot conflict with previous declaration of function 
  10960. &2. 
  10961.  
  10962. The type of this parameter is incompatible with the type of the corresponding 
  10963. parameter in the previous declaration of the function. 
  10964.  
  10965. Recovery: Ensure that the subsequent declaration or function call matches the 
  10966. prototype in both the number and type of parameters.  If the parameter in the 
  10967. prototype is an incomplete struct or union tag, declare the incomplete tag at 
  10968. file scope before the function is prototyped. 
  10969.  
  10970.  
  10971. ΓòÉΓòÉΓòÉ 7.173. EDC0323 ΓòÉΓòÉΓòÉ
  10972.  
  10973. Redeclaration cannot specify fewer parameters before ellipsis than the previous 
  10974. declaration. 
  10975.  
  10976. The prototyped redeclaration of the function is not correct. Fewer parameters 
  10977. appear before the ellipsis in this function redeclaration than the previous 
  10978. declaration. 
  10979.  
  10980. Recovery: Make sure that the redeclaration is consistent with the previous 
  10981. declaration. 
  10982.  
  10983.  
  10984. ΓòÉΓòÉΓòÉ 7.174. EDC0324 ΓòÉΓòÉΓòÉ
  10985.  
  10986. The void type specifier cannot be used with other type specifiers. 
  10987.  
  10988. When void is used in the parameter list of a prototyped function declaration, 
  10989. it indicates that the function does not expect any parameters.  Therefore, if 
  10990. void is used in a prototyped declaration, it must be the only type descriptor 
  10991. in the parameter list and must not appear more than once in the list. 
  10992.  
  10993. Recovery: If the function does not require any parameters, use void only once 
  10994. in the parameter list.  If the function requires parameters, remove void from 
  10995. the parameter prototype list. 
  10996.  
  10997.  
  10998. ΓòÉΓòÉΓòÉ 7.175. EDC0325 ΓòÉΓòÉΓòÉ
  10999.  
  11000. The type of the parameters must be specified in a prototype. 
  11001.  
  11002. A prototype specifies the number and the type of the parameters that a function 
  11003. requires.  A prototype that does not specify the type of the parameters is not 
  11004. correct, for example, 
  11005.  
  11006.   fred(a,b);
  11007.  
  11008. Recovery: Give the type of the parameters in the function prototype. 
  11009.  
  11010.  
  11011. ΓòÉΓòÉΓòÉ 7.176. EDC0326 ΓòÉΓòÉΓòÉ
  11012.  
  11013. The only storage class that can be used with parameters is register. 
  11014.  
  11015. Recovery: Remove the storage class specified in the parameter declaration or 
  11016. use the register storage class. 
  11017.  
  11018.  
  11019. ΓòÉΓòÉΓòÉ 7.177. EDC0327 ΓòÉΓòÉΓòÉ
  11020.  
  11021. Redeclarations and function calls must be compatible with prototype. 
  11022.  
  11023. The number or the type of the parameters (or both) on the call does not agree 
  11024. with the specification given in the function prototyped declaration. 
  11025.  
  11026. Recovery: Make the call consistent with the declaration. 
  11027.  
  11028.  
  11029. ΓòÉΓòÉΓòÉ 7.178. EDC0328 ΓòÉΓòÉΓòÉ
  11030.  
  11031. The function call cannot have more arguments than the prototype specifies. 
  11032.  
  11033. The function call is not valid.  There are more arguments in this function call 
  11034. than there were parameters specified in the function declaration. 
  11035.  
  11036. Recovery: Make the call consistent with the declaration. 
  11037.  
  11038.  
  11039. ΓòÉΓòÉΓòÉ 7.179. EDC0329 ΓòÉΓòÉΓòÉ
  11040.  
  11041. Object &1 must be specified in the parameter list for function &2. 
  11042.  
  11043. For function definitions that do not use the prototype style, a list of 
  11044. parameter names usually appears between the parentheses following the function 
  11045. name.  A list of declarations that indicates the type of the parameters 
  11046. follows.  In this case, the declaration of an object that was not listed 
  11047. between the parentheses was found in the parameter declaration list. 
  11048.  
  11049. Recovery: Make sure that the declaration list only specified parameters that 
  11050. appear between the parentheses of the function. 
  11051.  
  11052.  
  11053. ΓòÉΓòÉΓòÉ 7.180. EDC0330 ΓòÉΓòÉΓòÉ
  11054.  
  11055. A parameter cannot be declared when function &1 parentheses are empty. 
  11056.  
  11057. For function definitions that do no use the prototype style, a list of 
  11058. parameter names usually appears between parentheses following the function 
  11059. name.  A list of declarations that indicates the type of the parameters 
  11060. follows.  In this case, objects are declared in the parameter declaration list 
  11061. but no parameter appeared between the function parentheses. 
  11062.  
  11063. Recovery: Make sure that the declaration list only specifies parameters that 
  11064. were listed between the function parentheses. 
  11065.  
  11066.  
  11067. ΓòÉΓòÉΓòÉ 7.181. EDC0331 ΓòÉΓòÉΓòÉ
  11068.  
  11069. Parentheses must appear in the declaration of function &1. 
  11070.  
  11071. The syntax of the declaration is not correct.  The compiler assumes it is the 
  11072. declaration of a function in which the parentheses surrounding the parameters 
  11073. are missing. 
  11074.  
  11075. Recovery: Check the syntax of the declaration.  Make sure the object name and 
  11076. type are properly specified.  Check for incorrect spelling or missing 
  11077. parentheses. 
  11078.  
  11079.  
  11080. ΓòÉΓòÉΓòÉ 7.182. EDC0332 ΓòÉΓòÉΓòÉ
  11081.  
  11082. The function call cannot have fewer arguments than the prototype specifies. 
  11083.  
  11084. The function call is not valid.  There are fewer arguments in this function 
  11085. call than there were parameters specified in the function declaration. 
  11086.  
  11087. Recovery: Make the call consistent with the declaration. 
  11088.  
  11089.  
  11090. ΓòÉΓòÉΓòÉ 7.183. EDC0333 ΓòÉΓòÉΓòÉ
  11091.  
  11092. The parameters in the definition of the function &1 must be named. 
  11093.  
  11094. For function definitions, all the parameters in the parameter list must be 
  11095. named.  It is invalid to specify only the parameter's type in a function 
  11096. definition head. 
  11097.  
  11098. Recovery: Name the parameters in the parameter list. 
  11099.  
  11100.  
  11101. ΓòÉΓòÉΓòÉ 7.184. EDC0334 ΓòÉΓòÉΓòÉ
  11102.  
  11103. External identifier &1 cannot be initialized more than once. 
  11104.  
  11105. Recovery: Check the previous declarations of the object.  Make sure that only 
  11106. one declaration specifies an initializer. 
  11107.  
  11108.  
  11109. ΓòÉΓòÉΓòÉ 7.185. EDC0335 ΓòÉΓòÉΓòÉ
  11110.  
  11111. The declarations of the function &1 must be consistent in their use of the 
  11112. ellipsis. 
  11113.  
  11114. If an ellipsis is used in a function declaration, the ellipsis must be present 
  11115. in all the function redeclarations.  If no ellipsis is used in a function 
  11116. declaration, the following redeclarations cannot specify an ellipsis.  Any 
  11117. redeclaration that does not use the ellipsis consistently is not correct. 
  11118.  
  11119. Recovery: Make the redeclaration consistent with the previous declaration. 
  11120.  
  11121.  
  11122. ΓòÉΓòÉΓòÉ 7.186. EDC0336 ΓòÉΓòÉΓòÉ
  11123.  
  11124. Declaration of function &1 cannot specify more parameters than previous 
  11125. declaration. 
  11126.  
  11127. The prototyped redeclaration of the function is not correct. There are more 
  11128. parameters in the function redeclaration than there were in the previous 
  11129. declaration. 
  11130.  
  11131. Recovery: Make the redeclaration consistent with the previous declaration. 
  11132.  
  11133.  
  11134. ΓòÉΓòÉΓòÉ 7.187. EDC0337 ΓòÉΓòÉΓòÉ
  11135.  
  11136. Declaration list cannot appear when parameters in parentheses are prototyped. 
  11137.  
  11138. For function definitions that do not use the prototype style, a list of 
  11139. parameter names usually appears between parentheses following the function 
  11140. name.  A list of declarations that indicates the type of parameters follows. 
  11141. In this case, the parameters between the parentheses are prototyped.  These two 
  11142. styles of declaration cannot be mixed. 
  11143.  
  11144. Recovery: Remove either the function declaration list or the type given to the 
  11145. parameters in the function parentheses. 
  11146.  
  11147.  
  11148. ΓòÉΓòÉΓòÉ 7.188. EDC0338 ΓòÉΓòÉΓòÉ
  11149.  
  11150. Prototype &1 must contain widened types if prototype and nonprototype 
  11151. declarations are mixed. 
  11152.  
  11153. Nonprototype function declarations, popularly known as K&R prototypes, only 
  11154. specify the function return type.  The function parentheses are empty; no 
  11155. information about the parameters is given. 
  11156.  
  11157. Nonprototype function definitions specify a list of parameter names appearing 
  11158. between the function parentheses followed by a list of declarations (located 
  11159. between the parentheses and the opening left brace of the function) that 
  11160. indicates the type of the parameters.  A nonprototype function definition is 
  11161. also known as a K&R function definition. 
  11162.  
  11163. A prototype function declaration or definition specifies the type and the 
  11164. number of the parameters in the parameter declaration list that appears inside 
  11165. the function parenthesis.  A prototype function declaration is better known as 
  11166. an ANSI prototype, and a prototype function definition is better known as an 
  11167. ANSI function definition. 
  11168.  
  11169. When the nonprototype function declarations/definitions are mixed with 
  11170. prototype declarations, the type of each prototype parameter must be compatible 
  11171. with the type that results from the application of the default argument 
  11172. promotions. 
  11173.  
  11174. Most types are already compatible with their default argument promotions.  The 
  11175. only ones that are not are char, short, and float.  Their promoted versions 
  11176. are, respectively, int, int, and double. 
  11177.  
  11178. This message can occur in several situations.  The most common is when mixing 
  11179. ANSI prototypes with K&R function definitions.  If a function is defined using 
  11180. a K&R-style header, then its prototype, if present, must specify widened 
  11181. versions of the parameter types.  Here is an example. 
  11182.  
  11183.   int function( short );
  11184.   int function( x )
  11185.     short x;
  11186.   {  }
  11187.  
  11188. This is invalid because the function has a K&R-style definition and the 
  11189. prototype does not specify the widened version of the parameter. To be correct, 
  11190. the prototype should be 
  11191.  
  11192.   int function( int );
  11193.  
  11194. because int is the widened version of short. 
  11195.  
  11196. Another possible solution is to change the function definition to use ANSI 
  11197. syntax.  This particular example would be changed to 
  11198.  
  11199.   int function( short );
  11200.   int function( short x )
  11201.   {  }
  11202.  
  11203. This second solution is preferable, but either solution is equally valid. 
  11204.  
  11205. Recovery: Give a promoted type to the parameter in the prototype function 
  11206. declaration. 
  11207.  
  11208.  
  11209. ΓòÉΓòÉΓòÉ 7.189. EDC0339 ΓòÉΓòÉΓòÉ
  11210.  
  11211. The function cannot be redeclared with a different linkage type. 
  11212.  
  11213. The redeclaration of this function cannot have a different linkage type than 
  11214. the previous declaration.  The function could have been given a linkage type 
  11215. through a #pragma linkage directive, a typedef, or in a previous declaration. 
  11216.  
  11217. Recovery: Ensure that the linkage type of any subsequent declarations matches 
  11218. the original declaration or remove one of the declarations. 
  11219.  
  11220.  
  11221. ΓòÉΓòÉΓòÉ 7.190. EDC0347 ΓòÉΓòÉΓòÉ
  11222.  
  11223. Syntax error: possible missing &1 or &2? 
  11224.  
  11225. A syntax error has occurred. This message lists the tokens that the parser 
  11226. expected and did not find. 
  11227.  
  11228. Recovery: Correct the syntax error and compile again. 
  11229.  
  11230.  
  11231. ΓòÉΓòÉΓòÉ 7.191. EDC0348 ΓòÉΓòÉΓòÉ
  11232.  
  11233. Syntax error: possible missing &1? 
  11234.  
  11235. A syntax error has occurred. This message lists the tokens that the parser 
  11236. expected and did not find. 
  11237.  
  11238. Recovery: Correct the syntax error and compile again. 
  11239.  
  11240.  
  11241. ΓòÉΓòÉΓòÉ 7.192. EDC0349 ΓòÉΓòÉΓòÉ
  11242.  
  11243. Unexpected text &1 ignored. 
  11244.  
  11245. A syntax error has occurred. This message lists the tokens that were discarded 
  11246. by the parser when it tried to recover from the syntax error. 
  11247.  
  11248. Recovery: Correct the syntax error and compile again. 
  11249.  
  11250.  
  11251. ΓòÉΓòÉΓòÉ 7.193. EDC0350 ΓòÉΓòÉΓòÉ
  11252.  
  11253. Syntax error. 
  11254.  
  11255. See the SAA CPI C Reference for a complete description of C syntax rules. 
  11256.  
  11257. Recovery: Correct the syntax error and compile again. 
  11258.  
  11259.  
  11260. ΓòÉΓòÉΓòÉ 7.194. EDC0356 ΓòÉΓòÉΓòÉ
  11261.  
  11262. A constant expression can not contain a comma operator. 
  11263.  
  11264. Recovery: Modify the constant expression to remove the comma operator. 
  11265.  
  11266.  
  11267. ΓòÉΓòÉΓòÉ 7.195. EDC0370 ΓòÉΓòÉΓòÉ
  11268.  
  11269. Operand of offsetof macro must be a struct or a union. 
  11270.  
  11271. The first operand of the offsetof macro must be a structure or union type. 
  11272.  
  11273. Recovery: Change the operand. 
  11274.  
  11275.  
  11276. ΓòÉΓòÉΓòÉ 7.196. EDC0371 ΓòÉΓòÉΓòÉ
  11277.  
  11278. The dot operator cannot be applied to an incomplete struct or union. 
  11279.  
  11280. A structure or union is incomplete when the definition of its tag has not been 
  11281. specified.  A struct or union tag is undefined when the list describing the 
  11282. name and type of its members has not been specified. 
  11283.  
  11284. Recovery: Give a definition of the tag before the operator is applied to the 
  11285. structure. 
  11286.  
  11287.  
  11288. ΓòÉΓòÉΓòÉ 7.197. EDC0372 ΓòÉΓòÉΓòÉ
  11289.  
  11290. The arrow operator cannot be applied to an incomplete struct or union. 
  11291.  
  11292. A structure or union is incomplete when the definition of its tag has not been 
  11293. specified.  A struct or union tag is undefined when the list describing the 
  11294. name and type of its members has not been specified. 
  11295.  
  11296. Recovery: Give a definition of the tag before the operator is applied to the 
  11297. structure. 
  11298.  
  11299.  
  11300. ΓòÉΓòÉΓòÉ 7.198. EDC0397 ΓòÉΓòÉΓòÉ
  11301.  
  11302. Macro parameter list is not complete. Either the parameters are not fully 
  11303. specified or &1 is missing. 
  11304.  
  11305. Recovery: Complete the specification of the macro parameter list. 
  11306.  
  11307.  
  11308. ΓòÉΓòÉΓòÉ 7.199. EDC0399 ΓòÉΓòÉΓòÉ
  11309.  
  11310. A character constant must contain at least one character. 
  11311.  
  11312. Recovery: Put at least one character inside the pair of single quotation marks. 
  11313.  
  11314.  
  11315. ΓòÉΓòÉΓòÉ 7.200. EDC0400 ΓòÉΓòÉΓòÉ
  11316.  
  11317. String literals must end before the source line unless the continuation symbol 
  11318. is used. 
  11319.  
  11320. String literals must end before the end of the source line. You can construct 
  11321. literals which are longer than one line by using the line continuation sequence 
  11322. (backslash (\) at the end of the line) or by using the concatenation of 
  11323. adjacent string literals. 
  11324.  
  11325. Recovery: Either end the string with a quotation mark or use the continuation 
  11326. sequence. 
  11327.  
  11328.  
  11329. ΓòÉΓòÉΓòÉ 7.201. EDC0401 ΓòÉΓòÉΓòÉ
  11330.  
  11331. The character is not valid. 
  11332.  
  11333. A character not in the C source character set has been encountered. 
  11334.  
  11335. Recovery: Remove the character.  Check the syntax. 
  11336.  
  11337.  
  11338. ΓòÉΓòÉΓòÉ 7.202. EDC0402 ΓòÉΓòÉΓòÉ
  11339.  
  11340. Parameter list cannot specify fewer parameters than required by macro 
  11341. definition. 
  11342.  
  11343. Fewer parameters than required have been specified on a macro invocation. 
  11344.  
  11345. Recovery: Make the number of parameters consistent with the macro definition. 
  11346.  
  11347.  
  11348. ΓòÉΓòÉΓòÉ 7.203. EDC0403 ΓòÉΓòÉΓòÉ
  11349.  
  11350. The #line directive must specify a string literal or a new-line character. 
  11351.  
  11352. The integer value in the #line directive must be followed by a string literal 
  11353. or the end of the line. 
  11354.  
  11355. Recovery: Correct the #line directive. 
  11356.  
  11357.  
  11358. ΓòÉΓòÉΓòÉ 7.204. EDC0404 ΓòÉΓòÉΓòÉ
  11359.  
  11360. End of file was reached before end of comment that started on line &1. 
  11361.  
  11362. A comment that was not terminated has been detected.  The beginning of the 
  11363. comment was on the specified line. 
  11364.  
  11365. Recovery: End the comment before the file ends. 
  11366.  
  11367.  
  11368. ΓòÉΓòÉΓòÉ 7.205. EDC0405 ΓòÉΓòÉΓòÉ
  11369.  
  11370. A new-line character is required. 
  11371.  
  11372. A character sequence was encountered when the preprocessor required a new-line 
  11373. character. 
  11374.  
  11375.  
  11376. ΓòÉΓòÉΓòÉ 7.206. EDC0406 ΓòÉΓòÉΓòÉ
  11377.  
  11378. Preprocessing token # must be followed by a parameter. 
  11379.  
  11380. The # preprocessor operator may only be applied to a macro parameter. 
  11381.  
  11382. Recovery: Place a parameter after the # token, or remove the token. 
  11383.  
  11384.  
  11385. ΓòÉΓòÉΓòÉ 7.207. EDC0407 ΓòÉΓòÉΓòÉ
  11386.  
  11387. The #include directive is not valid. 
  11388.  
  11389. The #include file specifier is missing or invalid. 
  11390.  
  11391. Recovery: Check the spelling and syntax of the #include file path. 
  11392.  
  11393.  
  11394. ΓòÉΓòÉΓòÉ 7.208. EDC0408 ΓòÉΓòÉΓòÉ
  11395.  
  11396. A #if, #elif, #ifdef or #ifndef block must end with a #endif. 
  11397.  
  11398. Recovery: End the conditional preprocessor statements with a #endif. 
  11399.  
  11400.  
  11401. ΓòÉΓòÉΓòÉ 7.209. EDC0409 ΓòÉΓòÉΓòÉ
  11402.  
  11403. A macro name on &1 directive is expected. 
  11404.  
  11405. Recovery: Make sure that a macro name follows the #define, #undef, #ifdef, or 
  11406. #ifndef preprocessor directive. 
  11407.  
  11408.  
  11409. ΓòÉΓòÉΓòÉ 7.210. EDC0410 ΓòÉΓòÉΓòÉ
  11410.  
  11411. A #elif can only appear within a #if, #elif, #ifdef or #ifndef block. 
  11412.  
  11413. Recovery: Delete the #elif statement, or place it within a conditional 
  11414. preprocessor block.  Check for misplaced braces. 
  11415.  
  11416.  
  11417. ΓòÉΓòÉΓòÉ 7.211. EDC0411 ΓòÉΓòÉΓòÉ
  11418.  
  11419. A #else can only appear within a #if, #elif, #ifdef or #ifndef block. 
  11420.  
  11421. Recovery: Delete the #else statement, or place it within a conditional 
  11422. preprocessor block.  Check for misplaced braces. 
  11423.  
  11424.  
  11425. ΓòÉΓòÉΓòÉ 7.212. EDC0412 ΓòÉΓòÉΓòÉ
  11426.  
  11427. A #endif must follow a #if, #elif, #ifdef or #ifndef block. 
  11428.  
  11429. Recovery: Delete the #endif statement, or place it after a conditional 
  11430. preprocessor block. 
  11431.  
  11432.  
  11433. ΓòÉΓòÉΓòÉ 7.213. EDC0413 ΓòÉΓòÉΓòÉ
  11434.  
  11435. #elif cannot follow #else. 
  11436.  
  11437. The #elif directive may not follow a #else directive within a #if, #elif, 
  11438. #ifdef or #ifndef block. 
  11439.  
  11440. Recovery: Remove the #elif or the #else. 
  11441.  
  11442.  
  11443. ΓòÉΓòÉΓòÉ 7.214. EDC0414 ΓòÉΓòÉΓòÉ
  11444.  
  11445. End of file is not expected. 
  11446.  
  11447. The end of the source file has been encountered prematurely. 
  11448.  
  11449. Recovery: Check for misplaced braces. 
  11450.  
  11451.  
  11452. ΓòÉΓòÉΓòÉ 7.215. EDC0415 ΓòÉΓòÉΓòÉ
  11453.  
  11454. Text is too long. 
  11455.  
  11456. The specified token is too long to be processed.  This condition arises when a 
  11457. numeric literal with many leading zeros or a floating point literal with many 
  11458. trailing digits in the fraction is coded. 
  11459.  
  11460. Recovery: Create a shorter token. 
  11461.  
  11462.  
  11463. ΓòÉΓòÉΓòÉ 7.216. EDC0416 ΓòÉΓòÉΓòÉ
  11464.  
  11465. The integer constant suffix is not valid. 
  11466.  
  11467. The suffix of the specified constant is not valid. 
  11468.  
  11469.  
  11470. ΓòÉΓòÉΓòÉ 7.217. EDC0417 ΓòÉΓòÉΓòÉ
  11471.  
  11472. Integer constant is out of range. 
  11473.  
  11474. The specified constant is too large to be represented by an unsigned long int. 
  11475.  
  11476. Recovery: The constant integer must have a value less than 4294967296. 
  11477.  
  11478.  
  11479. ΓòÉΓòÉΓòÉ 7.218. EDC0418 ΓòÉΓòÉΓòÉ
  11480.  
  11481. Escape character &1 is not valid and is ignored. 
  11482.  
  11483. An escape sequence that is not valid has been encountered in a string literal 
  11484. or a character literal.  It is replaced by the character following the 
  11485. backslash (\). 
  11486.  
  11487. Recovery: Change or remove the escape sequence. 
  11488.  
  11489.  
  11490. ΓòÉΓòÉΓòÉ 7.219. EDC0419 ΓòÉΓòÉΓòÉ
  11491.  
  11492. A character literal must end before the end of a line. 
  11493.  
  11494. Character literals must be terminated before the end of the source line. 
  11495.  
  11496. Recovery: End the character literal before the end of the line.  Check for 
  11497. misplaced quotation marks. 
  11498.  
  11499.  
  11500. ΓòÉΓòÉΓòÉ 7.220. EDC0420 ΓòÉΓòÉΓòÉ
  11501.  
  11502. The ## operator cannot appear first or last in the macro replacement list. 
  11503.  
  11504. The ## preprocessor operator must not appear first or last in the macro 
  11505. replacement list. 
  11506.  
  11507.  
  11508. ΓòÉΓòÉΓòÉ 7.221. EDC0421 ΓòÉΓòÉΓòÉ
  11509.  
  11510. The macro parameter list is incorrect. 
  11511.  
  11512. The macro parameter list must be empty, a single identifier, or a list of 
  11513. identifiers separated by commas. 
  11514.  
  11515. Recovery: Correct the parameter list. 
  11516.  
  11517.  
  11518. ΓòÉΓòÉΓòÉ 7.222. EDC0422 ΓòÉΓòÉΓòÉ
  11519.  
  11520. Parameter &1 cannot be redefined in the macro parameter list. 
  11521.  
  11522. The identifiers in the macro parameter list must be distinct. 
  11523.  
  11524. Recovery: Change the identifier name in the parameter list. 
  11525.  
  11526.  
  11527. ΓòÉΓòÉΓòÉ 7.223. EDC0423 ΓòÉΓòÉΓòÉ
  11528.  
  11529. Macro name &1 cannot be redefined. 
  11530.  
  11531. A macro may be #defined multiple time only if the definitions are identical 
  11532. except for white space. 
  11533.  
  11534. Recovery: change the macro definition to be identical to the preceding one, or 
  11535. remove it. 
  11536.  
  11537.  
  11538. ΓòÉΓòÉΓòÉ 7.224. EDC0424 ΓòÉΓòÉΓòÉ
  11539.  
  11540. The expression on the #if or #elif directive is not a valid constant 
  11541. expression. 
  11542.  
  11543. Recovery: Replace the expression that controls #if or #elif by a constant 
  11544. integral expression. 
  11545.  
  11546.  
  11547. ΓòÉΓòÉΓòÉ 7.225. EDC0425 ΓòÉΓòÉΓòÉ
  11548.  
  11549. Parameter list cannot specify more parameters than required by macro 
  11550. definition. 
  11551.  
  11552. The number of arguments specified on a macro invocation exceeds the number of 
  11553. parameters for the macro. 
  11554.  
  11555. Recovery: Make the number of arguments consistent with the macro definition. 
  11556.  
  11557.  
  11558. ΓòÉΓòÉΓòÉ 7.226. EDC0426 ΓòÉΓòÉΓòÉ
  11559.  
  11560. The #error text is too long. 
  11561.  
  11562. The text specified for the #error directive is too long to be processed.  Like 
  11563. a string literal, the upper limit allowed for #error text is 4096. 
  11564.  
  11565. Recovery: Specify a shorter message. 
  11566.  
  11567.  
  11568. ΓòÉΓòÉΓòÉ 7.227. EDC0427 ΓòÉΓòÉΓòÉ
  11569.  
  11570. #error &1. 
  11571.  
  11572. This is the message issued by the #error directive. 
  11573.  
  11574. Recovery: Because this is a user-created message, the recovery depends on the 
  11575. nature of the error. 
  11576.  
  11577.  
  11578. ΓòÉΓòÉΓòÉ 7.228. EDC0428 ΓòÉΓòÉΓòÉ
  11579.  
  11580. A preprocessing directive must end before the end of a line. 
  11581.  
  11582. The end of line has been encountered while scanning a preprocessing directive. 
  11583.  
  11584.  
  11585. ΓòÉΓòÉΓòÉ 7.229. EDC0429 ΓòÉΓòÉΓòÉ
  11586.  
  11587. String literal cannot exceed maximum length of 4096. 
  11588.  
  11589. A string constant of length greater than 4096 characters was encountered. 
  11590.  
  11591. Recovery: Specify a shorter string literal. 
  11592.  
  11593.  
  11594. ΓòÉΓòÉΓòÉ 7.230. EDC0430 ΓòÉΓòÉΓòÉ
  11595.  
  11596. The preprocessing directive &1 is invalid. 
  11597.  
  11598. An unrecognized preprocessing directive has been encountered. 
  11599.  
  11600. Recovery: Check the spelling and syntax or remove the invalid directive. 
  11601.  
  11602.  
  11603. ΓòÉΓòÉΓòÉ 7.231. EDC0431 ΓòÉΓòÉΓòÉ
  11604.  
  11605. The end of a #include file was encountered before the end of the comment. 
  11606.  
  11607. Recovery: End the comment before ending the #include file.  Check for misplaced 
  11608. or missing punctuation. 
  11609.  
  11610.  
  11611. ΓòÉΓòÉΓòÉ 7.232. EDC0432 ΓòÉΓòÉΓòÉ
  11612.  
  11613. The end of file was encountered immediately after a continuation line. 
  11614.  
  11615. Recovery: Remove the continuation character from the last line of the file, or 
  11616. add code after the continuation character. 
  11617.  
  11618.  
  11619. ΓòÉΓòÉΓòÉ 7.233. EDC0433 ΓòÉΓòÉΓòÉ
  11620.  
  11621. #line value too large. 
  11622.  
  11623. Recovery: Make sure that the #line value does not exceed the maximum value 
  11624. (32767) for short integers. 
  11625.  
  11626.  
  11627. ΓòÉΓòÉΓòÉ 7.234. EDC0434 ΓòÉΓòÉΓòÉ
  11628.  
  11629. &1 value must contain only decimal digits. 
  11630.  
  11631. A non-numeric character was encountered in the &1 value. 
  11632.  
  11633. Recovery: Check the syntax of the value given. 
  11634.  
  11635.  
  11636. ΓòÉΓòÉΓòÉ 7.235. EDC0435 ΓòÉΓòÉΓòÉ
  11637.  
  11638. A valid wide character must not have 0x00 as its second byte. 
  11639.  
  11640. Recovery: Change the value of the second byte of the wide character. 
  11641.  
  11642.  
  11643. ΓòÉΓòÉΓòÉ 7.236. EDC0437 ΓòÉΓòÉΓòÉ
  11644.  
  11645. A character string literal cannot be concatenated with a wide string literal. 
  11646.  
  11647. A string that has a prefix L cannot be concatenated with a string that is not 
  11648. prefixed. 
  11649.  
  11650. Recovery: Check the syntax of the value given. 
  11651.  
  11652.  
  11653. ΓòÉΓòÉΓòÉ 7.237. EDC0438 ΓòÉΓòÉΓòÉ
  11654.  
  11655. An error was detected in #pragma &1. 
  11656.  
  11657. For a description of the syntax for #pragma directives, see the SAA CPI C 
  11658. Reference and -- Reference prag370 not found -- of this book. 
  11659.  
  11660. Recovery: Check the syntax of the #pragma directive. 
  11661.  
  11662.  
  11663. ΓòÉΓòÉΓòÉ 7.238. EDC0439 ΓòÉΓòÉΓòÉ
  11664.  
  11665. Option &1 on #pragma &2 is not supported. 
  11666.  
  11667. For a list of all valid options for #pragma directives, see the SAA CPI C 
  11668. Reference and -- Reference prag370 not found -- of this book. 
  11669.  
  11670. Recovery: Make sure the #pragma syntax and options are correct. 
  11671.  
  11672.  
  11673. ΓòÉΓòÉΓòÉ 7.239. EDC0441 ΓòÉΓòÉΓòÉ
  11674.  
  11675. #pragma &1 is unrecognized and is ignored. 
  11676.  
  11677. An unrecognized #pragma directive was encountered.  See the SAA CPI C Reference 
  11678. and -- Reference prag370 not found -- of this book for the valid #pragmas 
  11679. available. 
  11680.  
  11681. Recovery: Change or remove the #pragma directive. 
  11682.  
  11683.  
  11684. ΓòÉΓòÉΓòÉ 7.240. EDC0442 ΓòÉΓòÉΓòÉ
  11685.  
  11686. Option on #pragma &1 is out of range. 
  11687.  
  11688. The specified #pragma option is not within the range of the valid values. See 
  11689. the SAA CPI C Reference and -- Reference prag370 not found -- of this book for 
  11690. more information on the #pragma directives. 
  11691.  
  11692. Recovery: Change the option or remove the #pragma directive. 
  11693.  
  11694.  
  11695. ΓòÉΓòÉΓòÉ 7.241. EDC0443 ΓòÉΓòÉΓòÉ
  11696.  
  11697. #pragma &1 must appear on the first directive before any C code. 
  11698.  
  11699. Recovery: Make sure the indicated #pragma appears on the first directive and 
  11700. before any C code. 
  11701.  
  11702.  
  11703. ΓòÉΓòÉΓòÉ 7.242. EDC0444 ΓòÉΓòÉΓòÉ
  11704.  
  11705. The #pragma &1 must appear only once and before any C code. 
  11706.  
  11707. Recovery: Remove all but one of the specified #pragma directive and place the 
  11708. #pragma directive before any C code. 
  11709.  
  11710.  
  11711. ΓòÉΓòÉΓòÉ 7.243. EDC0449 ΓòÉΓòÉΓòÉ
  11712.  
  11713. A new-line is not expected before the end of the preprocessing directive. 
  11714.  
  11715. A new-line was encountered before the preprocessor directive was complete. 
  11716.  
  11717. Recovery: Make sure the preprocessor directive ends before the end of the line. 
  11718.  
  11719.  
  11720. ΓòÉΓòÉΓòÉ 7.244. EDC0450 ΓòÉΓòÉΓòÉ
  11721.  
  11722. Option &1 ignored because option &2 specified. 
  11723.  
  11724. The use of the second option indicated means the first has no effect.  For 
  11725. example, the /P option causes the /O option to be ignored because no code will 
  11726. be generated. 
  11727.  
  11728. Recovery: Remove one of the options. 
  11729.  
  11730.  
  11731. ΓòÉΓòÉΓòÉ 7.245. EDC0451 ΓòÉΓòÉΓòÉ
  11732.  
  11733. The &1 option has not been completely specified. 
  11734.  
  11735. Refer to Specifying Compiler Options for information on specifying compile-time 
  11736. options. 
  11737.  
  11738. Recovery: Complete or remove the option. 
  11739.  
  11740.  
  11741. ΓòÉΓòÉΓòÉ 7.246. EDC0452 ΓòÉΓòÉΓòÉ
  11742.  
  11743. Suboption &2 of &1 is not valid. 
  11744.  
  11745. An incorrect suboption of the specified compiler option has been given.  See 
  11746. Specifying Compiler Options for more information on compiler options. 
  11747.  
  11748. Recovery: Change or remove the incorrect suboption. 
  11749.  
  11750.  
  11751. ΓòÉΓòÉΓòÉ 7.247. EDC0455 ΓòÉΓòÉΓòÉ
  11752.  
  11753. Suboption &2 of &1 is out of range. 
  11754.  
  11755. A suboption of the specified compiler option is not within the range of valid 
  11756. values.  See Specifying Compiler Options for more information on compiler 
  11757. options. 
  11758.  
  11759. Recovery: Change or remove the suboption. 
  11760.  
  11761.  
  11762. ΓòÉΓòÉΓòÉ 7.248. EDC0456 ΓòÉΓòÉΓòÉ
  11763.  
  11764. Suboptions &2 and &3 of option &1 conflict. 
  11765.  
  11766. Conflicting suboptions of the indicated compiler option have been specified. 
  11767.  
  11768. Recovery: Remove one of the conflicting suboptions. 
  11769.  
  11770.  
  11771. ΓòÉΓòÉΓòÉ 7.249. EDC0460 ΓòÉΓòÉΓòÉ
  11772.  
  11773. Macro name &1 must not begin with a numeric character on &2 option. 
  11774.  
  11775. Macro names must begin with an alphabetic character or an underscore. 
  11776.  
  11777. Recovery: Change the macro name. 
  11778.  
  11779.  
  11780. ΓòÉΓòÉΓòÉ 7.250. EDC0461 ΓòÉΓòÉΓòÉ
  11781.  
  11782. &1 cannot be defined as a macro on the &2 option. 
  11783.  
  11784. Recovery: Remove the macro definition. 
  11785.  
  11786.  
  11787. ΓòÉΓòÉΓòÉ 7.251. EDC0462 ΓòÉΓòÉΓòÉ
  11788.  
  11789. Macro definition on the &1 option is not valid. 
  11790.  
  11791. Recovery: Remove the macro definition or change the macro name. 
  11792.  
  11793.  
  11794. ΓòÉΓòÉΓòÉ 7.252. EDC0463 ΓòÉΓòÉΓòÉ
  11795.  
  11796. Option &1 is not valid. 
  11797.  
  11798. An incorrect compiler option has been encountered.  See Specifying Compiler 
  11799. Options for valid compiler options. 
  11800.  
  11801. Recovery: Change or remove the option. 
  11802.  
  11803.  
  11804. ΓòÉΓòÉΓòÉ 7.253. EDC0464 ΓòÉΓòÉΓòÉ
  11805.  
  11806. Character constant has more than four bytes. 
  11807.  
  11808. A character constant can only have up to four bytes. 
  11809.  
  11810. Option: /Kb 
  11811.  
  11812. Recovery: Change the character constant to contain four bytes or less. 
  11813.  
  11814.  
  11815. ΓòÉΓòÉΓòÉ 7.254. EDC0465 ΓòÉΓòÉΓòÉ
  11816.  
  11817. Unable to open the default file for &1 output. 
  11818.  
  11819. The intermediate file (with a .I extension) could not be opened when the /P 
  11820. option was specified.  The directory may be full. 
  11821.  
  11822. Recovery: Delete some files from the directory to free some space. 
  11823.  
  11824.  
  11825. ΓòÉΓòÉΓòÉ 7.255. EDC0468 ΓòÉΓòÉΓòÉ
  11826.  
  11827. Macro name &1 on &2 option is already defined. 
  11828.  
  11829. On the /D option a macro may be defined multiple times only if the definitions 
  11830. are identical except for white space. 
  11831.  
  11832. Recovery: Remove all but one of the indicated macro definitions, make them all 
  11833. identical, or change the name of the macro. 
  11834.  
  11835.  
  11836. ΓòÉΓòÉΓòÉ 7.256. EDC0469 ΓòÉΓòÉΓòÉ
  11837.  
  11838. Macro name &1 has been truncated to &2 on the &3 option. 
  11839.  
  11840. The length of the macro name on the /D option is greater than the maximum 
  11841. allowed.  The name has been truncated. 
  11842.  
  11843. Recovery: Change the macro name if necessary. 
  11844.  
  11845.  
  11846. ΓòÉΓòÉΓòÉ 7.257. EDC0470 ΓòÉΓòÉΓòÉ
  11847.  
  11848. Macro name &1 contains characters not valid on the &2 option. 
  11849.  
  11850. Macro names can contain only alphanumeric characters and the underscore 
  11851. character. 
  11852.  
  11853. Recovery: Change the macro name. 
  11854.  
  11855.  
  11856. ΓòÉΓòÉΓòÉ 7.258. EDC0472 ΓòÉΓòÉΓòÉ
  11857.  
  11858. Local options following filename have been ignored. 
  11859.  
  11860. In the icc command, local compiler options must be specified before the file 
  11861. name they will affect.  Only global options can be placed anywhere on the 
  11862. command line. 
  11863.  
  11864. Recovery: Remove the local options following the file name or place them in 
  11865. front of the file name. 
  11866.  
  11867.  
  11868. ΓòÉΓòÉΓòÉ 7.259. EDC0473 ΓòÉΓòÉΓòÉ
  11869.  
  11870. Missing source or object file. 
  11871.  
  11872. Recovery: Specify a source or object file. 
  11873.  
  11874.  
  11875. ΓòÉΓòÉΓòÉ 7.260. EDC0475 ΓòÉΓòÉΓòÉ
  11876.  
  11877. Option &1 ignored because option &2 is not specified. 
  11878.  
  11879. The second option must be specified for the first to have an effect. For 
  11880. example, to use the /Le option, you must also specify /Lf. 
  11881.  
  11882. Recovery: Specify the second option, or remove the first. 
  11883.  
  11884.  
  11885. ΓòÉΓòÉΓòÉ 7.261. EDC0476 ΓòÉΓòÉΓòÉ
  11886.  
  11887. /U cannot be used with the predefined macro &1. 
  11888.  
  11889. You cannot undefine predefined macros. 
  11890.  
  11891. Recovery: Delete the /U option or change the macro name. 
  11892.  
  11893.  
  11894. ΓòÉΓòÉΓòÉ 7.262. EDC0479 ΓòÉΓòÉΓòÉ
  11895.  
  11896. Option /Ge- specified, but no module definition (.DEF) file provided. 
  11897.  
  11898. Recovery: Provide a module definition (.DEF) file. 
  11899.  
  11900.  
  11901. ΓòÉΓòÉΓòÉ 7.263. EDC0480 ΓòÉΓòÉΓòÉ
  11902.  
  11903. Option &1 requires that &2 be specified. 
  11904.  
  11905. Recovery: Specify option &2 on the command line. 
  11906.  
  11907.  
  11908. ΓòÉΓòÉΓòÉ 7.264. EDC0501 ΓòÉΓòÉΓòÉ
  11909.  
  11910. Unable to open ucode listing file DUMMY UCODE. 
  11911.  
  11912. Not able to open ucode listing file DUMMY UCODE. 
  11913.  
  11914.  
  11915. ΓòÉΓòÉΓòÉ 7.265. EDC0503 ΓòÉΓòÉΓòÉ
  11916.  
  11917. Unable to open listing file &1. 
  11918.  
  11919. The source listing file could not be opened. 
  11920.  
  11921. Recovery: Make sure enough disk space is available. 
  11922.  
  11923.  
  11924. ΓòÉΓòÉΓòÉ 7.266. EDC0504 ΓòÉΓòÉΓòÉ
  11925.  
  11926. Unable to find #include file &1. 
  11927.  
  11928. The file specified on the #include directive could not be found. 
  11929.  
  11930. Recovery: Ensure the #include file name and the search path are correct. 
  11931.  
  11932.  
  11933. ΓòÉΓòÉΓòÉ 7.267. EDC0506 ΓòÉΓòÉΓòÉ
  11934.  
  11935. Unable to find source file &1. 
  11936.  
  11937. Make sure that the name of the files specified on the command line (when the 
  11938. compile command is issued) corresponds to an existing C file. 
  11939.  
  11940.  
  11941. ΓòÉΓòÉΓòÉ 7.268. EDC0517 ΓòÉΓòÉΓòÉ
  11942.  
  11943. &1 value must be an integer constant. 
  11944.  
  11945. Recovery: Change the value to an integer constant. 
  11946.  
  11947.  
  11948. ΓòÉΓòÉΓòÉ 7.269. EDC0550 ΓòÉΓòÉΓòÉ
  11949.  
  11950. Macro parameter list must end before the end of the line. 
  11951.  
  11952. The list of parameters for a macro on a #define directive did not end before 
  11953. the end of the line. 
  11954.  
  11955. Recovery: End the parameter list before the end of the line.  Check that all 
  11956. required continuation lines have been coded. 
  11957.  
  11958.  
  11959. ΓòÉΓòÉΓòÉ 7.270. EDC0551 ΓòÉΓòÉΓòÉ
  11960.  
  11961. The #include file header cannot be empty. 
  11962.  
  11963. The #include file header specified is empty. 
  11964.  
  11965. Recovery: Remove the #include directive or ensure that the header is not empty. 
  11966.  
  11967.  
  11968. ΓòÉΓòÉΓòÉ 7.271. EDC0630 ΓòÉΓòÉΓòÉ
  11969.  
  11970. Error in allocating memory for intermediate files. 
  11971.  
  11972. Recovery: Make sure enough memory is available. 
  11973.  
  11974.  
  11975. ΓòÉΓòÉΓòÉ 7.272. EDC0631 ΓòÉΓòÉΓòÉ
  11976.  
  11977. Error in allocating disk space for intermediate files. 
  11978.  
  11979. Recovery: Make sure there is enough disk space in the TMP directory. Delete 
  11980. some files from the TMP directory and compile again. 
  11981.  
  11982.  
  11983. ΓòÉΓòÉΓòÉ 7.273. EDC0632 ΓòÉΓòÉΓòÉ
  11984.  
  11985. Error in opening intermediate files. 
  11986.  
  11987. Recovery: Make sure there is enough disk space and memory available. 
  11988.  
  11989.  
  11990. ΓòÉΓòÉΓòÉ 7.274. EDC0633 ΓòÉΓòÉΓòÉ
  11991.  
  11992. Error in closing intermediate files. 
  11993.  
  11994. Recovery: Restart the system, and compile again.  If this problem persists, 
  11995. contact your IBM Service representative. 
  11996.  
  11997.  
  11998. ΓòÉΓòÉΓòÉ 7.275. EDC0634 ΓòÉΓòÉΓòÉ
  11999.  
  12000. Error in creating name for intermediate files. 
  12001.  
  12002. Recovery: Restart the system and compile again.  If the problem persists, 
  12003. contact your IBM Service Representative. 
  12004.  
  12005.  
  12006. ΓòÉΓòÉΓòÉ 7.276. EDC0635 ΓòÉΓòÉΓòÉ
  12007.  
  12008. Error in writing to intermediate files. 
  12009.  
  12010. Recovery: Make sure there is enough disk space and memory available in the TMP 
  12011. directory. 
  12012.  
  12013.  
  12014. ΓòÉΓòÉΓòÉ 7.277. EDC0636 ΓòÉΓòÉΓòÉ
  12015.  
  12016. Unable to execute &1. 
  12017.  
  12018. Recovery: Make sure the executable file is in the current directory or is 
  12019. specified in your PATH, and that there is enough memory available. 
  12020.  
  12021.  
  12022. ΓòÉΓòÉΓòÉ 7.278. EDC0637 ΓòÉΓòÉΓòÉ
  12023.  
  12024. Unable to open linker response file &1. 
  12025.  
  12026. Recovery: Make sure there is enough disk space available in the TMP directory. 
  12027.  
  12028.  
  12029. ΓòÉΓòÉΓòÉ 7.279. EDC0638 ΓòÉΓòÉΓòÉ
  12030.  
  12031. Error in reading from intermediate files. 
  12032.  
  12033. Recovery: Restart the system and compile again.  If the problem persists, 
  12034. contact your IBM Service Representative. 
  12035.  
  12036.  
  12037. ΓòÉΓòÉΓòÉ 7.280. EDC0639 ΓòÉΓòÉΓòÉ
  12038.  
  12039. Unidentified error in using intermediate files. 
  12040.  
  12041. Recovery: Restart the system and compile again.  If the problem persists, 
  12042. contact your IBM Service Representative. 
  12043.  
  12044.  
  12045. ΓòÉΓòÉΓòÉ 7.281. EDC0640 ΓòÉΓòÉΓòÉ
  12046.  
  12047. Excess text &1 ignored on &2 option. 
  12048.  
  12049. Extraneous text not used by the option, has been ignored. 
  12050.  
  12051. Recovery: Remove extraneous text. 
  12052.  
  12053.  
  12054. ΓòÉΓòÉΓòÉ 7.282. EDC0641 ΓòÉΓòÉΓòÉ
  12055.  
  12056. An object declared as compatible with 16-bit applications is larger than 64K. 
  12057.  
  12058. The /Gt compiler option or #pragma seg16 directive was used with a data object 
  12059. declared as larger than 64K. 
  12060.  
  12061. Recovery: Change the data object so that it is less than 64K in size or remove 
  12062. the /Gt option and/or the #pragma seg16 directive. 
  12063.  
  12064.  
  12065. ΓòÉΓòÉΓòÉ 7.283. EDC0642 ΓòÉΓòÉΓòÉ
  12066.  
  12067. #pragma data_seg is ignored for object &1 because #pragma seg16 specified. 
  12068.  
  12069. Recovery: Remove the conflicting #pragma data_seg for the object. 
  12070.  
  12071.  
  12072. ΓòÉΓòÉΓòÉ 7.284. EDC0643 ΓòÉΓòÉΓòÉ
  12073.  
  12074. Obsolete C/2 #pragma &1 is no longer supported. 
  12075.  
  12076. A C/2 #pragma directive that is no longer supported was specified. 
  12077.  
  12078. Recovery: Remove the C/2 #pragma directive and use a valid #pragma directive or 
  12079. compiler option in its place. 
  12080.  
  12081.  
  12082. ΓòÉΓòÉΓòÉ 7.285. EDC0644 ΓòÉΓòÉΓòÉ
  12083.  
  12084. A _fastcall function cannot be defined in a 32-bit program. 
  12085.  
  12086. A function declared with the _fastcall linkage type, for example, int _Far16 
  12087. _Fastcall foo(); is defined in this compilation unit.  The C/C++ for OS/2 
  12088. compiles programs to be run in 32-bit mode and functions which support _cdecl 
  12089. and _pascal calling conventions. 
  12090.  
  12091. Recovery: Use a different linkage type for the function, or move the function 
  12092. to a different file and compile it with a 16-bit compiler. 
  12093.  
  12094.  
  12095. ΓòÉΓòÉΓòÉ 7.286. EDC0645 ΓòÉΓòÉΓòÉ
  12096.  
  12097. The operation between these types is not valid. 
  12098.  
  12099. The identifiers on the left hand side and the right hand side of the operator 
  12100. have types that do not respect the restrictions of the operator.  The operation 
  12101. specified in the expression cannot be performed.  See the SAA CPI C Reference 
  12102. for the list of operator restrictions. 
  12103.  
  12104. Recovery: Change the operands. 
  12105.  
  12106.  
  12107. ΓòÉΓòÉΓòÉ 7.287. EDC0646 ΓòÉΓòÉΓòÉ
  12108.  
  12109. Return type must be compatible with declaration of function &1. 
  12110.  
  12111. The return statement of the function is trying to return a type which is not 
  12112. compatible with the function's declaration. 
  12113.  
  12114. Recovery: Make sure that the value you are returning from the function is 
  12115. correct, or cast the value to the appropriate type before returning it. 
  12116.  
  12117.  
  12118. ΓòÉΓòÉΓòÉ 7.288. EDC0647 ΓòÉΓòÉΓòÉ
  12119.  
  12120. Type of the parameter &1 cannot conflict with previous declaration of function 
  12121. &2. 
  12122.  
  12123. The type of this parameter is incompatible with the type of the corresponding 
  12124. parameter in the previous declaration of the function. 
  12125.  
  12126. Recovery: Ensure that the subsequent declaration or function call matches the 
  12127. prototype in both the number and type of parameters. 
  12128.  
  12129.  
  12130. ΓòÉΓòÉΓòÉ 7.289. EDC0648 ΓòÉΓòÉΓòÉ
  12131.  
  12132. If the operands are pointers, they must point to compatible types. 
  12133.  
  12134. If one operand of either the relational or the equality operator is a pointer, 
  12135. the other operand must be either a pointer to the same qualified or unqualified 
  12136. type, a NULL pointer, or a pointer to void. 
  12137.  
  12138. Recovery: Change the operands. 
  12139.  
  12140.  
  12141. ΓòÉΓòÉΓòÉ 7.290. EDC0649 ΓòÉΓòÉΓòÉ
  12142.  
  12143. User segment &1 has already been declared. 
  12144.  
  12145. The user segment has already been specified as a different type of segment. 
  12146. Data segments and text segments must have distinct names. 
  12147.  
  12148. Recovery: Change the name of the segment. 
  12149.  
  12150.  
  12151. ΓòÉΓòÉΓòÉ 7.291. EDC0650 ΓòÉΓòÉΓòÉ
  12152.  
  12153. The maximum number of user defined segments has been exceeded. 
  12154.  
  12155. Recovery: Reduce the number of text and data segments in the program. 
  12156.  
  12157.  
  12158. ΓòÉΓòÉΓòÉ 7.292. EDC0651 ΓòÉΓòÉΓòÉ
  12159.  
  12160. A 16-bit function may not have a structure or union as a parameter. 
  12161.  
  12162. Passing a structure or union by value to a 16-bit function is not allowed. 
  12163.  
  12164. Recovery: Change the parameter to a pointer to a structure or union. 
  12165.  
  12166.  
  12167. ΓòÉΓòÉΓòÉ 7.293. EDC0800 ΓòÉΓòÉΓòÉ
  12168.  
  12169. Parameter &1 is not referenced. 
  12170.  
  12171. The identified variable has been declared in a function parameter list, but 
  12172. never referenced within the function body. 
  12173.  
  12174. Option: /Kp 
  12175.  
  12176. Recovery: Remove the parameter declaration if it is not needed. 
  12177.  
  12178.  
  12179. ΓòÉΓòÉΓòÉ 7.294. EDC0801 ΓòÉΓòÉΓòÉ
  12180.  
  12181. Automatic variable &1 is not referenced. 
  12182.  
  12183. The identified variable has been declared at block scope, but never referenced. 
  12184.  
  12185. Option: /Kb 
  12186.  
  12187. Recovery: Remove the variable declaration if it is not needed. 
  12188.  
  12189.  
  12190. ΓòÉΓòÉΓòÉ 7.295. EDC0802 ΓòÉΓòÉΓòÉ
  12191.  
  12192. Static variable &1 is not referenced. 
  12193.  
  12194. The identified static variable has been declared, but never referenced. 
  12195.  
  12196. Option: /Kb or /Kx 
  12197.  
  12198. Recovery: Remove the variable declaration if it is not needed. 
  12199.  
  12200.  
  12201. ΓòÉΓòÉΓòÉ 7.296. EDC0803 ΓòÉΓòÉΓòÉ
  12202.  
  12203. External variable &1 is not referenced. 
  12204.  
  12205. The identified variable has been declared either at file scope or extern at 
  12206. block scope, and was never referenced. 
  12207.  
  12208. Option: /Kb or /Kx 
  12209.  
  12210. Recovery: Remove the variable declaration if it is not needed. 
  12211.  
  12212.  
  12213. ΓòÉΓòÉΓòÉ 7.297. EDC0804 ΓòÉΓòÉΓòÉ
  12214.  
  12215. Function &1 is not referenced. 
  12216.  
  12217. The identified function has been declared, but never referenced. 
  12218.  
  12219. Option: /Kb or /Kx 
  12220.  
  12221. Recovery: Remove the function declaration if the function is not needed. 
  12222.  
  12223.  
  12224. ΓòÉΓòÉΓòÉ 7.298. EDC0805 ΓòÉΓòÉΓòÉ
  12225.  
  12226. Automatic variable &1 is set but not referenced. 
  12227.  
  12228. The identified variable has been declared and initialized, but never 
  12229. referenced. 
  12230.  
  12231. Option: /Kb 
  12232.  
  12233. Recovery: Remove the variable declaration and initialization if they are not 
  12234. needed. 
  12235.  
  12236.  
  12237. ΓòÉΓòÉΓòÉ 7.299. EDC0806 ΓòÉΓòÉΓòÉ
  12238.  
  12239. Static variable &1 is set but not referenced. 
  12240.  
  12241. The identified variable has been declared and initialized, but never 
  12242. referenced. 
  12243.  
  12244. Option: /Kb or /Kx 
  12245.  
  12246. Recovery: Remove the variable declaration and initialization if they are not 
  12247. needed. 
  12248.  
  12249.  
  12250. ΓòÉΓòÉΓòÉ 7.300. EDC0807 ΓòÉΓòÉΓòÉ
  12251.  
  12252. Variable &1 may not have been set before first reference. 
  12253.  
  12254. The compiler encountered an attempt to access the value of the identified 
  12255. variable before the variable was explicitly initialized. 
  12256.  
  12257. Option: /Kb or /Ki 
  12258.  
  12259. Recovery: Make sure the variable is explicitly initialized before its value is 
  12260. accessed. 
  12261.  
  12262.  
  12263. ΓòÉΓòÉΓòÉ 7.301. EDC0808 ΓòÉΓòÉΓòÉ
  12264.  
  12265. Variable &1 was not explicitly initialized. 
  12266.  
  12267. If not explicitly initialized, variables with storage class auto or register 
  12268. contain indeterminate values. 
  12269.  
  12270. Option: /Ki 
  12271.  
  12272. Recovery: Initialize the variable. 
  12273.  
  12274.  
  12275. ΓòÉΓòÉΓòÉ 7.302. EDC0809 ΓòÉΓòÉΓòÉ
  12276.  
  12277. &1 redefinition hides earlier one. 
  12278.  
  12279. A typedef was defined at an inner scope with the same name as a previous 
  12280. typedef definition made at an outer level.  The inner scope definition 
  12281. overrides the earlier one. 
  12282.  
  12283. Option: /Kb 
  12284.  
  12285. Recovery: Make sure this is what was intended or use different names for the 
  12286. two typedefs. 
  12287.  
  12288.  
  12289. ΓòÉΓòÉΓòÉ 7.303. EDC0810 ΓòÉΓòÉΓòÉ
  12290.  
  12291. External variable &1 is set but not referenced. 
  12292.  
  12293. The identified variable has been declared and initialized, but never 
  12294. referenced. 
  12295.  
  12296. Option: /Kx 
  12297.  
  12298. Recovery: Remove the variable declaration and initialization if they are not 
  12299. needed. 
  12300.  
  12301.  
  12302. ΓòÉΓòÉΓòÉ 7.304. EDC0811 ΓòÉΓòÉΓòÉ
  12303.  
  12304. Statement has no effect. 
  12305.  
  12306. The statement does not cause any storage to be changed or functions to be 
  12307. called. 
  12308.  
  12309. Option: /Kb 
  12310.  
  12311. Recovery: Change or delete the statement. 
  12312.  
  12313.  
  12314. ΓòÉΓòÉΓòÉ 7.305. EDC0812 ΓòÉΓòÉΓòÉ
  12315.  
  12316. Expression has no effect. 
  12317.  
  12318. An expression with no effect has been discovered where expressions with side 
  12319. effects are usually expected. 
  12320.  
  12321. Option: /Kb 
  12322.  
  12323. Recovery: Change or delete the expression. 
  12324.  
  12325.  
  12326. ΓòÉΓòÉΓòÉ 7.306. EDC0813 ΓòÉΓòÉΓòÉ
  12327.  
  12328. if-statement is empty. 
  12329.  
  12330. The statement body for an if statement has been found to contain no executable 
  12331. code. 
  12332.  
  12333. Option: /Kb 
  12334.  
  12335. Recovery: Change the statement body to contain executable code or delete the if 
  12336. statement. 
  12337.  
  12338.  
  12339. ΓòÉΓòÉΓòÉ 7.307. EDC0814 ΓòÉΓòÉΓòÉ
  12340.  
  12341. else-statement is empty. 
  12342.  
  12343. The statement body for an else statement has been found to contain no 
  12344. executable code. 
  12345.  
  12346. Option: /Kb 
  12347.  
  12348. Recovery: Change the statement body to contain executable code or delete the 
  12349. else statement. 
  12350.  
  12351.  
  12352. ΓòÉΓòÉΓòÉ 7.308. EDC0815 ΓòÉΓòÉΓòÉ
  12353.  
  12354. Loop body is empty. 
  12355.  
  12356. The statement body for a loop statement has been found to contain no executable 
  12357. code. 
  12358.  
  12359. Option: /Kb 
  12360.  
  12361. Recovery: Change the statement body to contain executable code or remove the 
  12362. loop statement. 
  12363.  
  12364.  
  12365. ΓòÉΓòÉΓòÉ 7.309. EDC0816 ΓòÉΓòÉΓòÉ
  12366.  
  12367. Assignment found in a control expression. 
  12368.  
  12369. The control expression for a switch, if, for, or while statement contains an 
  12370. unparenthesized assignment statement.  A common programming problem is the 
  12371. substitution of an assignment statement (i = 3) for what should be a comparison 
  12372. statement (i == 3). 
  12373.  
  12374. Option: /Kb 
  12375.  
  12376. Recovery: Verify whether the statement should be an assignment or a comparison. 
  12377.  
  12378.  
  12379. ΓòÉΓòÉΓòÉ 7.310. EDC0817 ΓòÉΓòÉΓòÉ
  12380.  
  12381. Type conversion may result in lost precision. 
  12382.  
  12383. The required type conversion may cause lost precision.  See the SAA CPI C 
  12384. Reference for more information on type conversions. 
  12385.  
  12386. Option: /Ka 
  12387.  
  12388. Recovery: If precision is important in the operation, eliminate the type 
  12389. conversion. 
  12390.  
  12391.  
  12392. ΓòÉΓòÉΓòÉ 7.311. EDC0818 ΓòÉΓòÉΓòÉ
  12393.  
  12394. Pointer type conversion found. 
  12395.  
  12396. Conversion of pointer types may change the pointer values. 
  12397.  
  12398. Option: /Ka 
  12399.  
  12400. Recovery: None, if the conversion was intended.  Otherwise, declare the pointer 
  12401. to void instead of to another type, and the cast it. 
  12402.  
  12403.  
  12404. ΓòÉΓòÉΓòÉ 7.312. EDC0819 ΓòÉΓòÉΓòÉ
  12405.  
  12406. Bitwise operator applied to a signed type. 
  12407.  
  12408. Bitwise operators may change the value of a signed type by shifting the bit 
  12409. used to indicate the sign of the value. 
  12410.  
  12411. Option: /Ko 
  12412.  
  12413. Recovery: Change the operand to an unsigned type or remove the bitwise 
  12414. operation. 
  12415.  
  12416.  
  12417. ΓòÉΓòÉΓòÉ 7.313. EDC0820 ΓòÉΓòÉΓòÉ
  12418.  
  12419. Right shift operator applied to a signed type. 
  12420.  
  12421. A right shift operator may change the value of a signed type by shifting the 
  12422. bit used to indicate the sign of the value. 
  12423.  
  12424. Option: /Ko 
  12425.  
  12426. Recovery: Change the operand to an unsigned type or remove the shift operation. 
  12427.  
  12428.  
  12429. ΓòÉΓòÉΓòÉ 7.314. EDC0821 ΓòÉΓòÉΓòÉ
  12430.  
  12431. Relational expression is always true. 
  12432.  
  12433. The control expression of a switch, if, for, or while statement has a constant 
  12434. value, and the result is always true.  This may not be effective code. 
  12435.  
  12436. Option: /Kb 
  12437.  
  12438. Recovery: Verify if this result was intended.  Change the control expression if 
  12439. necessary. 
  12440.  
  12441.  
  12442. ΓòÉΓòÉΓòÉ 7.315. EDC0822 ΓòÉΓòÉΓòÉ
  12443.  
  12444. Relational expression is always false. 
  12445.  
  12446. The control expression of a switch, if, for, or while statement has a constant 
  12447. value, and the result is always false.  This may not be effective code. 
  12448.  
  12449. Option: /Kb 
  12450.  
  12451. Recovery: Verify if this result was intended.  Change the control expression if 
  12452. necessary. 
  12453.  
  12454.  
  12455. ΓòÉΓòÉΓòÉ 7.316. EDC0823 ΓòÉΓòÉΓòÉ
  12456.  
  12457. Expression contains division by zero. 
  12458.  
  12459. An expression containing division by zero was found. 
  12460.  
  12461. Option: /Kb 
  12462.  
  12463. Recovery: Eliminate the division by zero if it was not intended. 
  12464.  
  12465.  
  12466. ΓòÉΓòÉΓòÉ 7.317. EDC0824 ΓòÉΓòÉΓòÉ
  12467.  
  12468. Expression contains modulus by zero. 
  12469.  
  12470. An expression containing modulus by zero was found. 
  12471.  
  12472. Option: /Kb 
  12473.  
  12474. Recovery: Eliminate the division by zero if it was not intended. 
  12475.  
  12476.  
  12477. ΓòÉΓòÉΓòÉ 7.318. EDC0825 ΓòÉΓòÉΓòÉ
  12478.  
  12479. Code cannot be reached. 
  12480.  
  12481. A statement has been found after an unconditional transfer of control, such as 
  12482. a goto, and there is no label on the statement, so the statement cannot be 
  12483. executed. 
  12484.  
  12485. Option: /Kb 
  12486.  
  12487. Recovery: If the statement should be executed, make the transfer of control 
  12488. conditional, or label the statement.  If not, remove the statement. 
  12489.  
  12490.  
  12491. ΓòÉΓòÉΓòÉ 7.319. EDC0826 ΓòÉΓòÉΓòÉ
  12492.  
  12493. Execution fall-through within a switch statement. 
  12494.  
  12495. A case label has been encountered that was not preceded by either a break or 
  12496. return statement. 
  12497.  
  12498. Option: /Kb 
  12499.  
  12500. Recovery: Precede the case label with a break or return statement. 
  12501.  
  12502.  
  12503. ΓòÉΓòÉΓòÉ 7.320. EDC0827 ΓòÉΓòÉΓòÉ
  12504.  
  12505. Nonprototype function declaration encountered. 
  12506.  
  12507. A nonprototype function declaration was found. For example, 
  12508.  
  12509.    int addnum();
  12510. Function declarations should include the return type of the function and the 
  12511. types of its parameters. Calls to nonprototype functions get no type checking 
  12512. or type conversions on parameters. 
  12513.  
  12514. Option: /Kb 
  12515.  
  12516. Recovery: Change the nonprototype declarations to prototype declarations like 
  12517. the following: 
  12518.  
  12519.    int addnum(int, int);
  12520.  
  12521.  
  12522. ΓòÉΓòÉΓòÉ 7.321. EDC0828 ΓòÉΓòÉΓòÉ
  12523.  
  12524. The return type of the function main should have type int, not void. 
  12525.  
  12526. If main is declared to return void, the exit code from the program will be 
  12527. indeterminate. 
  12528.  
  12529. Option: /Kb 
  12530.  
  12531.  
  12532. ΓòÉΓòÉΓòÉ 7.322. EDC0830 ΓòÉΓòÉΓòÉ
  12533.  
  12534. Value is not a member of the enumeration. 
  12535.  
  12536. Variables of type enum are not expected to be used in situations other than 
  12537. assignment and comparison, and can only be assigned proper members of their 
  12538. enumeration, either directly, from function return values, or from another 
  12539. variable of the same type. 
  12540.  
  12541. Option: /Ke 
  12542.  
  12543. Recovery: Make sure operations involving variables of type enum are valid. 
  12544.  
  12545.  
  12546. ΓòÉΓòÉΓòÉ 7.323. EDC0831 ΓòÉΓòÉΓòÉ
  12547.  
  12548. Case label is not a member of the enumeration. 
  12549.  
  12550. In a switch statement where the switch control expression is an enum, the case 
  12551. label values must be members of the enumeration. 
  12552.  
  12553. Option: /Ke 
  12554.  
  12555. Recovery: Make sure the case label is a member of the enumeration. 
  12556.  
  12557.  
  12558. ΓòÉΓòÉΓòÉ 7.324. EDC0832 ΓòÉΓòÉΓòÉ
  12559.  
  12560. Unstructured goto statement encountered. 
  12561.  
  12562. The target label of a goto statement should not be located in an inner block 
  12563. such as a loop. 
  12564.  
  12565. Option: /Kg 
  12566.  
  12567. Recovery: Make sure the target label of the goto statement is not located in an 
  12568. inner block. 
  12569.  
  12570.  
  12571. ΓòÉΓòÉΓòÉ 7.325. EDC0833 ΓòÉΓòÉΓòÉ
  12572.  
  12573. Implicit return statement encountered. 
  12574.  
  12575. C allows you to return from a function call without specifying a return 
  12576. statement.  However, if you want the function to return a value, you must 
  12577. include a return statement. 
  12578.  
  12579. Option: /Kb 
  12580.  
  12581. Recovery: Add a return statement to the called function if you want it to 
  12582. return a value. 
  12583.  
  12584.  
  12585. ΓòÉΓòÉΓòÉ 7.326. EDC0834 ΓòÉΓòÉΓòÉ
  12586.  
  12587. Missing function return value. 
  12588.  
  12589. The function was declared to return a value, and a return statement with no 
  12590. value has been encountered.  If you do not include a return statement in the 
  12591. function, the function will return to the caller with an indeterminate value. 
  12592.  
  12593. Option: /Kb 
  12594.  
  12595. Recovery: Add a return value to the return statement. 
  12596.  
  12597.  
  12598. ΓòÉΓòÉΓòÉ 7.327. EDC0835 ΓòÉΓòÉΓòÉ
  12599.  
  12600. Structure or union remapping will be performed for this copy operation. 
  12601.  
  12602. A struct or union assignment has been encountered which requires an implicit 
  12603. pack or unpack operation. This form of assignment is often less efficient that 
  12604. those assignments that have identical pack characteristics. 
  12605.  
  12606. Option: /Kb 
  12607.  
  12608. Recovery: Revise the statements to avoid unnecessary pack and unpack 
  12609. operations. 
  12610.  
  12611.  
  12612. ΓòÉΓòÉΓòÉ 7.328. EDC0836 ΓòÉΓòÉΓòÉ
  12613.  
  12614. The same #pragma &1 directive was previously specified for the object &2. 
  12615.  
  12616. The function was already declared using the same #pragma linkage directive. 
  12617.  
  12618. Option: /Kc 
  12619.  
  12620. Recovery: Remove one of the #pragma linkage directives. 
  12621.  
  12622.  
  12623. ΓòÉΓòÉΓòÉ 7.329. EDC0837 ΓòÉΓòÉΓòÉ
  12624.  
  12625. goto statement encountered. 
  12626.  
  12627. A goto statement was found. 
  12628.  
  12629. Option: /Kg 
  12630.  
  12631. Recovery: No recovery necessary. 
  12632.  
  12633.  
  12634. ΓòÉΓòÉΓòÉ 7.330. EDC0838 ΓòÉΓòÉΓòÉ
  12635.  
  12636. Comparison is not valid because the numeric constant is out of range. 
  12637.  
  12638. A comparison between a variable and a constant that does not lie in the 
  12639. variable's range of possible values has been detected. 
  12640.  
  12641. Option: /Kb 
  12642.  
  12643. Recovery: Delete the comparison, or use a constant that lies in the variable's 
  12644. range of possible values. 
  12645.  
  12646.  
  12647. ΓòÉΓòÉΓòÉ 7.331. EDC0839 ΓòÉΓòÉΓòÉ
  12648.  
  12649. Unary minus applied to an unsigned type. 
  12650.  
  12651. An unsigned type cannot have a sign. 
  12652.  
  12653. Option: /Kb 
  12654.  
  12655. Recovery: Remove the unary minus or change the type to be signed. 
  12656.  
  12657.  
  12658. ΓòÉΓòÉΓòÉ 7.332. EDC0841 ΓòÉΓòÉΓòÉ
  12659.  
  12660. File &1 has already been #included. 
  12661.  
  12662. The file specified was included by a previous #include directive. 
  12663.  
  12664. Option: /Kc 
  12665.  
  12666. Recovery: Remove one of the #include directives. 
  12667.  
  12668.  
  12669. ΓòÉΓòÉΓòÉ 7.333. EDC0842 ΓòÉΓòÉΓòÉ
  12670.  
  12671. Macro name &1 on #undef not defined. 
  12672.  
  12673. The specified macro name has never been defined or has already been removed by 
  12674. a previous #undef directive. 
  12675.  
  12676. Option: /Kc 
  12677.  
  12678. Recovery: Define the macro name, or remove the #undef directive. 
  12679.  
  12680.  
  12681. ΓòÉΓòÉΓòÉ 7.334. EDC0843 ΓòÉΓòÉΓòÉ
  12682.  
  12683. Macro name &1 on #define is also an identifier. 
  12684.  
  12685. The specified macro definition will override an existing identifier definition. 
  12686.  
  12687. Option: /Kc 
  12688.  
  12689. Recovery: Rename or remove the macro or the identifier. 
  12690.  
  12691.  
  12692. ΓòÉΓòÉΓòÉ 7.335. EDC0844 ΓòÉΓòÉΓòÉ
  12693.  
  12694. Macro name &1 on #define is also a keyword. 
  12695.  
  12696. The specified macro definition will override an existing keyword definition. 
  12697.  
  12698. Option: /Kc 
  12699.  
  12700. Recovery: Rename the macro or remove the definition. 
  12701.  
  12702.  
  12703. ΓòÉΓòÉΓòÉ 7.336. EDC0845 ΓòÉΓòÉΓòÉ
  12704.  
  12705. Identifier &1 assigned default value of 0. 
  12706.  
  12707. The indicated identifier in a #if or #elif expression was assigned the default 
  12708. value of zero.  The identifier may have been intended to be expanded as a 
  12709. macro. 
  12710.  
  12711. Option: /Kc 
  12712.  
  12713. Recovery: Assign the identifier a value if necessary. 
  12714.  
  12715.  
  12716. ΓòÉΓòÉΓòÉ 7.337. EDC0846 ΓòÉΓòÉΓòÉ
  12717.  
  12718. Expanding trigraph &1 in string literal. 
  12719.  
  12720. A trigraph has been expanded in a string literal.  This may not be the intended 
  12721. behavior. 
  12722.  
  12723. Option: /Kc 
  12724.  
  12725. Recovery: Make sure this is the intended behavior.  If not, use escape 
  12726. sequences to represent characters, for example '\?' for the character '?'. 
  12727.  
  12728.  
  12729. ΓòÉΓòÉΓòÉ 7.338. EDC0847 ΓòÉΓòÉΓòÉ
  12730.  
  12731. Expanding trigraph &1 in character literal. 
  12732.  
  12733. A trigraph has been expanded in a character literal.  This may not be the 
  12734. intended behavior. 
  12735.  
  12736. Option: /Kc 
  12737.  
  12738. Recovery: Make sure this is the intended behavior.  If not, use escape 
  12739. sequences to represent characters, for example '\?' for the character '?'. 
  12740.  
  12741.  
  12742. ΓòÉΓòÉΓòÉ 7.339. EDC0848 ΓòÉΓòÉΓòÉ
  12743.  
  12744. Some program text not scanned due to &1 option. 
  12745.  
  12746. The setting of the margins and/or sequence options has resulted in some program 
  12747. text not being scanned. 
  12748.  
  12749. Option: /Kc 
  12750.  
  12751. Recovery: Reset the margins and/or sequence options if necessary. 
  12752.  
  12753.  
  12754. ΓòÉΓòÉΓòÉ 7.340. EDC0851 ΓòÉΓòÉΓòÉ
  12755.  
  12756. #include found file &1. 
  12757.  
  12758. This message indicates the actual file found for the #include directive. 
  12759.  
  12760. Option: /Kt 
  12761.  
  12762. Recovery: No recovery necessary if the result is what was intended. 
  12763.  
  12764.  
  12765. ΓòÉΓòÉΓòÉ 7.341. EDC0852 ΓòÉΓòÉΓòÉ
  12766.  
  12767. #undef undefining macro name &1. 
  12768.  
  12769. This message traces the execution of the #undef directive. 
  12770.  
  12771. Option: /Kt 
  12772.  
  12773. Recovery: No recovery necessary if the result is what was intended. 
  12774.  
  12775.  
  12776. ΓòÉΓòÉΓòÉ 7.342. EDC0853 ΓòÉΓòÉΓòÉ
  12777.  
  12778. Macro name &1 on #define has a previous identical definition. 
  12779.  
  12780. The macro has already been identically defined.  This may indicate that a file 
  12781. has been #included more than once. 
  12782.  
  12783. Option: /Kt 
  12784.  
  12785. Recovery: Remove one of the definitions or rename one of the macros. 
  12786.  
  12787.  
  12788. ΓòÉΓòÉΓòÉ 7.343. EDC0854 ΓòÉΓòÉΓòÉ
  12789.  
  12790. #line directive changing line to &1 and file to &2. 
  12791.  
  12792. This message traces the execution of the #line directive. 
  12793.  
  12794. Option: /Kt 
  12795.  
  12796. Recovery: No recovery necessary if the result is what was intended. 
  12797.  
  12798.  
  12799. ΓòÉΓòÉΓòÉ 7.344. EDC0855 ΓòÉΓòÉΓòÉ
  12800.  
  12801. &1 condition evaluates to &2. 
  12802.  
  12803. This message traces the evaluation of the test condition of a #if, #ifdef, or 
  12804. #elif directive. 
  12805.  
  12806. Option: /Kt 
  12807.  
  12808. Recovery: No recovery necessary if the result is what was intended. 
  12809.  
  12810.  
  12811. ΓòÉΓòÉΓòÉ 7.345. EDC0856 ΓòÉΓòÉΓòÉ
  12812.  
  12813. defined(&1) evaluates to &2. 
  12814.  
  12815. This message traces the evaluation of the defined(&1) construct on a #if or 
  12816. #elif expression. 
  12817.  
  12818. Option: /Kt 
  12819.  
  12820. Recovery: No recovery necessary if the result is what was intended. 
  12821.  
  12822.  
  12823. ΓòÉΓòÉΓòÉ 7.346. EDC0857 ΓòÉΓòÉΓòÉ
  12824.  
  12825. Begin skipping tokens. 
  12826.  
  12827. This message traces the execution of conditional compilation directives, for 
  12828. example indicating that code is skipped after a #if with a condition that 
  12829. evaluates to false. 
  12830.  
  12831. Option: /Kt 
  12832.  
  12833. Recovery: Make sure the appropriate tokens were skipped. 
  12834.  
  12835.  
  12836. ΓòÉΓòÉΓòÉ 7.347. EDC0858 ΓòÉΓòÉΓòÉ
  12837.  
  12838. Stop skipping tokens. 
  12839.  
  12840. This message traces the execution of conditional compilation directives, for 
  12841. example, indicating that a #endif marked the end of a block of skipped code. 
  12842.  
  12843. Option: /Kt 
  12844.  
  12845. Recovery: Make sure the appropriate tokens were skipped. 
  12846.  
  12847.  
  12848. ΓòÉΓòÉΓòÉ 7.348. EDC0859 ΓòÉΓòÉΓòÉ
  12849.  
  12850. &1 nesting level is &2. 
  12851.  
  12852. This message traces the nesting level of conditional compilation directives. 
  12853.  
  12854. Option: /Kt 
  12855.  
  12856. Recovery: No recovery necessary if the result is what was intended. 
  12857.  
  12858.  
  12859. ΓòÉΓòÉΓòÉ 7.349. EDC0860 ΓòÉΓòÉΓòÉ
  12860.  
  12861. String literals concatenated. 
  12862.  
  12863. This message traces the concatenation of two string literals. 
  12864.  
  12865. Option: /Kt 
  12866.  
  12867. Recovery: Make sure the concatenation is what was intended. 
  12868.  
  12869.  
  12870. ΓòÉΓòÉΓòÉ 7.350. EDC0861 ΓòÉΓòÉΓòÉ
  12871.  
  12872. Optional brace encountered. 
  12873.  
  12874. An optional brace was found. 
  12875.  
  12876. Option: /Ki 
  12877.  
  12878. Recovery: No recovery necessary. 
  12879.  
  12880.  
  12881. ΓòÉΓòÉΓòÉ 7.351. EDC0862 ΓòÉΓòÉΓòÉ
  12882.  
  12883. Matching optional brace encountered. 
  12884.  
  12885. A matching optional brace was found. 
  12886.  
  12887. Option: /Ki 
  12888.  
  12889. Recovery: No recovery necessary. 
  12890.  
  12891.  
  12892. ΓòÉΓòÉΓòÉ 7.352. EDC0863 ΓòÉΓòÉΓòÉ
  12893.  
  12894. Incompletely bracketed initializer encountered, &1 left brace(s) assumed. 
  12895.  
  12896. An initializer for an aggregate type was missing a left brace or braces.  The 
  12897. compiler assumes the brace is meant to be there. 
  12898.  
  12899. Option: /Ki 
  12900.  
  12901. Recovery: Make sure this is what was intended. 
  12902.  
  12903.  
  12904. ΓòÉΓòÉΓòÉ 7.353. EDC0864 ΓòÉΓòÉΓòÉ
  12905.  
  12906. Incompletely bracketed initializer encountered, &1 right brace(s) assumed. 
  12907.  
  12908. An initializer for an aggregate type was missing a right brace or braces.  The 
  12909. compiler assumes the brace is meant to be there. 
  12910.  
  12911. Option: /Ki 
  12912.  
  12913. Recovery: Make sure this is what was intended. 
  12914.  
  12915.  
  12916. ΓòÉΓòÉΓòÉ 7.354. EDC0866 ΓòÉΓòÉΓòÉ
  12917.  
  12918. Constant arithmetic folding results in an infinity. 
  12919.  
  12920. Floating-point constant arithmetic folding results in an infinity. 
  12921.  
  12922. Option: /Kb 
  12923.  
  12924. Recovery: Make sure this is what was intended. 
  12925.  
  12926.  
  12927. ΓòÉΓòÉΓòÉ 7.355. EDC0867 ΓòÉΓòÉΓòÉ
  12928.  
  12929. Constant arithmetic folding results in a NaN. 
  12930.  
  12931. Floating-point constant arithmetic folding results in a NaN. 
  12932.  
  12933. Option: /Kb 
  12934.  
  12935. Recovery: Make sure this is what was intended. 
  12936.  
  12937.  
  12938. ΓòÉΓòÉΓòÉ 7.356. EDC0868 ΓòÉΓòÉΓòÉ
  12939.  
  12940. The incomplete struct or union tag &1 was introduced in a parameter list. 
  12941.  
  12942. The incomplete struct or union tag introduced in the parameter list will not be 
  12943. compatible with subsequent uses of the tag. 
  12944.  
  12945. Option: /Kb 
  12946.  
  12947. Recovery: Declare the incomplete struct or union tag at file scope before the 
  12948. function declaration. 
  12949.  
  12950.  
  12951. ΓòÉΓòÉΓòÉ 7.357. EDC0869 ΓòÉΓòÉΓòÉ
  12952.  
  12953. The incomplete struct or union tag &1 was not completed before going out of 
  12954. scope. 
  12955.  
  12956. An incomplete struct or union tag introduced at block scope was not completed 
  12957. before the end of the scope. 
  12958.  
  12959. Option: /Kb 
  12960.  
  12961. Recovery: Provide a complete declaration for the struct or union tag. 
  12962.  
  12963.  
  12964. ΓòÉΓòÉΓòÉ 7.358. EDC0870 ΓòÉΓòÉΓòÉ
  12965.  
  12966. #line directive changing line to &1. 
  12967.  
  12968. This message traces the execution of the #line directive. 
  12969.  
  12970. Option: /Kt 
  12971.  
  12972.  
  12973. ΓòÉΓòÉΓòÉ 7.359. EDC0900 ΓòÉΓòÉΓòÉ
  12974.  
  12975. Unable to open &1. 
  12976.  
  12977. Recovery: Ensure file exists. 
  12978.  
  12979.  
  12980. ΓòÉΓòÉΓòÉ 7.360. EDC0902 ΓòÉΓòÉΓòÉ
  12981.  
  12982. Unable to write to &1. 
  12983.  
  12984. Recovery: Make sure that the disk drive is not in an error mode and that there 
  12985. is enough disk space left. 
  12986.  
  12987.  
  12988. ΓòÉΓòÉΓòÉ 7.361. EDC4004 ΓòÉΓòÉΓòÉ
  12989.  
  12990. Not enough memory is available. 
  12991.  
  12992. The compiler can not obtain the necessary virtual storage or memory. 
  12993.  
  12994. Recovery: Any of the following may help: 
  12995.  
  12996.  o Shut down large processes. 
  12997.  o Ensure your swap path is large enough. 
  12998.  o Redefine your virtual disk, if you are using one. 
  12999.  o Reboot. 
  13000.  o Obtain more RAM and/or disk space. 
  13001.  
  13002.  
  13003. ΓòÉΓòÉΓòÉ 7.362. EDC4005 ΓòÉΓòÉΓòÉ
  13004.  
  13005. Error occurred in an intermediate file. 
  13006.  
  13007. An internal compiler error has occurred. 
  13008.  
  13009. Recovery: Contact your IBM Service Representative. 
  13010.  
  13011.  
  13012. ΓòÉΓòÉΓòÉ 7.363. EDC4007 ΓòÉΓòÉΓòÉ
  13013.  
  13014. An addressing mode combination is not valid. 
  13015.  
  13016. An internal compiler error has occurred. 
  13017.  
  13018. Recovery: Contact your IBM Service Representative. 
  13019.  
  13020.  
  13021. ΓòÉΓòÉΓòÉ 7.364. EDC4008 ΓòÉΓòÉΓòÉ
  13022.  
  13023. An unsupported data type was encountered. 
  13024.  
  13025. An internal compiler error has occurred. 
  13026.  
  13027. Recovery: Contact your IBM Service Representative. 
  13028.  
  13029.  
  13030. ΓòÉΓòÉΓòÉ 7.365. EDC4010 ΓòÉΓòÉΓòÉ
  13031.  
  13032. An unexpected dependent register was encountered. 
  13033.  
  13034. An internal compiler error has occurred. 
  13035.  
  13036. Recovery: Contact your IBM Service Representative. 
  13037.  
  13038.  
  13039. ΓòÉΓòÉΓòÉ 7.366. EDC4011 ΓòÉΓòÉΓòÉ
  13040.  
  13041. Error occurred while opening assembly file. 
  13042.  
  13043. An operating system or compiler error has occurred. 
  13044.  
  13045. Recovery: Ensure that: 
  13046.  
  13047.  o The TMP directory is set to a writable disk 
  13048.  o The target directory of the assembler or object file is writable 
  13049.  o These directories exist and have enough available space 
  13050.  o No other processes are modifying the directory or file 
  13051.  o The file system is functioning properly 
  13052.  o The virtual disk for the directory, if you are using one, is large enough. 
  13053.  Try rebooting.  If the problem persists, contact your IBM Service 
  13054.  Representative. 
  13055.  
  13056.  
  13057. ΓòÉΓòÉΓòÉ 7.367. EDC4012 ΓòÉΓòÉΓòÉ
  13058.  
  13059. Error occurred while writing assembly file. 
  13060.  
  13061. An operating system or compiler error has occurred. 
  13062.  
  13063. Recovery: Ensure that: 
  13064.  
  13065.  o The TMP directory is set to a writable disk 
  13066.  o The target directory of the assembler or object file is writable 
  13067.  o These directories exist and have enough available space 
  13068.  o No other processes are modifying the directory or file 
  13069.  o The file system is functioning properly 
  13070.  o The virtual disk for the directory, if you are using one, is large enough. 
  13071.  Try rebooting.  If the problem persists, contact your IBM Service 
  13072.  Representative. 
  13073.  
  13074.  
  13075. ΓòÉΓòÉΓòÉ 7.368. EDC4013 ΓòÉΓòÉΓòÉ
  13076.  
  13077. Error occurred while closing assembly file. 
  13078.  
  13079. An operating system or compiler error has occurred. 
  13080.  
  13081. Recovery: Ensure that: 
  13082.  
  13083.  o The TMP directory is set to a writable disk 
  13084.  o The target directory of the assembler or object file is writable 
  13085.  o These directories exist and have enough available space 
  13086.  o No other processes are modifying the directory or file 
  13087.  o The file system is functioning properly 
  13088.  o The virtual disk for the directory, if you are using one, is large enough. 
  13089.  Try rebooting.  If the problem persists, contact your IBM Service 
  13090.  Representative. 
  13091.  
  13092.  
  13093. ΓòÉΓòÉΓòÉ 7.369. EDC4014 ΓòÉΓòÉΓòÉ
  13094.  
  13095. Error occurred while opening object file. 
  13096.  
  13097. An operating system or compiler error has occurred. 
  13098.  
  13099. Recovery: Ensure that: 
  13100.  
  13101.  o The TMP directory is set to a writable disk 
  13102.  o The target directory of the assembler or object file is writable 
  13103.  o These directories exist and have enough available space 
  13104.  o No other processes are modifying the directory or file 
  13105.  o The file system is functioning properly 
  13106.  o The virtual disk for the directory, if you are using one, is large enough. 
  13107.  Try rebooting.  If the problem persists, contact your IBM Service 
  13108.  Representative. 
  13109.  
  13110.  
  13111. ΓòÉΓòÉΓòÉ 7.370. EDC4015 ΓòÉΓòÉΓòÉ
  13112.  
  13113. Error occurred while in writing object file. 
  13114.  
  13115. An operating system or compiler error has occurred. 
  13116.  
  13117. Recovery: Ensure that: 
  13118.  
  13119.  o The TMP directory is set to a writable disk 
  13120.  o The target directory of the assembler or object file is writable 
  13121.  o These directories exist and have enough available space 
  13122.  o No other processes are modifying the directory or file 
  13123.  o The file system is functioning properly 
  13124.  o The virtual disk for the directory, if you are using one, is large enough. 
  13125.  Try rebooting.  If the problem persists, contact your IBM Service 
  13126.  Representative. 
  13127.  
  13128.  
  13129. ΓòÉΓòÉΓòÉ 7.371. EDC4016 ΓòÉΓòÉΓòÉ
  13130.  
  13131. Error occurred while closing object file. 
  13132.  
  13133. An operating system or compiler error has occurred. 
  13134.  
  13135. Recovery: Ensure that: 
  13136.  
  13137.  o The TMP directory is set to a writable disk 
  13138.  o The target directory of the assembler or object file is writable 
  13139.  o These directories exist and have enough available space 
  13140.  o No other processes are modifying the directory or file 
  13141.  o The file system is functioning properly 
  13142.  o The virtual disk for the directory, if you are using one, is large enough. 
  13143.  Try rebooting.  If the problem persists, contact your IBM Service 
  13144.  Representative. 
  13145.  
  13146.  
  13147. ΓòÉΓòÉΓòÉ 7.372. EDC4017 ΓòÉΓòÉΓòÉ
  13148.  
  13149. Expression contains division by zero. 
  13150.  
  13151. The optimizer identified an expression containing division by zero. 
  13152.  
  13153. Recovery: Eliminate the division by zero if it was not intended. 
  13154.  
  13155.  
  13156. ΓòÉΓòÉΓòÉ 7.373. EDC4018 ΓòÉΓòÉΓòÉ
  13157.  
  13158. Too many debug options were specified. 
  13159.  
  13160. An internal compiler error has occurred. 
  13161.  
  13162. Recovery: Contact your IBM Service Representative. 
  13163.  
  13164.  
  13165. ΓòÉΓòÉΓòÉ 7.374. EDC4019 ΓòÉΓòÉΓòÉ
  13166.  
  13167. Error occurred while opening intermediate files. 
  13168.  
  13169. An operating system or compiler error has occurred. 
  13170.  
  13171. Recovery: Ensure that: 
  13172.  
  13173.  o The TMP directory is set to a writable disk 
  13174.  o The directory exists and has enough available space 
  13175.  o No other processes are modifying the directory or file 
  13176.  o The file system is functioning properly 
  13177.  o The virtual disk for the directory, if you are using one, is large enough. 
  13178.  Try rebooting.  If the problem persists, contact your IBM Service 
  13179.  Representative. 
  13180.  
  13181.  
  13182. ΓòÉΓòÉΓòÉ 7.375. EDC4020 ΓòÉΓòÉΓòÉ
  13183.  
  13184. Error occurred while writing to intermediate file. 
  13185.  
  13186. An operating system or compiler error has occurred. 
  13187.  
  13188. Recovery: Ensure that: 
  13189.  
  13190.  o The TMP directory is set to a writable disk 
  13191.  o The directory exists and has enough available space 
  13192.  o No other processes are modifying the directory or file 
  13193.  o The file system is functioning properly 
  13194.  o The virtual disk for the directory, if you are using one, is large enough. 
  13195.  Try rebooting.  If the problem persists, contact your IBM Service 
  13196.  Representative. 
  13197.  
  13198.  
  13199. ΓòÉΓòÉΓòÉ 7.376. EDC4021 ΓòÉΓòÉΓòÉ
  13200.  
  13201. Error occurred while reading from intermediate file. 
  13202.  
  13203. An operating system or compiler error has occurred. 
  13204.  
  13205. Recovery: Ensure that: 
  13206.  
  13207.  o The TMP directory is set to a writable disk 
  13208.  o The directory exists and has enough available space 
  13209.  o No other processes are modifying the directory or file 
  13210.  o The file system is functioning properly 
  13211.  o The virtual disk for the directory, if you are using one, is large enough. 
  13212.  Try rebooting.  If the problem persists, contact your IBM Service 
  13213.  Representative. 
  13214.  
  13215.  
  13216. ΓòÉΓòÉΓòÉ 7.377. EDC4022 ΓòÉΓòÉΓòÉ
  13217.  
  13218. Error occurred while closing intermediate file. 
  13219.  
  13220. An operating system or compiler error has occurred. 
  13221.  
  13222. Recovery: Ensure that: 
  13223.  
  13224.  o The TMP directory is set to a writable disk 
  13225.  o The directory exists and has enough available space 
  13226.  o No other processes are modifying the directory or file 
  13227.  o The file system is functioning properly 
  13228.  o The virtual disk for the directory, if you are using one, is large enough. 
  13229.  Try rebooting.  If the problem persists, contact your IBM Service 
  13230.  Representative. 
  13231.  
  13232.  
  13233. ΓòÉΓòÉΓòÉ 7.378. EDC4023 ΓòÉΓòÉΓòÉ
  13234.  
  13235. Error occurred while creating name. 
  13236.  
  13237. An internal compiler error has occurred. 
  13238.  
  13239. Recovery: Contact your IBM Service Representative. 
  13240.  
  13241.  
  13242. ΓòÉΓòÉΓòÉ 7.379. EDC4024 ΓòÉΓòÉΓòÉ
  13243.  
  13244. Expression contains modulo by zero. 
  13245.  
  13246. The optimizer identified an expression containing modulo by zero. 
  13247.  
  13248. Recovery: Eliminate the modulo by zero if it was not intended. 
  13249.  
  13250.  
  13251. ΓòÉΓòÉΓòÉ 7.380. EDC4026 ΓòÉΓòÉΓòÉ
  13252.  
  13253. Data definitions require more 16-bit segments than are allowed. 
  13254.  
  13255. The data declared requires more 16-bit segments than the maximum 242 available. 
  13256.  
  13257. Recovery: Break the program down into several smaller programs, or use less 
  13258. data. 
  13259.  
  13260.  
  13261. ΓòÉΓòÉΓòÉ 7.381. EDC4027 ΓòÉΓòÉΓòÉ
  13262.  
  13263. The text associated with a #pragma comment user is too long. 
  13264.  
  13265. The text of the #pragma comment user directive exceeds the limit of 255 
  13266. characters. 
  13267.  
  13268. Recovery: Shorten the text of the comment, or use multiple #pragma comment user 
  13269. directives. 
  13270.  
  13271.  
  13272. ΓòÉΓòÉΓòÉ 7.382. EDC4028 ΓòÉΓòÉΓòÉ
  13273.  
  13274. The path or file name for output file &2 is not valid. 
  13275.  
  13276. The path or file name given has not been specified correctly. 
  13277.  
  13278. Recovery: Check the spelling and syntax of the path or file name and change the 
  13279. name accordingly. 
  13280.  
  13281.  
  13282. ΓòÉΓòÉΓòÉ 7.383. EDC4029 ΓòÉΓòÉΓòÉ
  13283.  
  13284. Open access denied for output file &2. 
  13285.  
  13286. The file system will not allow the specified file to be opened. You may be 
  13287. trying to write to a readonly disk. 
  13288.  
  13289. Recovery: Direct output to a writable disk. 
  13290.  
  13291.  
  13292. ΓòÉΓòÉΓòÉ 7.384. EDC4030 ΓòÉΓòÉΓòÉ
  13293.  
  13294. Cannot open output file &2. 
  13295.  
  13296. An operating system or compiler error has occurred. 
  13297.  
  13298. Recovery: See the Recovery for message EDC4014. 
  13299.  
  13300.  
  13301. ΓòÉΓòÉΓòÉ 7.385. EDC4031 ΓòÉΓòÉΓòÉ
  13302.  
  13303. Cannot open output file &2. The file is already open. 
  13304.  
  13305. Another process has already opened the file. 
  13306.  
  13307. Recovery: Close the file and compile again. 
  13308.  
  13309.  
  13310. ΓòÉΓòÉΓòÉ 7.386. EDC4032 ΓòÉΓòÉΓòÉ
  13311.  
  13312. Cannot write to the output file. The disk is full. 
  13313.  
  13314. Recovery: Delete some files to make some space on the disk. 
  13315.  
  13316.  
  13317. ΓòÉΓòÉΓòÉ 7.387. EDC4033 ΓòÉΓòÉΓòÉ
  13318.  
  13319. Precondition violated. 
  13320.  
  13321. An internal compiler error has occurred. 
  13322.  
  13323. Recovery:See your IBM Service Representative. 
  13324.  
  13325.  
  13326. ΓòÉΓòÉΓòÉ 7.388. EDC4034 ΓòÉΓòÉΓòÉ
  13327.  
  13328. The command line passed to the Back End is not correct. 
  13329.  
  13330. An internal compiler error has occurred. 
  13331.  
  13332. Recovery: Contact your IBM Service Representative. 
  13333.  
  13334.  
  13335. ΓòÉΓòÉΓòÉ 7.389. EDC4035 ΓòÉΓòÉΓòÉ
  13336.  
  13337. Error occurred while opening source file. 
  13338.  
  13339. An operating system or compiler error has occurred. 
  13340.  
  13341. Recovery: Ensure that: 
  13342.  
  13343.  o No other processes are modifying the directory or file 
  13344.  o The virtual disk for the directory, if you are using one, is large enough. 
  13345.  Try rebooting.  If the problem persists, contact your IBM Service 
  13346.  Representative. 
  13347.  
  13348.  
  13349. ΓòÉΓòÉΓòÉ 7.390. EDC4036 ΓòÉΓòÉΓòÉ
  13350.  
  13351. The path or file name for source file &2 is not valid. 
  13352.  
  13353. The path or file name given has not been specified correctly. 
  13354.  
  13355. Recovery:Check the spelling and syntax of the path or file name and change the 
  13356. name accordingly. 
  13357.  
  13358.  
  13359. ΓòÉΓòÉΓòÉ 7.391. EDC4037 ΓòÉΓòÉΓòÉ
  13360.  
  13361. Open access denied for source file &2. 
  13362.  
  13363. The file system will not allow the specified file to be opened. because of an 
  13364. OS/2 file system error. Recovery: Try rebooting.  If the problem persists, 
  13365. contact your IBM Service Representative. 
  13366.  
  13367.  
  13368. ΓòÉΓòÉΓòÉ 7.392. EDC4038 ΓòÉΓòÉΓòÉ
  13369.  
  13370. Cannot open source file &2. 
  13371.  
  13372. An operating system or compiler error has occurred. 
  13373.  
  13374. Recovery:See the Recovery for message EDC4035. 
  13375.  
  13376.  
  13377. ΓòÉΓòÉΓòÉ 7.393. EDC4039 ΓòÉΓòÉΓòÉ
  13378.  
  13379. Cannot open source file &2. The file is already open. 
  13380.  
  13381. Another process has already opened the file. 
  13382.  
  13383. Recovery:Close the file and compile again. 
  13384.  
  13385.  
  13386. ΓòÉΓòÉΓòÉ 7.394. EDC4040 ΓòÉΓòÉΓòÉ
  13387.  
  13388. Assembler listing line is too long for successful assembly. 
  13389.  
  13390. The line in the assembler listing is too long to be assembled. 
  13391.  
  13392. Recovery:Try using shorter variable and function names. 
  13393.  
  13394.  
  13395. ΓòÉΓòÉΓòÉ 7.395. EDC4041 ΓòÉΓòÉΓòÉ
  13396.  
  13397. Error occurred while closing source file. 
  13398.  
  13399. An operating system or compiler error has occurred. 
  13400.  
  13401. Recovery:See the Recovery for message EDC4035. 
  13402.  
  13403.  
  13404. ΓòÉΓòÉΓòÉ 7.396. EDC4042 ΓòÉΓòÉΓòÉ
  13405.  
  13406. Cannot use __parmdwords in a non SYSTEM linkage function. 
  13407.  
  13408. The __parmdwords function can only be called from a function that uses system 
  13409. linkage. 
  13410.  
  13411. Recovery:Change the linkage type of the function using the /Ms compiler option 
  13412. or the _System keyword, or remove the call to __parmdwords. 
  13413.  
  13414.  
  13415. ΓòÉΓòÉΓòÉ 8. Run-Time Return Codes and Messages ΓòÉΓòÉΓòÉ
  13416.  
  13417. This section contains information about the run-time messages and should not be 
  13418. used as programming interface information. 
  13419.  
  13420. The value of the return code from a run-time error is set in one of the 
  13421. following ways: 
  13422.  
  13423.  o By the initialization or termination routines of the C/C++ for OS/2 runtime 
  13424.    library or by the C program management routines 
  13425.  o By the return statement in your main program 
  13426.  o By calling the exit or abort functions from your C program (or _exit or from 
  13427.    the migration libraries) 
  13428.  o By calling the DosExit API. 
  13429.  
  13430.  It is possible to pass a return code from a C program to the program that 
  13431.  invoked it.  For example, if the C program is invoked by the operating system, 
  13432.  a return code can be passed either for examination in a subsequent program, if 
  13433.  running of that program is conditional upon the value of the code returned, or 
  13434.  merely to indicate conditions that were encountered during running. 
  13435.  
  13436.  The return code generated by a C/C++ for OS/2 program can be expected to be 
  13437.  within the valid range of the int type. The range of values may be smaller if 
  13438.  the return code is checked inside a batch .CMD file. See the OS/2 2.0 
  13439.  documentation for the acceptable range of return codes. 
  13440.  
  13441.  Unless an error is detected that prevents the program management functions of 
  13442.  the C/C++ for OS/2 from operating correctly, the return code is always 
  13443.  returned to the caller of the program. 
  13444.  
  13445.  If your program did not specify a value for the return code either by an 
  13446.  explicit return statement or by an exit statement, the return value is 
  13447.  undefined. 
  13448.  
  13449.  Related Information 
  13450.  
  13451.  o Run-Time Messages 
  13452.  o return 
  13453.  o -- Reference abort not found -- 
  13454.  o -- Reference exit not found -- 
  13455.  o -- Reference usexit not found -- 
  13456.  
  13457.  
  13458. ΓòÉΓòÉΓòÉ 8.1. Run-Time Messages ΓòÉΓòÉΓòÉ
  13459.  
  13460. These are messages you see while your C/C++ for OS/2 program is running. 
  13461. Run-time messages are produced in one of three ways: 
  13462.  
  13463.  o Through a call to the perror or strerror function 
  13464.  o In a machine-state dump when the exception handler terminates a program 
  13465.  o Through a call to a debug memory management function. 
  13466.  
  13467.  In extreme circumstances, when a run-time library function fails, an INTERNAL 
  13468.  LIBRARY ERROR message is displayed along with the name of the library function 
  13469.  that has failed. Make sure you have correctly installed the compiler. If the 
  13470.  problem persists, contact your IBM service representative. 
  13471.  
  13472.  The panels following this one list the error messages associated with errno 
  13473.  values, in the format shown below. You can use the perror and strerror library 
  13474.  functions to print these messages.  The errno value does not prefix the 
  13475.  message. Not all error messages are associated with an errno value. 
  13476.  
  13477.  Note:  While the integer value of errno is not to be used as programming 
  13478.  interface information, you can use the macro values defined in <errno.h> as a 
  13479.  programming interface. 
  13480.  
  13481.  Message Format:     EDCnnnn : text 
  13482.  
  13483.     where:
  13484.  
  13485.              nnnn - error message number
  13486.              text - message text, which may contain substitution
  13487.                 text indicated by &n
  13488.  
  13489.  Related Information 
  13490.  
  13491.  o -- Reference perror not found -- 
  13492.  o -- Reference strerro not found -- 
  13493.  o -- Reference errnoh not found -- 
  13494.  o Run-Time Return Codes and Messages 
  13495.  
  13496.  
  13497. ΓòÉΓòÉΓòÉ 8.2. EDC5000 ΓòÉΓòÉΓòÉ
  13498.  
  13499. Errno is 0. 
  13500.  
  13501. No error occurred. 
  13502.  
  13503.  
  13504. ΓòÉΓòÉΓòÉ 8.3. EDC5001 ΓòÉΓòÉΓòÉ
  13505.  
  13506. Domain error. 
  13507.  
  13508. errno Value:EDOM 
  13509.  
  13510. A parameter used is beyond the allowable domain of the function. 
  13511.  
  13512. Recovery:Check the domain of the function and change the parameter. 
  13513.  
  13514.  
  13515. ΓòÉΓòÉΓòÉ 8.4. EDC5002 ΓòÉΓòÉΓòÉ
  13516.  
  13517. Range error. 
  13518.  
  13519. errno Value:ERANGE 
  13520.  
  13521. The value computed is outside the allowable range of the function. 
  13522.  
  13523. Recovery:Check the range of the function and ensure your values work within it. 
  13524.  
  13525.  
  13526. ΓòÉΓòÉΓòÉ 8.5. EDC5003 ΓòÉΓòÉΓòÉ
  13527.  
  13528. The file type parameter is not correct. 
  13529.  
  13530. errno Value:EBADMODE 
  13531.  
  13532. Recovery:Change the parameter to a valid file type. 
  13533.  
  13534.  
  13535. ΓòÉΓòÉΓòÉ 8.6. EDC5004 ΓòÉΓòÉΓòÉ
  13536.  
  13537. The file name is "", a null pointer, or an invalid DDNAME. 
  13538.  
  13539. errno Value:EBADNAME 
  13540.  
  13541. The file name or DDNAME was not specified correctly. 
  13542.  
  13543. Recovery: Use the correct file name or DDNAME. 
  13544.  
  13545.  
  13546. ΓòÉΓòÉΓòÉ 8.7. EDC5005 ΓòÉΓòÉΓòÉ
  13547.  
  13548. Temporary memory files cannot be reopened. 
  13549.  
  13550. errno Value:EISTEMPMEM 
  13551.  
  13552. Recovery:Use a normal memory file or a temporary disk file. 
  13553.  
  13554.  
  13555. ΓòÉΓòÉΓòÉ 8.8. EDC5006 ΓòÉΓòÉΓòÉ
  13556.  
  13557. The file sharing mode specified is not correct. 
  13558.  
  13559. errno Value:EBADSHARE 
  13560.  
  13561. Valid sharing modes are NONE, ALL, and READ. 
  13562.  
  13563. Recovery:Specify a valid sharing mode. 
  13564.  
  13565.  
  13566. ΓòÉΓòÉΓòÉ 8.9. EDC5007 ΓòÉΓòÉΓòÉ
  13567.  
  13568. The buffering mode specified is not correct. 
  13569.  
  13570. errno Value:EBUFMODE 
  13571.  
  13572. The buffer mode was not correct.  Valid buffering modes are IOLBF, IOFBF, and 
  13573. IONBF. 
  13574.  
  13575. Recovery:Specify a valid buffering mode. 
  13576.  
  13577.  
  13578. ΓòÉΓòÉΓòÉ 8.10. EDC5008 ΓòÉΓòÉΓòÉ
  13579.  
  13580. A previous error occurred on the stream. 
  13581.  
  13582. errno Value:EERRSET 
  13583.  
  13584. A previous fatal error occurred on the stream and this is the first opportunity 
  13585. to report it. 
  13586.  
  13587. Recovery:Close the stream and retry the operation. 
  13588.  
  13589.  
  13590. ΓòÉΓòÉΓòÉ 8.11. EDC5009 ΓòÉΓòÉΓòÉ
  13591.  
  13592. The file is open. 
  13593.  
  13594. errno Value:EISOPEN 
  13595.  
  13596. The operation is not permitted on the file because a process has the file open 
  13597. in an incorrect sharing mode. 
  13598.  
  13599. Recovery:Close the file and retry the operation, or ensure the sharing modes 
  13600. are consistent. 
  13601.  
  13602.  
  13603. ΓòÉΓòÉΓòÉ 8.12. EDC5010 ΓòÉΓòÉΓòÉ
  13604.  
  13605. Cannot find the file. 
  13606.  
  13607. errno Value:ENOTEXIST 
  13608.  
  13609. The file specified cannot be found. Either the file name was not correctly 
  13610. specified, or the file has not been created. 
  13611.  
  13612. Recovery:Ensure the file name is correctly specified or create the file. 
  13613.  
  13614.  
  13615. ΓòÉΓòÉΓòÉ 8.13. EDC5011 ΓòÉΓòÉΓòÉ
  13616.  
  13617. This operation must be done before any reads, writes or repositions. 
  13618.  
  13619. errno Value:ENOTINIT 
  13620.  
  13621. Recovery:Correct the program logic. 
  13622.  
  13623.  
  13624. ΓòÉΓòÉΓòÉ 8.14. EDC5012 ΓòÉΓòÉΓòÉ
  13625.  
  13626. The stream pointer is NULL. 
  13627.  
  13628. errno Value:ENULLFCB 
  13629.  
  13630. The stream pointer must point to a valid stream. 
  13631.  
  13632. Recovery:Ensure the stream pointer points to a valid stream, and reopen the 
  13633. stream. 
  13634.  
  13635.  
  13636. ΓòÉΓòÉΓòÉ 8.15. EDC5013 ΓòÉΓòÉΓòÉ
  13637.  
  13638. Not enough memory is available to complete the operation. 
  13639.  
  13640. errno Value:EOUTOFMEM 
  13641.  
  13642. Recovery:Ensure that memory is being freed when it is no longer used, and that 
  13643. memory swapping is allowed. Use the _heapmin function to release unused memory 
  13644. from the heap. Stop large programs from running while the current application 
  13645. is being run. 
  13646.  
  13647.  
  13648. ΓòÉΓòÉΓòÉ 8.16. EDC5014 ΓòÉΓòÉΓòÉ
  13649.  
  13650. The specified buffer size is too small. 
  13651.  
  13652. errno Value:ESMALLBF 
  13653.  
  13654. Recovery:Specify a larger buffer for the file. 
  13655.  
  13656.  
  13657. ΓòÉΓòÉΓòÉ 8.17. EDC5016 ΓòÉΓòÉΓòÉ
  13658.  
  13659. The file already exists. 
  13660.  
  13661. errno Value:EEXIST 
  13662.  
  13663. An attempt was made to rename a file to an already existing file name. 
  13664.  
  13665. Recovery:Change the name of the existing file or of the new file. 
  13666.  
  13667.  
  13668. ΓòÉΓòÉΓòÉ 8.18. EDC5017 ΓòÉΓòÉΓòÉ
  13669.  
  13670. A unique file name cannot be generated. 
  13671.  
  13672. errno Value:ENOGEN 
  13673.  
  13674. A call to tmpnam or _tempnam failed because all unique file names have been 
  13675. used. 
  13676.  
  13677. Recovery:Close at least one temporary file. 
  13678.  
  13679.  
  13680. ΓòÉΓòÉΓòÉ 8.19. EDC5019 ΓòÉΓòÉΓòÉ
  13681.  
  13682. The seek operation is not valid for this stream. 
  13683.  
  13684. errno Value:ENOSEEK 
  13685.  
  13686. The stream is connected to a device that does not permit the seek operation. 
  13687.  
  13688. Recovery:Remove the seek operation or point the stream to a different device. 
  13689.  
  13690.  
  13691. ΓòÉΓòÉΓòÉ 8.20. EDC5020 ΓòÉΓòÉΓòÉ
  13692.  
  13693. The file position is not valid. 
  13694.  
  13695. errno Value:EBADPOS 
  13696.  
  13697. The file position is not valid for a file positioning function. 
  13698.  
  13699. Recovery:Rewind the file or call fflush to clear any characters put back to the 
  13700. stream, and retry the operation. 
  13701.  
  13702.  
  13703. ΓòÉΓòÉΓòÉ 8.21. EDC5022 ΓòÉΓòÉΓòÉ
  13704.  
  13705. Attempted to seek to an invalid file position. 
  13706.  
  13707. errno Value:EBADSEEK 
  13708.  
  13709. The combination of starting point and offset values specified for the fseek 
  13710. function is not valid for the file, or an attempt was made to seek beyond the 
  13711. beginning of a binary or text file. 
  13712.  
  13713. Recovery:Ensure the values specified for fseek are valid. 
  13714.  
  13715.  
  13716. ΓòÉΓòÉΓòÉ 8.22. EDC5023 ΓòÉΓòÉΓòÉ
  13717.  
  13718. The file or directory specified cannot be found. 
  13719.  
  13720. errno Value:ENOENT 
  13721.  
  13722. Recovery:Ensure the path name and file name are specified correctly. Create the 
  13723. file or directory if necessary. 
  13724.  
  13725.  
  13726. ΓòÉΓòÉΓòÉ 8.23. EDC5024 ΓòÉΓòÉΓòÉ
  13727.  
  13728. The file or directory specified is read-only. 
  13729.  
  13730. errno Value:EACCESS 
  13731.  
  13732. The path name specifies a file or directory that cannot be written to. 
  13733.  
  13734. Recovery: Change the file name if necessary or remove the read-only attribute 
  13735. from the file or directory. 
  13736.  
  13737.  
  13738. ΓòÉΓòÉΓòÉ 8.24. EDC5025 ΓòÉΓòÉΓòÉ
  13739.  
  13740. Too many files are open. 
  13741.  
  13742. errno Value:EMFILE 
  13743.  
  13744. The file specified cannot be opened to change its modification time because too 
  13745. many files are open. 
  13746.  
  13747. Recovery:Close some files. 
  13748.  
  13749.  
  13750. ΓòÉΓòÉΓòÉ 8.25. EDC5026 ΓòÉΓòÉΓòÉ
  13751.  
  13752. The command processor cannot be found. 
  13753.  
  13754. errno Value:ENOCMD 
  13755.  
  13756. The command processor specified by the COMSPEC environment variable cannot be 
  13757. found, and CMD.EXE cannot be found in any of the directories specified by the 
  13758. PATH environment variable. 
  13759.  
  13760. Recovery:Ensure that the COMSPEC variable specifies a valid path and file name 
  13761. for the command processor, and/or that CMD.EXE exists in one of the directories 
  13762. specified by PATH. 
  13763.  
  13764.  
  13765. ΓòÉΓòÉΓòÉ 8.26. EDC5028 ΓòÉΓòÉΓòÉ
  13766.  
  13767. A read operation cannot immediately follow a write operation. 
  13768.  
  13769. errno Value:EGETANDPUT 
  13770.  
  13771. Recovery:Flush the stream or use one of the repositioning functions before 
  13772. doing a read operation. 
  13773.  
  13774.  
  13775. ΓòÉΓòÉΓòÉ 8.27. EDC5029 ΓòÉΓòÉΓòÉ
  13776.  
  13777. Attempted to read past end-of-file. 
  13778.  
  13779. errno Value:EPASTEOF 
  13780.  
  13781. Recovery:Reposition the file before reading. 
  13782.  
  13783.  
  13784. ΓòÉΓòÉΓòÉ 8.28. EDC5030 ΓòÉΓòÉΓòÉ
  13785.  
  13786. The file is not open for reading. 
  13787.  
  13788. errno Value:ENOTREAD 
  13789.  
  13790. Recovery:Close the file and reopen it in a mode that permits reading. 
  13791.  
  13792.  
  13793. ΓòÉΓòÉΓòÉ 8.29. EDC5031 ΓòÉΓòÉΓòÉ
  13794.  
  13795. Too many consecutive calls to ungetc. 
  13796.  
  13797. errno Value:ETOOMANYUNGETC 
  13798.  
  13799. The ungetc function is not guaranteed to work for consecutive calls. 
  13800.  
  13801. Recovery:Read the last ungetc character, or use one of the repositioning 
  13802. functions to clear the buffer. 
  13803.  
  13804.  
  13805. ΓòÉΓòÉΓòÉ 8.30. EDC5032 ΓòÉΓòÉΓòÉ
  13806.  
  13807. Cannot put EOF character back to the stream. 
  13808.  
  13809. errno Value:EUNGETEOF 
  13810.  
  13811. The EOF character is not a valid parameter to ungetc or ungetch. 
  13812.  
  13813. Recovery:Eliminate the ungetc or ungetch operation. 
  13814.  
  13815.  
  13816. ΓòÉΓòÉΓòÉ 8.31. EDC5033 ΓòÉΓòÉΓòÉ
  13817.  
  13818. Cannot put a character back to the stream immediately following a write 
  13819. operation on that stream. 
  13820.  
  13821. errno Value:EPUTUNGET 
  13822.  
  13823. The ungetc or ungetch. function cannot be used immediately following a write 
  13824. operation. 
  13825.  
  13826. Recovery:Flush the stream or use one of the repositioning functions before 
  13827. using the unget operation. 
  13828.  
  13829.  
  13830. ΓòÉΓòÉΓòÉ 8.32. EDC5034 ΓòÉΓòÉΓòÉ
  13831.  
  13832. The process identifier specified for the child process is not valid. 
  13833.  
  13834. errno Value:ECHILD 
  13835.  
  13836. The child process does not exist, or the process identifier is not correct. 
  13837.  
  13838. Recovery:Make sure that the process identifier for the child process to be 
  13839. waited on is correct. 
  13840.  
  13841.  
  13842. ΓòÉΓòÉΓòÉ 8.33. EDC5035 ΓòÉΓòÉΓòÉ
  13843.  
  13844. The child process ended abnormally. 
  13845.  
  13846. errno Value:EINTR 
  13847.  
  13848. A trap, an unintercepted DosKill call or exception, or a hardware error 
  13849. occurred. 
  13850.  
  13851. Recovery:Check the code in the child process. 
  13852.  
  13853.  
  13854. ΓòÉΓòÉΓòÉ 8.34. EDC5036 ΓòÉΓòÉΓòÉ
  13855.  
  13856. The action code specified is not correct. 
  13857.  
  13858. errno Value:EINVAL 
  13859.  
  13860. Valid action codes for _cwait are WAIT_CHILD and WAIT_GRANDCHILD. 
  13861.  
  13862. Recovery:Specify a valid action code. 
  13863.  
  13864.  
  13865. ΓòÉΓòÉΓòÉ 8.35. EDC5037 ΓòÉΓòÉΓòÉ
  13866.  
  13867. Cannot run the specified file. 
  13868.  
  13869. errno Value:ENOEXEC 
  13870.  
  13871. The executable format of the file is not valid, or the file is not an 
  13872. executable file. 
  13873.  
  13874. Recovery:Ensure the file specified is a valid excutable file. 
  13875.  
  13876.  
  13877. ΓòÉΓòÉΓòÉ 8.36. EDC5038 ΓòÉΓòÉΓòÉ
  13878.  
  13879. Cannot start another process. 
  13880.  
  13881. errno Value:EAGAIN 
  13882.  
  13883. Another process cannot be created because it will exceed the maximum number of 
  13884. processes allowed by OS/2. 
  13885.  
  13886. Recovery:Close some of the other processes running. 
  13887.  
  13888.  
  13889. ΓòÉΓòÉΓòÉ 8.37. EDC5039 ΓòÉΓòÉΓòÉ
  13890.  
  13891. The stream specified is the wrong type for the operation. 
  13892.  
  13893. errno Value:EBADTYPE 
  13894.  
  13895. Recovery:Use the correct type of stream for the operation required. 
  13896.  
  13897.  
  13898. ΓòÉΓòÉΓòÉ 8.38. EDC5040 ΓòÉΓòÉΓòÉ
  13899.  
  13900. The file is not opened for writing. 
  13901.  
  13902. errno Value:ENOTWRITE 
  13903.  
  13904. The file may be opened in read mode. 
  13905.  
  13906. Recovery:Reopen the file with a file mode that allows the write operation. 
  13907.  
  13908.  
  13909. ΓòÉΓòÉΓòÉ 8.39. EDC5041 ΓòÉΓòÉΓòÉ
  13910.  
  13911. A write operation cannot immediately follow a read operation. 
  13912.  
  13913. errno Value:EPUTANDGET 
  13914.  
  13915. Recovery:Flush the stream or use one of the repositioning functions before 
  13916. doing the write operation. 
  13917.  
  13918.  
  13919. ΓòÉΓòÉΓòÉ 8.40. EDC5042 ΓòÉΓòÉΓòÉ
  13920.  
  13921. The specified buffer size is too large. 
  13922.  
  13923. errno Value:ELARGEBF 
  13924.  
  13925. The size of the buffer must be in the range of a long int. 
  13926.  
  13927. Recovery:Specify a smaller buffer size. 
  13928.  
  13929.  
  13930. ΓòÉΓòÉΓòÉ 8.41. EDC5043 ΓòÉΓòÉΓòÉ
  13931.  
  13932. The file handle parameter is not valid. 
  13933.  
  13934. errno Value:EBADF 
  13935.  
  13936. The file handle passed to _fstat must be recognized by the OS/2 system. 
  13937.  
  13938. Recovery:Specify a valid file handle. 
  13939.  
  13940.  
  13941. ΓòÉΓòÉΓòÉ 8.42. EDC5044 ΓòÉΓòÉΓòÉ
  13942.  
  13943. Cannot rename a file to a different device. 
  13944.  
  13945. errno Value:EXDEV 
  13946.  
  13947. A file cannot be renamed to a different drive or device. 
  13948.  
  13949. Recovery:Rename the file to a different name or copy the file to the new device 
  13950. and then rename it. 
  13951.  
  13952.  
  13953. ΓòÉΓòÉΓòÉ 8.43. EDC5045 ΓòÉΓòÉΓòÉ
  13954.  
  13955. There is no space left on the device. 
  13956.  
  13957. errno Value:ENOSPC 
  13958.  
  13959. There is not enough free space on the device to complete the requested 
  13960. operation. 
  13961.  
  13962. Recovery: Remove any files that are not needed from the device and try the 
  13963. operation again. 
  13964.  
  13965.  
  13966. ΓòÉΓòÉΓòÉ 8.44. EDC5046 ΓòÉΓòÉΓòÉ
  13967.  
  13968. An unrecognized exception occurred in a math routine. The control word has 
  13969. probably been changed. 
  13970.  
  13971. errno Value:EMATH 
  13972.  
  13973.  
  13974. ΓòÉΓòÉΓòÉ 8.45. EDC5047 ΓòÉΓòÉΓòÉ
  13975.  
  13976. The DLL specified cannot be found. 
  13977.  
  13978. errno Value:EMODNAME 
  13979.  
  13980. The DLL may not exist, or may not be specified in the LIBPATH environment 
  13981. variable. 
  13982.  
  13983. Recovery:Ensure the name is correct and is specified in the LIBPATH variable. 
  13984.  
  13985.  
  13986. ΓòÉΓòÉΓòÉ 8.46. EDC5049 ΓòÉΓòÉΓòÉ
  13987.  
  13988. The value specified for BLKSIZE or LRECL is too large. 
  13989.  
  13990. errno Value:EMAXATTR 
  13991.  
  13992. See fopen for the range of valid values for BLKSIZE and LRECL. 
  13993.  
  13994. Recovery:Specify valid values for BLKSIZE and LRECL. 
  13995.  
  13996.  
  13997. ΓòÉΓòÉΓòÉ 8.47. EDC5050 ΓòÉΓòÉΓòÉ
  13998.  
  13999. Error in reading the C Locale Description (.CLD) file. 
  14000.  
  14001. errno Value:EREADERROR 
  14002.  
  14003. The .CLD file specified in your DPATH variable may be damaged or have an 
  14004. incorrect format. 
  14005.  
  14006. Recovery:Ensure the DPATH variable points to a valid .CLD file. If the file is 
  14007. damaged, reinstall it. 
  14008.  
  14009.  
  14010. ΓòÉΓòÉΓòÉ 8.48. EDC5051 ΓòÉΓòÉΓòÉ
  14011.  
  14012. The value specified for blksize or lrecl conflicts with a previously set value. 
  14013.  
  14014. errno Value:EBADATTR 
  14015.  
  14016. The values for blksize and lrecl may have been set by both a ddname and by 
  14017. fopen. 
  14018.  
  14019. Recovery:Ensure the values for blksize and lrecl are consistent. 
  14020.  
  14021.  
  14022. ΓòÉΓòÉΓòÉ 8.49. EDC5060 ΓòÉΓòÉΓòÉ
  14023.  
  14024. OS/2 returned error code &1. 
  14025.  
  14026. errno Value:EOS2ERR 
  14027.  
  14028. An operating system call returned the error code given. 
  14029.  
  14030. Recovery:Refer to the OS/2 documentation under the error code given. 
  14031.  
  14032.  
  14033. ΓòÉΓòÉΓòÉ 8.50. EDC5098 ΓòÉΓòÉΓòÉ
  14034.  
  14035. The floating-point conversion code is not linked in. 
  14036.  
  14037. An attempt was made to print a non-floating-point variable using a 
  14038. floating-point format specifier. 
  14039.  
  14040. Recovery:Ensure the correct format specifier is used for the type of variable 
  14041. to be printed. 
  14042.  
  14043.  
  14044. ΓòÉΓòÉΓòÉ 8.51. EDC5099 ΓòÉΓòÉΓòÉ
  14045.  
  14046. Internal library error in function: &1, line: &2. 
  14047.  
  14048. An internal library error has occurred. 
  14049.  
  14050. Recovery:Contact your IBM Service Representative. 
  14051.  
  14052.  
  14053. ΓòÉΓòÉΓòÉ 8.52. EDC5100 ΓòÉΓòÉΓòÉ
  14054.  
  14055. Not enough storage is available to complete initialization. 
  14056.  
  14057. Recovery:Stop large programs from running while the current application is 
  14058. being run. 
  14059.  
  14060.  
  14061. ΓòÉΓòÉΓòÉ 8.53. EDC5101 ΓòÉΓòÉΓòÉ
  14062.  
  14063. Assertion failed: &1, file: &2, line: &3. 
  14064.  
  14065. This is the message generated by the assert macro. 
  14066.  
  14067. Recovery:Correct the error that caused the assertion to fail. 
  14068.  
  14069.  
  14070. ΓòÉΓòÉΓòÉ 8.54. Exception Messages ΓòÉΓòÉΓòÉ
  14071.  
  14072. EDC5101 to EDC5145 are generated when an unhandled or incorrectly handled 
  14073. exception occurs, and are displayed in the resulting machine-state dump. 
  14074. Exceptions are explained in more detail in the OS/2 documentation. For more 
  14075. information on these messages, see For more information on these messages, see 
  14076. the section on exception handling in the IBM C/C++ for OS/2 Programming Guide. 
  14077.  
  14078.  
  14079. ΓòÉΓòÉΓòÉ 8.55. EDC5102 ΓòÉΓòÉΓòÉ
  14080.  
  14081. Integer Division by Zero exception occurred at EIP = &1 on thread &2. 
  14082.  
  14083. An Integer Division by Zero exception occurred at the location indicated. 
  14084.  
  14085. Recovery:Correct the code and recompile. 
  14086.  
  14087.  
  14088. ΓòÉΓòÉΓòÉ 8.56. EDC5103 ΓòÉΓòÉΓòÉ
  14089.  
  14090. Invalid Opcode exception occurred at EIP = &1 on thread &2. 
  14091.  
  14092. An Invalid Opcode exception occurred at the location indicated. 
  14093.  
  14094. Recovery:Correct the code and recompile. 
  14095.  
  14096.  
  14097. ΓòÉΓòÉΓòÉ 8.57. EDC5104 ΓòÉΓòÉΓòÉ
  14098.  
  14099. General Protection Fault exception occurred at EIP = &1 on thread &2. 
  14100.  
  14101. A General Protection Fault exception occurred at the location indicated. 
  14102.  
  14103. Recovery:Correct the code and recompile. 
  14104.  
  14105.  
  14106. ΓòÉΓòÉΓòÉ 8.58. EDC5106 ΓòÉΓòÉΓòÉ
  14107.  
  14108. Guard Page Allocation Failure exception occurred at EIP = &1 on thread &2. 
  14109.  
  14110. The compiler has run out of stack space. 
  14111.  
  14112. Recovery:Allocate more stack space and recompile. 
  14113.  
  14114.  
  14115. ΓòÉΓòÉΓòÉ 8.59. EDC5107 ΓòÉΓòÉΓòÉ
  14116.  
  14117. Process terminated by SIGBREAK. 
  14118.  
  14119. The SIGBREAK signal will end the process. 
  14120.  
  14121.  
  14122. ΓòÉΓòÉΓòÉ 8.60. EDC5108 ΓòÉΓòÉΓòÉ
  14123.  
  14124. Process terminated by SIGINT. 
  14125.  
  14126. The SIGINT signal will end the process. 
  14127.  
  14128.  
  14129. ΓòÉΓòÉΓòÉ 8.61. EDC5109 ΓòÉΓòÉΓòÉ
  14130.  
  14131. Process terminated by SIGTERM. 
  14132.  
  14133. The SIGTERM signal will end the process. 
  14134.  
  14135.  
  14136. ΓòÉΓòÉΓòÉ 8.62. EDC5110 ΓòÉΓòÉΓòÉ
  14137.  
  14138. Overflow exception occurred at EIP = &1 on thread &2. 
  14139.  
  14140. An Overflow exception occurred at the location indicated. 
  14141.  
  14142. Recovery:Correct the code and recompile. 
  14143.  
  14144.  
  14145. ΓòÉΓòÉΓòÉ 8.63. EDC5111 ΓòÉΓòÉΓòÉ
  14146.  
  14147. Bound exception occurred at EIP = &1 on thread &2. 
  14148.  
  14149. A Bound exception occurred at the location indicated. 
  14150.  
  14151. Recovery:Correct the code and recompile. 
  14152.  
  14153.  
  14154. ΓòÉΓòÉΓòÉ 8.64. EDC5112 ΓòÉΓòÉΓòÉ
  14155.  
  14156. Exception number 0x&2 occurred at EIP = &1 on thread &2. 
  14157.  
  14158. The exception identified by the number given occurred at the location 
  14159. indicated. 
  14160.  
  14161. Recovery:Correct the code and recompile. 
  14162.  
  14163.  
  14164. ΓòÉΓòÉΓòÉ 8.65. EDC5113 ΓòÉΓòÉΓòÉ
  14165.  
  14166. Exception was marked as noncontinuable. 
  14167.  
  14168. The operating system will not allow the exception to be continued. This is an 
  14169. informational message that may accompany an initial exception message. 
  14170.  
  14171.  
  14172. ΓòÉΓòÉΓòÉ 8.66. EDC5114 ΓòÉΓòÉΓòÉ
  14173.  
  14174. Exception occurred handling a prior exception. 
  14175.  
  14176. The exception occurred inside the exception handler. This is an informational 
  14177. message that may accompany an initial exception message. 
  14178.  
  14179.  
  14180. ΓòÉΓòÉΓòÉ 8.67. EDC5115 ΓòÉΓòÉΓòÉ
  14181.  
  14182. Process terminating. 
  14183.  
  14184. Confirmational message generated by the exception handler. This is an 
  14185. informational message that may accompany an initial exception message. 
  14186.  
  14187.  
  14188. ΓòÉΓòÉΓòÉ 8.68. EDC5116 ΓòÉΓòÉΓòÉ
  14189.  
  14190. Register dump at point of exception: 
  14191.  
  14192. This message indicates a machine-dump was performed. The machine state follows 
  14193. and may consist of any combination of the messages EDC5117-EDC0121 and 
  14194. EDC5124-EDC0130. 
  14195.  
  14196.  
  14197. ΓòÉΓòÉΓòÉ 8.69. EDC5117 ΓòÉΓòÉΓòÉ
  14198.  
  14199. EAX = &1   EBX = &2  ECX = &3   EDX = &4 
  14200.  
  14201. These are the values of the registers at the time of the exception. 
  14202.  
  14203.  
  14204. ΓòÉΓòÉΓòÉ 8.70. EDC5118 ΓòÉΓòÉΓòÉ
  14205.  
  14206. EBP = &1   EDI = &2  ESI = &3   ESP = &4 
  14207.  
  14208. These are the values of the registers at the time of the exception. 
  14209.  
  14210.  
  14211. ΓòÉΓòÉΓòÉ 8.71. EDC5119 ΓòÉΓòÉΓòÉ
  14212.  
  14213. CS =   &1  CSLIM = &2  DS =   &3  DSLIM = &4 
  14214.  
  14215. These are the values of the registers at the time of the exception. 
  14216.  
  14217.  
  14218. ΓòÉΓòÉΓòÉ 8.72. EDC5120 ΓòÉΓòÉΓòÉ
  14219.  
  14220. ES =   &1  ESLIM = &2  FS =   &3  FSLIM = &4 
  14221.  
  14222. These are the values of the registers at the time of the exception. 
  14223.  
  14224.  
  14225. ΓòÉΓòÉΓòÉ 8.73. EDC5121 ΓòÉΓòÉΓòÉ
  14226.  
  14227. GS =   &1  GSLIM = &2  SS =   &3  SSLIM = &4 
  14228.  
  14229. These are the values of the registers at the time of the exception. 
  14230.  
  14231.  
  14232. ΓòÉΓòÉΓòÉ 8.74. EDC5122 ΓòÉΓòÉΓòÉ
  14233.  
  14234. Failed to register exception handler. 
  14235.  
  14236. A severe operating system error has occurred. 
  14237.  
  14238. Recovery:Contact your IBM Service Representative 
  14239.  
  14240.  
  14241. ΓòÉΓòÉΓòÉ 8.75. EDC5123 ΓòÉΓòÉΓòÉ
  14242.  
  14243. Invalid buffer passed to longjmp(). 
  14244.  
  14245. The buffer passed to the longjmp function is not valid. 
  14246.  
  14247. Recovery:Correct the code and recompile. 
  14248.  
  14249.  
  14250. ΓòÉΓòÉΓòÉ 8.76. EDC5124 ΓòÉΓòÉΓòÉ
  14251.  
  14252. NPX Environment: 
  14253.  
  14254. This is the state of the NPX at the time the exception occurred.  It may be 
  14255. accompanied by any combination of the messages EDC5125-EDC0130. 
  14256.  
  14257.  
  14258. ΓòÉΓòÉΓòÉ 8.77. EDC5125 ΓòÉΓòÉΓòÉ
  14259.  
  14260. CW = &1    TW = &2  IP = &4:&3 
  14261.  
  14262. These are the values of the control word, tag word, and instruction pointer in 
  14263. the NPX at the time the exception occurred. 
  14264.  
  14265.  
  14266. ΓòÉΓòÉΓòÉ 8.78. EDC5126 ΓòÉΓòÉΓòÉ
  14267.  
  14268. SW = &1  OPCODE = &2  OP = &4:&3 
  14269.  
  14270. These are the values of the status word, opcode, and the operand address in the 
  14271. NPX at the time the exception occurred. 
  14272.  
  14273.  
  14274. ΓòÉΓòÉΓòÉ 8.79. EDC5127 ΓòÉΓòÉΓòÉ
  14275.  
  14276. NPX Stack: 
  14277.  
  14278. This is the state of the NPX stack at the time the exception occurred. 
  14279.  
  14280.  
  14281. ΓòÉΓòÉΓòÉ 8.80. EDC5128 ΓòÉΓòÉΓòÉ
  14282.  
  14283. ST(&1): exponent = &3 significand = &2 &4 &5 
  14284.  
  14285. One copy of this message appears for each valid stack entry in the NPX. 
  14286.  
  14287.  
  14288. ΓòÉΓòÉΓòÉ 8.81. EDC5129 ΓòÉΓòÉΓòÉ
  14289.  
  14290. Exception occurred in C library routine called from EIP = &1 on thread &2. 
  14291.  
  14292. The exception occurred within a C library function. In this case, the EIP given 
  14293. is the instruction pointer in the user program where the call to the function 
  14294. occurred. This is an informational message that may accompany an initial 
  14295. exception message. 
  14296.  
  14297.  
  14298. ΓòÉΓòÉΓòÉ 8.82. EDC5130 ΓòÉΓòÉΓòÉ
  14299.  
  14300. No valid stack entries. 
  14301.  
  14302. There is no valid data in the NPX stack. 
  14303.  
  14304.  
  14305. ΓòÉΓòÉΓòÉ 8.83. EDC5131 ΓòÉΓòÉΓòÉ
  14306.  
  14307. Privileged Opcode exception occurred at EIP = &1 on thread &2. 
  14308.  
  14309. A Privileged Opcode exception occurred at the location indicated. 
  14310.  
  14311. Recovery:Correct the code and recompile. 
  14312.  
  14313.  
  14314. ΓòÉΓòÉΓòÉ 8.84. EDC5132 ΓòÉΓòÉΓòÉ
  14315.  
  14316. Data Misalignment Exception occurred at EIP = &1 on thread &2. 
  14317.  
  14318. A Data Misalignment Exception occurred at the location indicated. 
  14319.  
  14320. Recovery:Correct the code and recompile. 
  14321.  
  14322.  
  14323. ΓòÉΓòÉΓòÉ 8.85. EDC5133 ΓòÉΓòÉΓòÉ
  14324.  
  14325. Floating Point Denormalized Operand exception occurred at EIP = &1 on thread 
  14326. &2. 
  14327.  
  14328. A Floating Point Denormalized Operand exception occurred at the location 
  14329. indicated. 
  14330.  
  14331. Recovery:Correct the code and recompile. 
  14332.  
  14333.  
  14334. ΓòÉΓòÉΓòÉ 8.86. EDC5134 ΓòÉΓòÉΓòÉ
  14335.  
  14336. Floating Point Divide by Zero exception occurred at EIP = &1 on thread &2. 
  14337.  
  14338. A Floating Point Division by Zero exception occurred at the location indicated. 
  14339.  
  14340. Recovery:Correct the code and recompile. 
  14341.  
  14342.  
  14343. ΓòÉΓòÉΓòÉ 8.87. EDC5135 ΓòÉΓòÉΓòÉ
  14344.  
  14345. Floating Point Precision exception occurred at EIP = &1 on thread &2. 
  14346.  
  14347. A Floating Point Precision exception occurred at the location indicated. 
  14348.  
  14349. Recovery:Correct the code and recompile. 
  14350.  
  14351.  
  14352. ΓòÉΓòÉΓòÉ 8.88. EDC5136 ΓòÉΓòÉΓòÉ
  14353.  
  14354. Floating Point Invalid Operation exception occurred at EIP = &1 on thread &2. 
  14355.  
  14356. A Floating Point Invalid Operation exception occurred at the location 
  14357. indicated. 
  14358.  
  14359. Recovery:Correct the code and recompile. 
  14360.  
  14361.  
  14362. ΓòÉΓòÉΓòÉ 8.89. EDC5137 ΓòÉΓòÉΓòÉ
  14363.  
  14364. Floating Point Overflow exception occurred at EIP = &1 on thread &2. 
  14365.  
  14366. A Floating Point Overflow exception occurred at the location indicated. 
  14367.  
  14368. Recovery:Correct the code and recompile. 
  14369.  
  14370.  
  14371. ΓòÉΓòÉΓòÉ 8.90. EDC5138 ΓòÉΓòÉΓòÉ
  14372.  
  14373. Floating Point Stack Check exception occurred at EIP = &1 on thread &2. 
  14374.  
  14375. A Floating Point Stack Check exception occurred at the location indicated. 
  14376.  
  14377. Recovery:Correct the code and recompile. 
  14378.  
  14379.  
  14380. ΓòÉΓòÉΓòÉ 8.91. EDC5139 ΓòÉΓòÉΓòÉ
  14381.  
  14382. Floating Point Underflow exception occurred at EIP = &1 on thread &2. 
  14383.  
  14384. A Floating Point Underflow exception occurred at the location indicated. 
  14385.  
  14386. Recovery:Correct the code and recompile. 
  14387.  
  14388.  
  14389. ΓòÉΓòÉΓòÉ 8.92. EDC5140 ΓòÉΓòÉΓòÉ
  14390.  
  14391. In Page exception occurred at EIP = &1 on thread &2. 
  14392.  
  14393. An In Page exception occurred at the location indicated. 
  14394.  
  14395. Recovery:Correct the code and recompile. 
  14396.  
  14397.  
  14398. ΓòÉΓòÉΓòÉ 8.93. EDC5141 ΓòÉΓòÉΓòÉ
  14399.  
  14400. Attempt to continue unrecoverable exception occurred at EIP = &1 on thread &2. 
  14401.  
  14402. The exception handler tried to continue an exception that the operating system 
  14403. considered noncontinuable at the location indicated. 
  14404.  
  14405. Recovery:Correct the code and recompile. 
  14406.  
  14407.  
  14408. ΓòÉΓòÉΓòÉ 8.94. EDC5142 ΓòÉΓòÉΓòÉ
  14409.  
  14410. Invalid Disposition exception occurred at EIP = &1 on thread &2. 
  14411.  
  14412. An Invalid Disposition exception occurred at the location indicated. 
  14413.  
  14414. Recovery:Correct the code and recompile. 
  14415.  
  14416.  
  14417. ΓòÉΓòÉΓòÉ 8.95. EDC5143 ΓòÉΓòÉΓòÉ
  14418.  
  14419. Invalid Lock Sequence exception occurred at EIP = &1 on thread &2. 
  14420.  
  14421. An Invalid Lock Sequence exception occurred at the location indicated. 
  14422.  
  14423. Recovery:Correct the code and recompile. 
  14424.  
  14425.  
  14426. ΓòÉΓòÉΓòÉ 8.96. EDC5144 ΓòÉΓòÉΓòÉ
  14427.  
  14428. Bad Stack exception occurred at EIP = &1 on thread &2. 
  14429.  
  14430. A Bad Stack exception occurred at the location indicated. 
  14431.  
  14432. Recovery:Correct the code and recompile. 
  14433.  
  14434.  
  14435. ΓòÉΓòÉΓòÉ 8.97. EDC5145 ΓòÉΓòÉΓòÉ
  14436.  
  14437. Invalid Unwind Target exception occurred at EIP = &1 on thread &2. 
  14438.  
  14439. An Invalid Unwind Target exception occurred at the location indicated.  A 
  14440. possible cause is that the jmp_buf buffer supplied to the longjmp function was 
  14441. not valid. 
  14442.  
  14443. Recovery:Correct the code and recompile. 
  14444.  
  14445.  
  14446. ΓòÉΓòÉΓòÉ 8.98. EDC5146 ΓòÉΓòÉΓòÉ
  14447.  
  14448. Invalid attempt to access storage location &1. 
  14449.  
  14450. This message accompanies an exception message and gives the address of the 
  14451. storage location that caused the exception to occur. 
  14452.  
  14453. Recovery:Informational message only. 
  14454.  
  14455.  
  14456. ΓòÉΓòÉΓòÉ 8.99. EDC5150 ΓòÉΓòÉΓòÉ
  14457.  
  14458. An internal data structure starting at address &1 was overwritten. 
  14459.  
  14460. An internal data structure that is allocated from a separate page of memory has 
  14461. been overwritten. 
  14462.  
  14463. Recovery: Correct the code so you do not overwrite the structure and recompile. 
  14464.  
  14465.  
  14466. ΓòÉΓòÉΓòÉ 8.100. EDC5151 ΓòÉΓòÉΓòÉ
  14467.  
  14468. The invalid memory block address &1 was passed in at line &2 of &3. 
  14469.  
  14470. The free or realloc function was passed a pointer that did not point to a 
  14471. memory block allocated by malloc, calloc, or realloc. 
  14472.  
  14473. Recovery: Allocate the memory block with malloc, calloc, or realloc before 
  14474. passing the pointer to free or realloc. 
  14475.  
  14476.  
  14477. ΓòÉΓòÉΓòÉ 8.101. EDC5152 ΓòÉΓòÉΓòÉ
  14478.  
  14479. Memory was overwritten before the allocated memory block which starts at 
  14480. address &1. 
  14481.  
  14482. Memory immediately before an allocated memory block has been overwritten.  This 
  14483. message is accompanied by the first eight bytes of the memory block and the 
  14484. file name and line number where the memory block was allocated, if available. 
  14485.  
  14486. Recovery: Correct the code and recompile. 
  14487.  
  14488.  
  14489. ΓòÉΓòÉΓòÉ 8.102. EDC5153 ΓòÉΓòÉΓòÉ
  14490.  
  14491. The file name and line number are not available. 
  14492.  
  14493. The file name and line number where the memory block was allocated or freed are 
  14494. not available because too much memory was overwritten.  This message 
  14495. accompanies other debug memory management messages. 
  14496.  
  14497. Recovery: Informational message only. 
  14498.  
  14499.  
  14500. ΓòÉΓòÉΓòÉ 8.103. EDC5154 ΓòÉΓòÉΓòÉ
  14501.  
  14502. Memory was overwitten after the allocated memory block which starts at address 
  14503. &1. 
  14504.  
  14505. Memory immediately after an allocated memory block has been overwritten.  This 
  14506. message is accompanied by the first eight bytes of the memory block and the 
  14507. file name and line number where the memory block was allocated, if available. 
  14508.  
  14509. Recovery: Correct the code and recompile. 
  14510.  
  14511.  
  14512. ΓòÉΓòÉΓòÉ 8.104. EDC5155 ΓòÉΓòÉΓòÉ
  14513.  
  14514. This memory block was freed at line number &1 in &2. 
  14515.  
  14516. This message accompanies messages about overwriting a free memory block.  It 
  14517. indicates the file name and line number where the block was freed. 
  14518.  
  14519. Recovery: Informational message only. 
  14520.  
  14521.  
  14522. ΓòÉΓòÉΓòÉ 8.105. EDC5156 ΓòÉΓòÉΓòÉ
  14523.  
  14524. The first eight bytes of the memory block (in hex) are: &1. 
  14525.  
  14526. The first eight bytes of the memory block are given to help you determine what 
  14527. the block is or was used for. This message accompanies other debug memory 
  14528. management messages. 
  14529.  
  14530. Recovery: Informational message only. 
  14531.  
  14532.  
  14533. ΓòÉΓòÉΓòÉ 8.106. EDC5157 ΓòÉΓòÉΓòÉ
  14534.  
  14535. The free memory block which starts at address &1 has been accessed. 
  14536.  
  14537. An attempt was made to access the memory block at the address given, when the 
  14538. block had already been freed. 
  14539.  
  14540. Recovery: Correct the code to allocate the memory location, or do not free the 
  14541. memory block before you access it. 
  14542.  
  14543.  
  14544. ΓòÉΓòÉΓòÉ 8.107. EDC5158 ΓòÉΓòÉΓòÉ
  14545.  
  14546. Memory was overwritten before the free memory block which starts at address &1. 
  14547.  
  14548. Memory immediately before a freed memory block has been overwritten.  This 
  14549. message is accompanied by the first eight bytes of the memory block, and the 
  14550. file name and line number where the memory block was freed, if available. 
  14551.  
  14552. Recovery: Correct the code and recompile. 
  14553.  
  14554.  
  14555. ΓòÉΓòÉΓòÉ 8.108. EDC5159 ΓòÉΓòÉΓòÉ
  14556.  
  14557. Memory was overwritten at the end of the free memory block which starts at 
  14558. address &1. 
  14559.  
  14560. Memory immediately after a freed memory block has been overwritten.  This 
  14561. message is accompanied by the first eight bytes of the memory block, and the 
  14562. file name and line number where the memory block was freed, if available. 
  14563.  
  14564. Recovery: Correct the code and recompile. 
  14565.  
  14566.  
  14567. ΓòÉΓòÉΓòÉ 8.109. EDC5160 ΓòÉΓòÉΓòÉ
  14568.  
  14569. Could not allocate memory for internal data structures. 
  14570.  
  14571. There is not enough memory available. 
  14572.  
  14573. Recovery: Ensure that memory is being freed when it is no longer used, and that 
  14574. memory swapping is allowed. Use the _heapmin function to release unused memory 
  14575. from the heap. Stop large programs from running while the current application 
  14576. is being run. 
  14577.  
  14578.  
  14579. ΓòÉΓòÉΓòÉ 8.110. EDC5161 ΓòÉΓòÉΓòÉ
  14580.  
  14581. Could not register exception handler for memory access violations. 
  14582.  
  14583. A severe operating system error has occurred. 
  14584.  
  14585. Recovery: Contact your IBM Service Representative. 
  14586.  
  14587.  
  14588. ΓòÉΓòÉΓòÉ 8.111. EDC5163 ΓòÉΓòÉΓòÉ
  14589.  
  14590. START OF DUMP OF ALLOCATED MEMORY BLOCKS 
  14591.  
  14592. This message indicates the start of the information produced by the 
  14593. _dump_allocated function. 
  14594.  
  14595. Recovery: Informational message only. 
  14596.  
  14597.  
  14598. ΓòÉΓòÉΓòÉ 8.112. EDC5164 ΓòÉΓòÉΓòÉ
  14599.  
  14600. END OF DUMP OF ALLOCATED MEMORY BLOCKS 
  14601.  
  14602. This message indicates the start of the information produced by the 
  14603. _dump_allocated function. 
  14604.  
  14605. Recovery: Informational message only. 
  14606.  
  14607.  
  14608. ΓòÉΓòÉΓòÉ 8.113. EDC5165 ΓòÉΓòÉΓòÉ
  14609.  
  14610. Address: &1    Size: &2 (&3) 
  14611.  
  14612. This message is produced by the _dump_allocated function. It gives the address 
  14613. and size of the allocated memory blocks. 
  14614.  
  14615. Recovery: Informational message only. 
  14616.  
  14617. Recovery: 
  14618.  
  14619.  
  14620. ΓòÉΓòÉΓòÉ 8.114. EDC5166 ΓòÉΓòÉΓòÉ
  14621.  
  14622. This memory block was (re)allocated at line number &1 in &2. 
  14623.  
  14624. This message accompanies messages about overwriting memory immediately before 
  14625. or after an allocated memory block.  It indicates the file name and line number 
  14626. where the memory block was allocated or reallocated. 
  14627.  
  14628. Recovery: Informational message only. 
  14629.  
  14630.  
  14631. ΓòÉΓòÉΓòÉ 8.115. EDC5167 ΓòÉΓòÉΓòÉ
  14632.  
  14633. Memory contents: 
  14634.  
  14635. This message is produced by the _dump_allocated function. It gives the contents 
  14636. of the allocated memory blocks. 
  14637.  
  14638. Recovery: Informational message only. 
  14639.  
  14640.  
  14641. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14642.  
  14643. 485976
  14644. 433132211
  14645. 20
  14646. 5
  14647.  
  14648.  
  14649. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14650.  
  14651. 0x3b24
  14652. 0XF96
  14653. 0x21
  14654. 0x3AA
  14655. 0X29b
  14656. 0X4bD
  14657.  
  14658.  
  14659. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14660.  
  14661. 0
  14662. 0125
  14663. 034673
  14664. 03245
  14665.  
  14666.  
  14667. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14668.  
  14669. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14670. Γöé FLOATING-POINT  Γöé VALUE           Γöé
  14671. Γöé CONSTANT        Γöé                 Γöé
  14672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14673. Γöé "5.3876e4"      Γöé "53,876"        Γöé
  14674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14675. Γöé "4e-11"         Γöé "0.00000000004" Γöé
  14676. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14677. Γöé "1eΓö╝5"          Γöé "100,000"       Γöé
  14678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14679. Γöé "7.321E-3"      Γöé "0.007321"      Γöé
  14680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14681. Γöé "3.2EΓö╝4"        Γöé "32,000"        Γöé
  14682. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14683. Γöé "0.5e-6"        Γöé "0.0000005"     Γöé
  14684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14685. Γöé "0.45"          Γöé "0.45"          Γöé
  14686. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14687. Γöé "6.e10"         Γöé "60,000,000,000"Γöé
  14688. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14689.  
  14690.  
  14691. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14692.  
  14693.  'a'    '\'' 
  14694.  '0'    '(' 
  14695.  'x'    '\n' 
  14696.  '7'    '\117' 
  14697.  'C' 
  14698.  
  14699.  
  14700. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14701.  
  14702. char titles[ ] = "Bach's \"Jesu, Joy of Man's Desiring\"";
  14703. char *mail_addr = "Last Name    First Name    MI   Street Address   \
  14704.    City     Province   Postal code ";
  14705. char *temp_string = "abc" "def" "ghi";  /* *temp = "abcdefghi\0" */
  14706.  
  14707.  
  14708. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14709.  
  14710. /**********************************************************************************
  14711. *
  14712. The following data type declarations list oats, wheat, barley, corn, and rice 
  14713. as enumeration constants.  The number under each constant shows the integer 
  14714. value. 
  14715.  
  14716.                                                                                   *
  14717. ***********************************************************************************/
  14718.  
  14719. enum grain { oats, wheat, barley, corn, rice };
  14720.    /*         0      1      2      3     4         */
  14721. enum grain { oats=1, wheat, barley, corn, rice };
  14722.    /*         1        2      3      4     5       */
  14723. enum grain { oats, wheat=10, barley, corn=20, rice };
  14724.    /*          0     10        11     20       21  */
  14725.  
  14726.  
  14727. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14728.  
  14729. All data declarations have the form: 
  14730.  
  14731.                                      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14732.                                                                Γöé
  14733. ΓöÇΓö¼ΓöÇtype_specifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdeclaratorΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇ;ΓöÇΓöÇ
  14734.    Γöé                               Γöé              Γöé            Γöé
  14735.    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ              ΓööΓöÇinitializerΓöÿ
  14736.    Γöé             Γöé  Γöé              Γöé
  14737.    Γööstorage_classΓöÿ  Γöötype_specifierΓöÿ
  14738.  
  14739.  
  14740. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14741.  
  14742. /************************************************************************
  14743. *
  14744.  
  14745. The following program shows the scope and initialization of auto variables. 
  14746. The function main defines two variables, each named auto_var.  The first 
  14747. definition occurs on line 8.  The second definition occurs in a nested block on 
  14748. line 11.  While the nested block is executed, only the auto_var created by the 
  14749. second definition is available.  During the rest of the program, only the 
  14750. auto_var created by the first definition is available. 
  14751.  
  14752.                                                                         *
  14753. ************************************************************************/
  14754.  
  14755.  1   /* program to illustrate auto variables */
  14756.  2
  14757.  3   #include <stdio.h>
  14758.  4
  14759.  5   int main(void)
  14760.  6   {
  14761.  7      void call_func(int passed_var);
  14762.  8      auto int auto_var = 1; /* first definition of auto_var  */
  14763.  9
  14764. 10      {
  14765. 11         int auto_var = 2;   /* second definition of auto_var */
  14766. 12         printf("inner auto_var = %d\n", auto_var);
  14767. 13      }
  14768. 14      call_func(auto_var);
  14769. 15      printf("outer auto_var = %d\n", auto_var);
  14770. 16   }
  14771. 17
  14772. 18   void call_func(int passed_var)
  14773. 19   {
  14774. 20      printf("passed_var = %d\n", passed_var);
  14775. 21      passed_var = 3;
  14776. 22      printf("passed_var = %d\n", passed_var);
  14777. 23   }
  14778.  
  14779. /************************************************************************
  14780. *
  14781. This program produces the following output: 
  14782.  
  14783. inner auto_var = 2
  14784. passed_var = 1
  14785. passed_var = 3
  14786. outer auto_var = 1
  14787.  
  14788.                                                                         *
  14789. ************************************************************************/
  14790.  
  14791. /************************************************************************
  14792. *
  14793. The following example uses an array that has the storage class auto to pass a 
  14794. character string to the function sort.  The C language views an array name that 
  14795. appears without subscripts (for example, string, instead of string[0]) as a 
  14796. pointer.  Thus, sort receives the address of the character string, rather than 
  14797. the contents of the array.  The address enables sort to change the values of 
  14798. the elements in the array. 
  14799.  
  14800.                                                                         *
  14801. ************************************************************************/
  14802.  
  14803. /* Sorted string program */
  14804. #include <stdio.h>
  14805. int main(void)
  14806. {
  14807.    void sort(char *array, int n);
  14808.    char string[75];
  14809.    int length;
  14810.    printf("Enter letters:\n");
  14811.    scanf("%74s", string);
  14812.    length = strlen(string);
  14813.    sort(string,length);
  14814.    printf("The sorted string is: %s\n", string);
  14815. }
  14816.  
  14817. void sort(char *array, int n)
  14818. {
  14819.    int gap, i, j, temp;
  14820.    for (gap = n / 2; gap > 0; gap /= 2)
  14821.       for (i = gap; i < n; i++)
  14822.          for (j = i - gap; j >= 0 && array[j] > array[j + gap];
  14823.             j -= gap)
  14824.          {
  14825.             temp = array[j];
  14826.             array[j] = array[j + gap];
  14827.             array[j + gap] = temp;
  14828.          }
  14829. }
  14830.  
  14831. /**********************************************************************************
  14832. *
  14833. When the program is run, interaction with the program could produce: 
  14834.  
  14835.  Output 
  14836.            Enter letters: 
  14837.  
  14838.  Input 
  14839.            zyfab 
  14840.  
  14841.  Output 
  14842.            The sorted string is:  abfyz 
  14843.  
  14844.                                                                           *
  14845.   ************************************************************************/
  14846.  
  14847.  
  14848. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14849.  
  14850. /**********************************************************************************
  14851. *
  14852.  
  14853. The following program shows the linkage of extern objects and functions.  The 
  14854. extern object total is declared on line 12 of File 1 and on line 6 of File 2. 
  14855. The definition of the external object total appears in File 3.  The extern 
  14856. function tally is defined in File 2.  The function tally can be placed in the 
  14857. same file as main or in a different file.  Because main precedes these 
  14858. definitions and main uses both total and tally, main declares tally on line 11 
  14859. and total on line 12. 
  14860.  
  14861.                                                                         *
  14862. ************************************************************************/
  14863.  
  14864. /**********************************************************************************
  14865. *
  14866.  
  14867. File 1 
  14868.  
  14869. ************************************************************************/
  14870.  
  14871.  1   /**************************************************************
  14872.  2   ** This program receives the price of an item, adds the      **
  14873.  3   ** tax, and prints the total cost of the item.               **
  14874.  5   **************************************************************/
  14875.  6
  14876.  7   #include <stdio.h>
  14877.  8
  14878.  9   int main(void)
  14879. 10   {   /* begin main */
  14880. 11      void tally(void);   /* declaration of function tally */
  14881. 12      extern float total; /* first declaration of total    */
  14882. 13
  14883. 14      printf("Enter the purchase amount: \n");
  14884. 15      tally();
  14885. 16      printf("\nWith tax, the total is:  %.2f\n", total);
  14886. 17   }   /* end main */
  14887.  
  14888. /**********************************************************************************
  14889. *
  14890. File 2 
  14891.  
  14892.                                                                                   *
  14893. ***********************************************************************************/
  14894.  
  14895.  1   /**************************************************************
  14896.  2   ** This file defines the function tally                      **
  14897.  3   **************************************************************/
  14898.  4
  14899.  5   #define  tax_rate  0.05
  14900.  6
  14901.  7   void tally(void)
  14902.  8   {   /* begin tally */
  14903.  9      float tax;
  14904. 10      extern float total; /* second declaration of total       */
  14905. 11
  14906. 12      scanf("%f", &total);
  14907. 13      tax = tax_rate * total;
  14908. 14      total += tax;
  14909. 15   }   /* end tally */
  14910.  
  14911. /**********************************************************************************
  14912. *
  14913. File 3 
  14914.  
  14915.                                                                                   *
  14916. ***********************************************************************************/
  14917.  
  14918.  1   float total;
  14919.  
  14920. /**********************************************************************************
  14921. *
  14922.  
  14923. The following program shows extern variables used by two functions.  Because 
  14924. both functions main and sort can access and change the values of the extern 
  14925. variables string and length, main does not have to pass parameters to sort. 
  14926.  
  14927.                                                                                   *
  14928. ***********************************************************************************/
  14929.  
  14930. /* Sorted string program */
  14931. #include <stdio.h>
  14932. char string[75];
  14933. int length;
  14934. int main(void)
  14935. {
  14936.    void sort(void);
  14937.    printf("Enter letters:\n");
  14938.    scanf("%s", string);
  14939.    length = strlen(string);
  14940.    sort();
  14941.    printf("The sorted string is: %s\n", string);
  14942. }
  14943.  
  14944. void sort(void)
  14945. {
  14946.    int gap, i, j, temp;
  14947.    for (gap = length / 2; gap > 0; gap /= 2)
  14948.       for (i = gap; i < length; i++)
  14949.          for (j = i - gap;
  14950.               j >= 0 && string[j] > string[j + gap];
  14951.               j -= gap)
  14952.          {
  14953.             temp = string[j];
  14954.             string[j] = string[j + gap];
  14955.             string[j + gap] = temp;
  14956.          }
  14957. }
  14958.  
  14959. /**********************************************************************************
  14960. *
  14961. When this program is run, interaction with the previous program could produce: 
  14962.  
  14963.  Output 
  14964.            Enter letters: 
  14965.  
  14966.  Input 
  14967.            zyfab 
  14968.  
  14969.  Output 
  14970.            The sorted string is:  abfyz 
  14971.  
  14972.                                                                                     *
  14973.   ***********************************************************************************/
  14974.  
  14975.   /**********************************************************************************
  14976.   *
  14977.  The following program shows a static variable var1 which is defined at file 
  14978.  scope and then declared with the storage class specifier extern. The second 
  14979.  declaration refers to the first definition of var1 and so it has internal 
  14980.  linkage. 
  14981.  
  14982.                                                                                     *
  14983.   ***********************************************************************************/
  14984.  
  14985.   static int var1;
  14986.      .
  14987.      .
  14988.      .
  14989.   extern int var1;
  14990.  
  14991.   /*******************************************************************************/
  14992.  
  14993.  
  14994. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  14995.  
  14996. /**********************************************************************************
  14997. *
  14998.  
  14999. The following program shows the linkage of static identifiers at file scope. 
  15000. This program uses two different external static identifiers named stat_var. 
  15001. The first definition occurs in file 1.  The second definition occurs in file 2. 
  15002. The main function references the object defined in file 1.  The var_print 
  15003. function references the object defined in file 2: 
  15004.  
  15005.                                                                                   *
  15006. ***********************************************************************************/
  15007.  
  15008. /**********************************************************************************
  15009. *
  15010.  
  15011. File 1 
  15012.  
  15013.                                                                                   *
  15014. ***********************************************************************************/
  15015.  
  15016. /************************************************************************
  15017. ** Program to illustrate file scope static variables                   **
  15018. ************************************************************************/
  15019. #include <stdio.h>
  15020. extern void var_print(void);
  15021. static stat_var = 1;
  15022. int main(void)
  15023. {
  15024.    printf("file1 stat_var = %d\n", stat_var);
  15025.    var_print();
  15026.    printf("FILE1 stat_var = %d\n", stat_var);
  15027. }
  15028.  
  15029. /**********************************************************************************
  15030. *
  15031. File 2 
  15032.  
  15033.                                                                                   *
  15034. ***********************************************************************************/
  15035.  
  15036. static int stat_var = 2;
  15037. void var_print(void)
  15038. {
  15039.     printf("file2 stat_var = %d\n", stat_var);
  15040. }
  15041.  
  15042. /**********************************************************************************
  15043. *
  15044.  
  15045. The preceding program produces the following output: 
  15046.  
  15047. file1 stat_var = 1
  15048. file2 stat_var = 2
  15049. FILE1 stat_var = 1
  15050.  
  15051.                                                                                   *
  15052. ***********************************************************************************/
  15053.  
  15054. /**********************************************************************************
  15055. *
  15056. The following program shows the linkage of static identifiers with block scope. 
  15057. The function test defines the static variable stat_var. stat_var retains its 
  15058. storage throughout the program, even though test is the only function that can 
  15059. reference stat_var. 
  15060.  
  15061.                                                                                   *
  15062. ***********************************************************************************/
  15063.  
  15064. /************************************************************************
  15065. ** Program to illustrate block scope static variables                  **
  15066. ************************************************************************/
  15067. #include <stdio.h>
  15068. int main(void)
  15069. {
  15070.    void test(void);
  15071.    int counter;
  15072.    for (counter = 1; counter <= 4; ++counter)
  15073.       test();
  15074. }
  15075. void test(void)
  15076. {
  15077.    static int stat_var = 0;
  15078.    auto int auto_var = 0;
  15079.    stat_var++;
  15080.    auto_var++;
  15081.    printf("stat_var = %d auto_var = %d\n", stat_var, auto_var);
  15082. }
  15083.  
  15084. /**********************************************************************************
  15085. *
  15086.  
  15087. The preceding program produces the following output: 
  15088.  
  15089. stat_var = 1 auto_var = 1
  15090. stat_var = 2 auto_var = 1
  15091. stat_var = 3 auto_var = 1
  15092. stat_var = 4 auto_var = 1
  15093.  
  15094.                                                                                   *
  15095. ***********************************************************************************/
  15096.  
  15097.  
  15098. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15099.  
  15100. A declarator has the form: 
  15101.  
  15102. ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇ
  15103.    Γöé ΓöéΓöîΓöÇΓöÇΓöÇΓöÉΓöé Γöé                    Γöé  Γöé                          Γöé  Γöé
  15104.    Γöé Γöé   ΓöéΓöé ΓööΓöÇΓöÇ(ΓöÇΓöÇdeclaratorΓöÇΓöÇ)ΓöÇΓöÇΓöÿ  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ(ΓöÇΓöÇ)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  15105.    Γöé ΓööΓöÇΓöÇ*ΓöÇΓö┤Γöÿ                         Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé  Γöé
  15106.    Γöé                                 Γöé                       Γöé Γöé  Γöé
  15107.    Γöé                                 ΓööΓöÇΓöÇΓöÇsubscript_declaratorΓöÇΓö┤ΓöÇΓöÿ  Γöé
  15108.    Γöé                                                               Γöé
  15109.    Γöé                                                               Γöé
  15110.    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15111.    Γöé          Γöé ΓöéΓöîΓöÇΓöÇΓöÇΓöÉΓöé Γöé                 Γöé Γöé                      Γöé
  15112.    ΓööΓöÇqualifierΓöÿ Γöé   ΓöéΓöé Γöö(ΓöÇsubdeclaratorΓöÇ)Γöÿ ΓööΓöÇsubscript_declaratorΓöÇΓöÿ
  15113.                 ΓööΓöÇΓöÇ*ΓöÇΓö┤Γöÿ
  15114.  
  15115.  
  15116. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15117.  
  15118. A subdeclarator has the form: 
  15119.  
  15120. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  15121.     Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé  Γöé                       Γöé
  15122.     Γöé                   Γöé Γöé  ΓööΓöÇΓöÇ(ΓöÇΓöÇsubdeclaratorΓöÇΓöÇ)ΓöÇΓöÇΓöÿ
  15123.     ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ*ΓöÇΓö┤ΓöÇΓöÿ
  15124.        Γöé            Γöé
  15125.        Γö£ΓöÇΓöÇvolatileΓöÇΓöÇΓöñ
  15126.        Γöé            Γöé
  15127.        ΓööΓöÇΓöÇΓöÇconstΓöÇΓöÇΓöÇΓöÇΓöÿ
  15128. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  15129.    Γöé                        Γöé
  15130.    ΓööΓöÇ subscript_declaratorΓöÇΓöÇΓöÿ
  15131.  
  15132.  
  15133. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15134.  
  15135. A subscript declarator has the form: 
  15136.  
  15137. ΓöÇΓöÇ[ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ]ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ
  15138.        Γöé                       Γöé    Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  15139.        ΓööΓöÇΓöÇconstant_expressionΓöÇΓöÇΓöÿ    Γöé                            Γöé Γöé
  15140.                                     ΓööΓöÇΓöÇΓöÇ[ΓöÇΓöÇconstant_expressionΓöÇΓöÇ]ΓöÇΓö┤ΓöÇΓöÿ
  15141.  
  15142.  
  15143. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15144.  
  15145. /************************************************************************
  15146. *
  15147.  
  15148. The following block scope data declaration uses initial as the declarator. The 
  15149. data object initial has the storage class auto and the data type char. 
  15150.  
  15151.                                                                         *
  15152. ************************************************************************/
  15153. auto char initial;
  15154. /************************************************************************
  15155. *
  15156.  
  15157. The following declaration uses the array compute[5] as the declarator: 
  15158.  
  15159.                                                                         *
  15160. ************************************************************************/
  15161. extern long int compute[5];
  15162.  
  15163.  
  15164. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15165.  
  15166. An initializer has the form: 
  15167.  
  15168.  ΓöÇΓöÇΓöÇ=ΓöÇΓöÇΓö¼ΓöÇexpressionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ
  15169.          Γöé               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé
  15170.          Γöé                            Γöé                Γöé
  15171.          ΓööΓöÇΓöÇ{ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇexpressionΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ}ΓöÇΓöÇΓöÇΓöÿ
  15172.                  Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  15173.                  Γöé Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ      Γöé Γöé
  15174.                  Γöé                   Γöé      Γöé Γöé
  15175.                  ΓööΓöÇΓöÇΓöÇ{ΓöÇΓöÇΓöÇΓöÇΓöÇexpressionΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇ}ΓöÇΓö┤ΓöÇΓöÿ
  15176.  
  15177.  
  15178. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15179.  
  15180. /**********************************************************************************
  15181. *
  15182. The following example defines the identifier end_of_string as a constant object 
  15183. of type char having the initial value \0 (the null character): 
  15184.  
  15185.                                                                                   *
  15186. ***********************************************************************************/
  15187.  
  15188. const char end_of_string = '\0';
  15189.  
  15190. /**********************************************************************************
  15191. *
  15192. The following example defines the unsigned char variable switches as having the 
  15193. initial value 3: 
  15194.  
  15195.                                                                                   *
  15196. ***********************************************************************************/
  15197.  
  15198. unsigned char switches = 3;
  15199.  
  15200. /**********************************************************************************
  15201. *
  15202.  
  15203. The following example defines string_pointer as a pointer to a character: 
  15204.  
  15205.                                                                                   *
  15206. ***********************************************************************************/
  15207.  
  15208. char *string_pointer;
  15209.  
  15210. /**********************************************************************************
  15211. *
  15212. The following example defines name as a pointer to a character.  After 
  15213. initialization, name points to the first letter in the character string 
  15214. "Johnny": 
  15215.  
  15216.                                                                                   *
  15217. ***********************************************************************************/
  15218.  
  15219. char *name = "Johnny";
  15220.  
  15221. /**********************************************************************************
  15222. *
  15223. The following example defines a one-dimensional array of pointers to 
  15224. characters.  The array has three elements.  Initially they are: a pointer to 
  15225. the string "Venus", a pointer to "Jupiter", and a pointer to "Saturn": 
  15226.  
  15227.                                                                                   *
  15228. ***********************************************************************************/
  15229.  
  15230. static char *planets[ ] = { "Venus", "Jupiter", "Saturn" };
  15231.  
  15232.  
  15233. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15234.  
  15235. /**********************************************************************************
  15236. *
  15237.  
  15238. The following example defines the identifier pi for an object of type double: 
  15239.  
  15240.                                                                                   *
  15241. ***********************************************************************************/
  15242.  
  15243. double pi;
  15244.  
  15245. /**********************************************************************************
  15246. *
  15247. The following example defines the float variable real_number with the initial 
  15248. value 100.55: 
  15249.  
  15250.                                                                                   *
  15251. ***********************************************************************************/
  15252.  
  15253. static float real_number = 100.55;
  15254.  
  15255. /**********************************************************************************
  15256. *
  15257. The following example defines the float variable float_var with the initial 
  15258. value 0.0143: 
  15259.  
  15260.                                                                                   *
  15261. ***********************************************************************************/
  15262.  
  15263. float float_var = 1.43e-2;
  15264.  
  15265. /**********************************************************************************
  15266. *
  15267. The following example declares the long double variable maximum: 
  15268.  
  15269.                                                                                   *
  15270. ***********************************************************************************/
  15271.  
  15272. extern long double maximum;
  15273.  
  15274. /**********************************************************************************
  15275. *
  15276. The following example defines the array table with 20 elements of type double: 
  15277.  
  15278.                                                                                   *
  15279. ***********************************************************************************/
  15280.  
  15281. double table[20];
  15282.  
  15283.  
  15284. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15285.  
  15286. /**********************************************************************************
  15287. *
  15288.  
  15289. The following example defines the short int variable flag: 
  15290.  
  15291.                                                                                   *
  15292. ***********************************************************************************/
  15293.  
  15294. short int flag;
  15295.  
  15296. /**********************************************************************************
  15297. *
  15298. The following example defines the int variable result: 
  15299.  
  15300.                                                                                   *
  15301. ***********************************************************************************/
  15302.  
  15303. int result;
  15304.  
  15305. /**********************************************************************************
  15306. *
  15307. The following example defines the unsigned long int variable ss_number as 
  15308. having the initial value 438888834: 
  15309.  
  15310.                                                                                   *
  15311. ***********************************************************************************/
  15312.  
  15313. unsigned long ss_number = 438888834ul;
  15314.  
  15315. /**********************************************************************************
  15316. *
  15317. The following example defines the identifier sum for an object of type int. 
  15318. The initial value of sum is the result of the expression a + b: 
  15319.  
  15320.                                                                                   *
  15321. ***********************************************************************************/
  15322.  
  15323. extern int a, b;
  15324. auto sum  = a + b;
  15325.  
  15326.  
  15327. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15328.  
  15329. /**********************************************************************************
  15330. *
  15331.  
  15332. On line 3 of the following example, the function find_max is declared as having 
  15333. type void.  Lines 12 through 23 contain the complete definition of find_max. 
  15334.  
  15335. Note that the use of the sizeof operator in line 9 is a standard method of 
  15336. determining the number of elements in an array. 
  15337.  
  15338.                                                                                   *
  15339. ***********************************************************************************/
  15340.  
  15341.  1   #include <stdio.h>
  15342.  2   /* declaration of function find_max */
  15343.  3   extern void find_max(int x[ ], int j);
  15344.  4
  15345.  5   int main(void)
  15346.  6   {
  15347.  7      static int numbers[ ] = { 99, 54, -102, 89 };
  15348.  8
  15349.  9      find_max(numbers, (sizeof(numbers) / sizeof(numbers[0])));
  15350. 10   }
  15351. 11   void find_max(int x[ ], int j)
  15352. 12   { /* begin definition of function find_max */
  15353. 13      int i, temp = x[0];
  15354. 14
  15355. 15      for (i = 1; i < j; i++)
  15356. 16      {
  15357. 17          if (x[i] > temp)
  15358. 18             temp = x[i];
  15359. 19      }
  15360. 20      printf("max number = %d\n", temp);
  15361. 21   } /* end definition of function find_max  */
  15362.  
  15363.  
  15364. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15365.  
  15366. /**********************************************************************************
  15367. *
  15368. The following example defines a one-dimensional array that contains four 
  15369. elements having type char: 
  15370.  
  15371. char list[4];
  15372.  
  15373. The first subscript of each dimension is 0 (zero).  Thus, the array list 
  15374. contains the elements: 
  15375.  
  15376. list[0]
  15377. list[1]
  15378. list[2]
  15379. list[3]
  15380.  
  15381.                                                                                   *
  15382. ***********************************************************************************/
  15383.  
  15384. /**********************************************************************************
  15385. *
  15386.  
  15387. The following example defines a two-dimensional array that contains six 
  15388. elements of type int: 
  15389.  
  15390. int roster[3][2];
  15391.  
  15392. Multidimensional arrays are stored in row-major order; when referencing 
  15393. elements in order of increasing storage location, the last subscript varies the 
  15394. fastest. For example, the elements of array roster are stored in the order: 
  15395.  
  15396. roster[0][0]
  15397. roster[0][1]
  15398. roster[1][0]
  15399. roster[1][1]
  15400. roster[2][0]
  15401. roster[2][1]
  15402.  
  15403. In storage, the elements of roster would be stored as: 
  15404.  
  15405.  Γöé               Γöé               Γöé
  15406.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15407.                                
  15408.  Γöé               Γöé               Γöé
  15409.  roster[0][0]    roster[0][1]    roster[1][0]
  15410.  
  15411.                                                                                   *
  15412. ***********************************************************************************/
  15413.  
  15414.  
  15415. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15416.  
  15417. /**********************************************************************************
  15418. *
  15419.  
  15420. The following definition shows a completely initialized one-dimensional array: 
  15421.  
  15422. static int number[3] = { 5, 7, 2 };
  15423.  
  15424. The array number contains the following values: 
  15425.  
  15426.  Element        Value 
  15427.  number[0]      5 
  15428.  number[1]      7 
  15429.  number[2]      2 
  15430.  
  15431.                                                                                     *
  15432.   ***********************************************************************************/
  15433.  
  15434.   /**********************************************************************************
  15435.   *
  15436.  
  15437.  The following definition shows a partially initialized one-dimensional array: 
  15438.  
  15439.   static int number1[3] = { 5, 7 };
  15440.  
  15441.  The values of number1 are: 
  15442.  
  15443.  Element        Value 
  15444.  number1[0]     5 
  15445.  number1[1]     7 
  15446.  number1[2]     0 
  15447.  
  15448.                                                                                     *
  15449.   ***********************************************************************************/
  15450.  
  15451.   /**********************************************************************************
  15452.   *
  15453.  
  15454.  Instead of using an expression in the subscript declarator to define the 
  15455.  number of elements, the following one-dimensional array definition defines one 
  15456.  element for each initializer specified: 
  15457.  
  15458.   static int item[ ] = { 1, 2, 3, 4, 5 };
  15459.  
  15460.  The compiler gives item the five initialized elements: 
  15461.  
  15462.  Element        Value 
  15463.  item[0]        1 
  15464.  item[1]        2 
  15465.  item[2]        3 
  15466.  item[3]        4 
  15467.  item[4]        5 
  15468.  
  15469.                                                                                     *
  15470.   ***********************************************************************************/
  15471.  
  15472.  
  15473. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15474.  
  15475. /**********************************************************************************
  15476. *
  15477.  
  15478. The following definitions show character array initializations: 
  15479.  
  15480.    static char name1[ ] = { 'J', 'a', 'n' };
  15481.    static char name2[ ] = { "Jan" };
  15482.    static char name3[4] = "Jan";
  15483.  
  15484. These definitions create the following elements: 
  15485.  
  15486.  Element             Value 
  15487.  name1[0]            J 
  15488.  name1[1]            a 
  15489.  name1[2]            n 
  15490.  name2[0]            J 
  15491.  name2[1]            a 
  15492.  name2[2]            n 
  15493.  name2[3]            \0 
  15494.  name3[0]            J 
  15495.  name3[1]            a 
  15496.  name3[2]            n 
  15497.  
  15498.                                                                                     *
  15499.   ***********************************************************************************/
  15500.  
  15501.  
  15502. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15503.  
  15504. /**********************************************************************************
  15505. *
  15506. The following definition explicitly initializes six elements in a 12-element 
  15507. array: 
  15508.  
  15509. static int matrix[3][4] =
  15510.    {
  15511.      {1, 2},
  15512.      {3, 4},
  15513.      {5, 6}
  15514.    };
  15515.  
  15516. The initial values of matrix are: 
  15517.  
  15518. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15519. Γöé ELEMENT       Γöé VALUE          Γöé ELEMENT       Γöé VALUE         Γöé
  15520. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15521. Γöé "matrix[0][0]"Γöé "1"            Γöé "matrix[1][2]"Γöé "0"           Γöé
  15522. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15523. Γöé "matrix[0][1]"Γöé "2"            Γöé "matrix[1][3]"Γöé "0"           Γöé
  15524. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15525. Γöé "matrix[0][2]"Γöé "0"            Γöé "matrix[2][0]"Γöé "5"           Γöé
  15526. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15527. Γöé "matrix[0][3]"Γöé "0"            Γöé "matrix[2][1]"Γöé "6"           Γöé
  15528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15529. Γöé "matrix[1][0]"Γöé "3"            Γöé "matrix[2][2]"Γöé "0"           Γöé
  15530. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15531. Γöé "matrix[1][1]"Γöé "4"            Γöé "matrix[2][3]"Γöé "0"           Γöé
  15532. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15533.  
  15534.                                                                                   *
  15535. ***********************************************************************************/
  15536.  
  15537.  
  15538. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15539.  
  15540. /**********************************************************************************
  15541. *
  15542. The following program defines a floating-point array called prices. 
  15543.  
  15544. The first for statement prints the values of the elements of prices. The second 
  15545. for statement adds five percent to the value of each element of prices, and 
  15546. assigns the result to total, and prints the value of total. 
  15547.  
  15548.                                                                                   *
  15549. ***********************************************************************************/
  15550.  
  15551. /* Example of one-dimensional arrays. */
  15552. #include <stdio.h>
  15553. #define  ARR_SIZE  5
  15554. int main(void)
  15555. {
  15556.   static float const prices[ARR_SIZE] = { 1.41, 1.50, 3.75, 5.00, .86 };
  15557.   auto float total;
  15558.   int i;
  15559.   for (i = 0; i < ARR_SIZE; i++)
  15560.   {
  15561.     printf("price = $%.2f\n", prices[i]);
  15562.   }
  15563.   printf("\n");
  15564.   for (i = 0; i < ARR_SIZE; i++)
  15565.   {
  15566.     total = prices[i] * 1.05;
  15567.     printf("total = $%.2f\n", total);
  15568.   }
  15569. }
  15570.  
  15571. /**********************************************************************************
  15572. *
  15573. The preceding program produces the following output: 
  15574.  
  15575. price = $1.41
  15576. price = $1.50
  15577. price = $3.75
  15578. price = $5.00
  15579. price = $0.86
  15580. total = $1.48
  15581. total = $1.57
  15582. total = $3.94
  15583. total = $5.25
  15584. total = $0.90
  15585.  
  15586.                                                                                   *
  15587. ***********************************************************************************/
  15588.  
  15589. /**********************************************************************************
  15590. *
  15591. The following program defines the multidimensional array salary_tbl.  A for 
  15592. loop prints the values of salary_tbl. 
  15593.  
  15594.                                                                                   *
  15595. ***********************************************************************************/
  15596.  
  15597. /* example of a multidimensional array */
  15598. #include <stdio.h>
  15599. #define  NUM_ROW     3
  15600. #define  NUM_COLUMN  5
  15601. int main(void)
  15602. {
  15603.   static int salary_tbl[NUM_ROW][NUM_COLUMN] =
  15604.   {
  15605.     {  500,  550,  600,  650,  700   },
  15606.     {  600,  670,  740,  810,  880   },
  15607.     {  740,  840,  940, 1040, 1140   }
  15608.   };
  15609.   int grade , step;
  15610.   for (grade = 0; grade < NUM_ROW; ++grade)
  15611.    for (step = 0; step < NUM_COLUMN; ++step)
  15612.    {
  15613.      printf("salary_tbl[%d] [%d] = %d\n", grade, step,
  15614.                                         salary_tbl[grade] [step]);
  15615.    }
  15616. }
  15617.  
  15618. /**********************************************************************************
  15619. *
  15620. The preceding program produces the following output: 
  15621.  
  15622. salary_tbl[0] [0] = 500
  15623. salary_tbl[0] [1] = 550
  15624. salary_tbl[0] [2] = 600
  15625. salary_tbl[0] [3] = 650
  15626. salary_tbl[0] [4] = 700
  15627. salary_tbl[1] [0] = 600
  15628. salary_tbl[1] [1] = 670
  15629. salary_tbl[1] [2] = 740
  15630. salary_tbl[1] [3] = 810
  15631. salary_tbl[1] [4] = 880
  15632. salary_tbl[2] [0] = 740
  15633. salary_tbl[2] [1] = 840
  15634. salary_tbl[2] [2] = 940
  15635. salary_tbl[2] [3] = 1040
  15636. salary_tbl[2] [4] = 1140
  15637.  
  15638.                                                                                   *
  15639. ***********************************************************************************/
  15640.  
  15641.  
  15642. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15643.  
  15644. An enumeration type declaration has the form: 
  15645.  
  15646.                                  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15647.                                              Γöé
  15648. ΓöÇΓöÇenumΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇenumeratorΓöÇΓö┤ΓöÇ}ΓöÇΓöÇΓöÇΓöÇ
  15649.              Γöé              Γöé
  15650.              ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
  15651.  
  15652. An enumerator has the form: 
  15653.  
  15654. ΓöÇΓöÇidentifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  15655.                 Γöé                             Γöé
  15656.                 ΓööΓöÇΓöÇ=ΓöÇΓöÇΓöÇΓöÇconstant_expressionΓöÇΓöÇΓöÇΓöÿ
  15657.  
  15658.  
  15659. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15660.  
  15661. /**********************************************************************************
  15662. *
  15663.  
  15664. The following example declares the enumeration tag status: 
  15665.  
  15666. enum status { run, create, delete=5, suspend };
  15667.  
  15668. The data type status represents the following values: 
  15669.  
  15670.  Enumeration         Integer 
  15671.  Constant            Representation 
  15672.  run                 0 
  15673.  create              1 
  15674.  delete              5 
  15675.  suspend             6 
  15676.  
  15677.                                                                                     *
  15678.   ***********************************************************************************/
  15679.  
  15680.   /**********************************************************************************
  15681.   *
  15682.  In the following example, the declarations of average on line 4 and of poor on 
  15683.  line 5 cause compiler error messages: 
  15684.  
  15685.    1   func()
  15686.    2   {
  15687.    3      enum score { poor, average, good };
  15688.    4      enum rating { below, average, above };
  15689.    5      int poor;
  15690.    6   }
  15691.  
  15692.                                                                                     *
  15693.   ***********************************************************************************/
  15694.  
  15695.  
  15696. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15697.  
  15698. /************************************************************************
  15699. *
  15700.  
  15701. The first line of the following example declares the enumeration tag grain. 
  15702. The second line defines the variable g_food and gives g_food the initial value 
  15703. of barley (2).  The type specifier enum grain indicates that the value of 
  15704. g_food is a member of the enumerated data type grain: 
  15705.  
  15706. enum grain { oats, wheat, barley, corn, rice };
  15707. enum grain g_food = barley;
  15708.  
  15709.                                                                    *
  15710. ************************************************************************/
  15711.  
  15712.  
  15713. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15714.  
  15715. /**********************************************************************************
  15716. *
  15717. The following program receives an integer as input.  The output is a sentence 
  15718. that gives the French name for the weekday that is associated with the integer. 
  15719. If the integer is not associated with a weekday, the program prints "C'est le 
  15720. mauvais jour." 
  15721.  
  15722.                                                                                   *
  15723. ***********************************************************************************/
  15724.  
  15725. #include <stdio.h>
  15726. enum days {
  15727.             Monday=1, Tuesday, Wednesday,
  15728.             Thursday, Friday, Saturday, Sunday
  15729.           } weekday;
  15730. int main(void)
  15731. {
  15732.    int num;
  15733.    printf("Enter an integer for the day of the week.  "
  15734.           "Mon=1,...,Sun=7\n");
  15735.    scanf("%d", &num);
  15736.    weekday=num;
  15737.    french(weekday);
  15738. }
  15739. french(weekday)
  15740. enum days weekday;
  15741. {
  15742.    switch (weekday)
  15743.    {
  15744.       case Monday:
  15745.          printf("Le jour de la semaine est lundi.\n");
  15746.          break;
  15747.       case Tuesday:
  15748.          printf("Le jour de la semaine est mardi.\n");
  15749.          break;
  15750.       case Wednesday:
  15751.          printf("Le jour de la semaine est mercredi.\n");
  15752.          break;
  15753.       case Thursday:
  15754.          printf("Le jour de la semaine est jeudi.\n");
  15755.          break;
  15756.       case Friday:
  15757.          printf("Le jour de la semaine est vendredi.\n");
  15758.          break;
  15759.       case Saturday:
  15760.          printf("Le jour de la semaine est samedi.\n");
  15761.          break;
  15762.       case Sunday:
  15763.          printf("Le jour de la semaine est dimanche.\n");
  15764.          break;
  15765.       default:
  15766.          printf("C'est le mauvais jour.\n");
  15767.    }
  15768. }
  15769.  
  15770.  
  15771. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15772.  
  15773. /************************************************************************
  15774. *
  15775.  
  15776. The following example declares pnut as a pointer to an int object having the 
  15777. volatile qualifier: 
  15778.  
  15779. extern int volatile *pnut;
  15780.  
  15781. The following example defines psoup as a volatile pointer to an object having 
  15782. type float: 
  15783.  
  15784. float * volatile psoup;
  15785.  
  15786. The following example defines pfowl as a pointer to an enumeration object of 
  15787. type bird: 
  15788.  
  15789. enum bird *pfowl;
  15790.  
  15791. The next example declares x as a pointer to a function that returns a char 
  15792. object: 
  15793.  
  15794. char (*x)(void);
  15795.  
  15796.                                                                         *
  15797. ************************************************************************/
  15798.  
  15799.  
  15800. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15801.  
  15802. /***********************************************************************/
  15803. *
  15804. The following example shows compatible declarations for the assignment 
  15805. operation: 
  15806.  
  15807.    float subtotal;
  15808.    float * sub_ptr;
  15809.          .
  15810.          .
  15811.          .
  15812.    sub_ptr = &subtotal;
  15813.    printf("The subtotal is %f\n", *sub_ptr);
  15814.  
  15815. The next example shows incompatible declarations for the assignment operation: 
  15816.  
  15817.    double league;
  15818.    int * minor;
  15819.          .
  15820.          .
  15821.          .
  15822.    minor = &league;     /* error */
  15823.  
  15824.                                                                         *
  15825. ************************************************************************/
  15826.  
  15827.  
  15828. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15829.  
  15830. /************************************************************************
  15831. *
  15832.  
  15833. The following example defines the pointer variable string, and the string 
  15834. constant "abcd".  The pointer string is initialized to point to the character a 
  15835. in the string "abcd". 
  15836.  
  15837.                                                                         *
  15838. ************************************************************************/
  15839.  
  15840. char *string = "abcd";
  15841.  
  15842. /************************************************************************
  15843. *
  15844.  
  15845. The following example defines weekdays as an array of pointers to string 
  15846. constants.  Each element points to a different string.  The object weekdays[2], 
  15847. for example, points to the string "Tuesday". 
  15848.  
  15849.                                                                         *
  15850. ************************************************************************/
  15851.  
  15852. static char *weekdays[ ] =
  15853.             {
  15854.               "Sunday", "Monday", "Tuesday", "Wednesday",
  15855.               "Thursday", "Friday", "Saturday"
  15856.             };
  15857.  
  15858.  
  15859. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15860.  
  15861. The ++ (increment) operator increases the value of a pointer by the size of the 
  15862. data object to which the pointer refers.  For example, if the pointer refers to 
  15863. the second element in an array, the ++ makes the pointer refer to the third 
  15864. element in the array. 
  15865.  
  15866. The -- (decrement) operator decreases the value of a pointer by the size of the 
  15867. data object to which the pointer refers.  For example, if the pointer refers to 
  15868. the second element in an array, the -- makes the pointer refer to the first 
  15869. element in the array. 
  15870.  
  15871.  
  15872. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15873.  
  15874. If the pointer p points to the first element in an array, the following 
  15875. expression causes the pointer to point to the third element in the same array: 
  15876.  
  15877. p = p + 2;
  15878.  
  15879. If you have two pointers that point to the same array, you can subtract one 
  15880. pointer from the other.  This operation yields the number of elements in the 
  15881. array that separate the two addresses to which the pointers refer. 
  15882.  
  15883.  
  15884. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15885.  
  15886. You can compare two pointers with the following operators:  ==, !=, <, >, <=, 
  15887. and >=. See Expressions and Operators for more information on these operators. 
  15888.  
  15889. Pointer comparisons are defined only when the pointers point to elements of the 
  15890. same array. 
  15891.  
  15892.  
  15893. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15894.  
  15895. You can assign to a pointer the address of a data object, the value of another 
  15896. compatible pointer or the NULL pointer. 
  15897.  
  15898.  
  15899. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15900.  
  15901. /**********************************************************************************
  15902. *
  15903.  
  15904. The following program contains pointer arrays: 
  15905.  
  15906.                                                                                   *
  15907. ***********************************************************************************/
  15908.  
  15909. /********************************************************************
  15910. **   Program to search for the first occurrence of a specified     **
  15911. **   character string in an array of character strings.            **
  15912. ********************************************************************/
  15913. #include <stdio.h>
  15914. #define  SIZE  20
  15915. int main(void)
  15916. {
  15917.    static char *names[ ] = { "Jim", "Amy", "Mark", "Sue", NULL };
  15918.    char * find_name(char **, char *);
  15919.    char new_name[SIZE], *name_pointer;
  15920.    printf("Enter name to be searched.\n");
  15921.    scanf("%s", new_name);
  15922.    name_pointer = find_name(names, new_name);
  15923.    printf("name %s%sfound\n", new_name,
  15924.           (name_pointer == NULL) ? " not " : " ");
  15925.    exit(EXIT_FAILURE);
  15926. } /* End of main */
  15927. /********************************************************************
  15928. **     Function find_name.  This function searches an array of     **
  15929. **     names to see if a given name already exists in the array.   **
  15930. **     It returns a pointer to the name or NULL if the name is     **
  15931. **     not found.                                                  **
  15932. ********************************************************************/
  15933. /* char **arry is a pointer to arrays of pointers (existing names) */
  15934. /* char *strng is a pointer to character array entered (new name)  */
  15935. char * find_name(char **arry, char *strng)
  15936. {
  15937.    for (; *arry != NULL; arry++)         /* for each name          */
  15938.    {
  15939.       if (strcmp(*arry, strng) == 0)     /* if strings match       */
  15940.          return(*arry);                  /* found it!              */
  15941.    }
  15942.    return(*arry);                        /* return the pointer     */
  15943. } /* End of find_name */
  15944.  
  15945. /**********************************************************************************
  15946. *
  15947. Interaction with the preceding program could produce the following sessions: 
  15948.  
  15949.  Output 
  15950.            Enter name to be searched. 
  15951.  
  15952.  Input 
  15953.            Mark 
  15954.  
  15955.  Output 
  15956.            name Mark found 
  15957.  
  15958.  or: 
  15959.  
  15960.  Output 
  15961.            Enter name to be searched. 
  15962.  
  15963.  Input 
  15964.            Bob 
  15965.  
  15966.  Output 
  15967.            name Bob not found 
  15968.  
  15969.                                                                                     *
  15970.   ***********************************************************************************/
  15971.  
  15972.  
  15973. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15974.  
  15975. A structure declaration has the form: 
  15976.  
  15977. Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstructΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  15978.   Γöé           Γöé          Γöé                   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    Γöé
  15979.   ΓööΓöÇΓöÇ_PackedΓöÇΓöÇΓöÿ          Γöé                              Γöé    Γöé
  15980.                          Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇmemberΓöÇ;ΓöÇΓöÇΓö┤ΓöÇ}ΓöÇΓöÇΓöÿ
  15981.                          Γöé              Γöé
  15982.                          ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
  15983.  
  15984.  
  15985. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15986.  
  15987. A member has the form: 
  15988.  
  15989.                    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15990.                                                              Γöé
  15991. ΓöÇΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
  15992.                     Γöé                                        Γöé
  15993.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ:ΓöÇΓöÇconstant_expressionΓöÇΓöÿ
  15994.                     Γöé              Γöé
  15995.                     ΓööΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÿ
  15996.  
  15997.  
  15998. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  15999.  
  16000. /************************************************************************
  16001. *
  16002.  
  16003. The following definition shows a completely initialized structure: 
  16004.  
  16005. struct address {
  16006.                  int street_no;
  16007.                  char *street_name;
  16008.                  char *city;
  16009.                  char *prov;
  16010.                  char *postal_code;
  16011.                };
  16012. static struct address perm_address =
  16013.                { 9876, "Goto St.", "Cville", "Ontario", "X9X 1A1"};
  16014.  
  16015. The values of perm_address are: 
  16016.  
  16017.  Member                      Value 
  16018.  perm_address.street_no      9876 
  16019.  perm_address.street_name    address of string "Goto St." 
  16020.  perm_address.city           address of string "Cville" 
  16021.  perm_address.prov           address of string "Ontario" 
  16022.  perm_address.postal_code    address of string "X9X 1A1" 
  16023.  
  16024.                                                                           *
  16025.   ************************************************************************/
  16026.  
  16027.   /************************************************************************
  16028.   *
  16029.  
  16030.  The following definition shows a partially initialized structure: 
  16031.  
  16032.   struct address {
  16033.                    int street_no;
  16034.                    char *street_name;
  16035.                    char *city;
  16036.                    char *prov;
  16037.                    char *postal_code;
  16038.                  };
  16039.   struct address temp_address =
  16040.                  { 321, "Aggregate Ave.", "Structown", "Ontario" };
  16041.  
  16042.  The values of temp_address are: 
  16043.  
  16044.  Member                                  Value 
  16045.  temp_address.street_no                  321 
  16046.  temp_address.street_name                address of string "Aggregate Ave." 
  16047.  temp_address.city                       address of string "Structown" 
  16048.  temp_address.prov                       address of string "Ontario" 
  16049.  temp_address.postal_code                value depends on the storage class. 
  16050.  
  16051.                                                                           *
  16052.   ************************************************************************/
  16053.  
  16054.  
  16055. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16056.  
  16057. /************************************************************************
  16058. *
  16059.  
  16060. The following example declares the identifier kitchen to be of type struct 
  16061. on_off: 
  16062.  
  16063.                                                                         *
  16064. ************************************************************************/
  16065.  
  16066. struct on_off {
  16067.                   unsigned light : 1;
  16068.                   unsigned toaster : 1;
  16069.                   int count;
  16070.                   unsigned ac : 4;
  16071.                   unsigned : 4;
  16072.                   unsigned clock : 1;
  16073.                   unsigned : 0;
  16074.                   unsigned flag : 1;
  16075.                  } kitchen ;
  16076.  
  16077. /************************************************************************
  16078. *
  16079.  
  16080. The structure kitchen contains eight members.  The following table describes 
  16081. the storage that each member occupies: 
  16082.  
  16083.  Member Name              Storage Occupied 
  16084.  light                    1 bit 
  16085.  toaster                  1 bit padding to next int boundary (unnamed field) 
  16086.  count                    The size of an int 
  16087.  ac                       4 bits 
  16088.                           4 bits (unnamed field) 
  16089.  clock                    1 bit padding to next int boundary (unnamed field) 
  16090.  flag                     1 bit 
  16091.  
  16092.                                                                           *
  16093.   ************************************************************************/
  16094.  
  16095.  
  16096. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16097.  
  16098. /**********************************************************************************
  16099. *
  16100.  
  16101. The following program finds the sum of the integer numbers in a linked list: 
  16102.  
  16103.                                                                                   *
  16104. ***********************************************************************************/
  16105.  
  16106. /* program to illustrate linked lists */
  16107. #include <stdio.h>
  16108. struct record {
  16109.                 int number;
  16110.                 struct record *next_num;
  16111.               };
  16112. int main(void)
  16113. {
  16114.    struct  record name1, name2, name3;
  16115.    struct  record *recd_pointer = &name1;
  16116.    int sum = 0;
  16117.    name1.number = 144;
  16118.    name2.number = 203;
  16119.    name3.number = 488;
  16120.    name1.next_num = &name2;
  16121.    name2.next_num = &name3;
  16122.    name3.next_num = NULL;
  16123.    while (recd_pointer != NULL)
  16124.    {
  16125.       sum += recd_pointer->number;
  16126.       recd_pointer = recd_pointer->next_num;
  16127.    }
  16128.    printf("Sum = %d\n", sum);
  16129. }
  16130.  
  16131. /**********************************************************************************
  16132. *
  16133. The structure type record contains two members:  number (an integer) and 
  16134. next_num (a pointer to a structure variable of type record). 
  16135.  
  16136. The record type variables name1, name2, and name3 are assigned the following 
  16137. values: 
  16138.  
  16139.  Member Name                   Value 
  16140.  name1.number                  144 
  16141.  name1.next_num                The address of name2 
  16142.  
  16143.  name2.number                  203 
  16144.  name2.next_num                The address of name3 
  16145.  
  16146.  name3.number                  488 
  16147.  name3.next_num                NULL (Indicating the end of the linked list.) 
  16148.  
  16149.  The variable recd_pointer is a pointer to a structure of type record. 
  16150.  recd_pointer is initialized to the address of name1 (the beginning of the 
  16151.  linked list). 
  16152.  
  16153.  The while loop causes the linked list to be scanned until recd_pointer equals 
  16154.  NULL.  The statement: 
  16155.  
  16156.                                                                                     *
  16157.   ***********************************************************************************/
  16158.  
  16159.   recd_pointer = recd_pointer->next_num;
  16160.  
  16161.   /**********************************************************************************
  16162.   *
  16163.  advances the pointer to the next object in the list. 
  16164.  
  16165.                                                                                     *
  16166.   ***********************************************************************************/
  16167.  
  16168.  
  16169. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16170.  
  16171. The following diagram shows the form of a union type declaration: 
  16172.  
  16173.                                              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16174.                                                         Γöé
  16175. ΓöÇΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇunionΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ{ΓöÇΓöÇΓöÇmemberΓöÇ;ΓöÇΓöÇΓö┤ΓöÇ}ΓöÇΓöÇ
  16176.    Γöé           Γöé         Γöé              Γöé
  16177.    ΓööΓöÇqualifierΓöÇΓöÿ         ΓööΓöÇΓöÇidentifierΓöÇΓöÇΓöÿ
  16178.  
  16179.  
  16180. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16181.  
  16182. A member has the form: 
  16183.  
  16184.                    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16185.                                                              Γöé
  16186. ΓöÇΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
  16187.                     Γöé                                        Γöé
  16188.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ:ΓöÇΓöÇconstant_expressionΓöÇΓöÿ
  16189.                     Γöé              Γöé
  16190.                     ΓööΓöÇΓöÇdeclaratorΓöÇΓöÇΓöÿ
  16191.  
  16192.  
  16193. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16194.  
  16195. /**********************************************************************************
  16196. *
  16197.  
  16198. The following example shows how you would initialize the first union member 
  16199. birthday of the union variable people: 
  16200.  
  16201.                                                                         *
  16202. ************************************************************************/
  16203.  
  16204. union {
  16205.       char birthday[9];
  16206.       int age;
  16207.       float weight;
  16208.       } people = "04/06/57";
  16209.  
  16210.  
  16211. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16212.  
  16213. /**********************************************************************************
  16214. *
  16215.  
  16216. The following example defines a union data type (not named) and a union 
  16217. variable (named length).  The member of length can be a long int, a float, or a 
  16218. double. 
  16219.  
  16220.                                                                                   *
  16221. ***********************************************************************************/
  16222.  
  16223. union {
  16224.         float meters;
  16225.         double centimeters;
  16226.         long inches;
  16227.       } length;
  16228.  
  16229. /**********************************************************************************
  16230. *
  16231. The following example defines the union type data as containing one member. 
  16232. The member can be named charctr, whole, or real.  The second statement defines 
  16233. two data type variables:  input and output. 
  16234.  
  16235.                                                                                   *
  16236. ***********************************************************************************/
  16237.  
  16238. union data {
  16239.              char charctr;
  16240.              int whole;
  16241.              float real;
  16242.            };
  16243. union data input, output;
  16244.  
  16245. /**********************************************************************************
  16246. *
  16247. The following statement assigns a character to input: 
  16248.  
  16249.                                                                                   *
  16250. ***********************************************************************************/
  16251.  
  16252. input.charctr = 'h';
  16253.  
  16254. /**********************************************************************************
  16255. *
  16256. The following statement assigns a floating-point number to member output: 
  16257.  
  16258.                                                                                   *
  16259. ***********************************************************************************/
  16260.  
  16261. output.real = 9.2;
  16262.  
  16263. /**********************************************************************************
  16264. *
  16265. The following example defines an array of structures named records.  Each 
  16266. element of records contains three members:  the integer id_num, the integer 
  16267. type_of_input, and the union variable input.  input has the union data type 
  16268. defined in the previous example. 
  16269.  
  16270.                                                                                   *
  16271. ***********************************************************************************/
  16272.  
  16273. struct {
  16274.          int id_num;
  16275.          int type_of_input;
  16276.          union data input;
  16277.        } records[10];
  16278.  
  16279. /**********************************************************************************
  16280. *
  16281. The following statement assigns a character to the structure member input of 
  16282. the first element of records: 
  16283.  
  16284.                                                                                   *
  16285. ***********************************************************************************/
  16286.  
  16287. records[0].input.charctr = 'g';
  16288.  
  16289.  
  16290. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16291.  
  16292. The syntax of a typedef declaration is: 
  16293.  
  16294.  ΓöÇΓöÇΓöÇΓöÇtypedefΓöÇΓöÇtype_specifierΓöÇΓöÇidentifierΓöÇ;ΓöÇΓöÇΓöÇ
  16295.  
  16296.  
  16297. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16298.  
  16299. /**********************************************************************************
  16300. *
  16301.  
  16302. The following statements declare LENGTH as a synonym for int and then use this 
  16303. typedef to declare length, width, and height as integral variables: 
  16304.  
  16305.                                                                                   *
  16306. ***********************************************************************************/
  16307.  
  16308. typedef int LENGTH;
  16309. LENGTH length, width, height;
  16310.  
  16311. /**********************************************************************************
  16312. *
  16313. The preceding lines are equivalent to the following: 
  16314.  
  16315.                                                                                   *
  16316. ***********************************************************************************/
  16317.  
  16318. int length, width, height;
  16319.  
  16320. /**********************************************************************************
  16321. *
  16322. Similarly, typedef can be used to define a structure type.  For example: 
  16323.  
  16324.                                                                                   *
  16325. ***********************************************************************************/
  16326.  
  16327. typedef struct {
  16328.                 int kilos;
  16329.                 int grams;
  16330.                } WEIGHT;
  16331.  
  16332. /**********************************************************************************
  16333. *
  16334.  
  16335. The structure WEIGHT can then be used in the following declarations: 
  16336.  
  16337.                                                                                   *
  16338. ***********************************************************************************/
  16339.  
  16340. WEIGHT  chicken, cow, horse, whale;
  16341.  
  16342.  
  16343. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16344.  
  16345. A main function has the form: 
  16346.  
  16347. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16348. Γöé                                                                Γöé
  16349. Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇmainΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
  16350. Γöé     ΓööΓöÇintΓöÇΓöÿ                                                    Γöé
  16351. Γöé                                                                Γöé
  16352. Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
  16353. Γöé    Γö£ΓöÇvoidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ        Γöé
  16354. Γöé    ΓööΓöÇintΓöÇΓöÇargcΓöÇΓöÇ,ΓöÇΓöÇchar *ΓöÇΓöÇargv[]ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÿ        Γöé
  16355. Γöé                                    ΓööΓöÇchar *ΓöÇΓöÇenvp[]ΓöÇΓöÿ          Γöé
  16356. Γöé                                                                Γöé
  16357. Γöé >ΓöÇΓöÇ)ΓöÇΓöÇblock_statementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>< Γöé
  16358. Γöé                                                                Γöé
  16359. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16360.  
  16361.  
  16362. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16363.  
  16364. /************************************************************************
  16365. *
  16366.  
  16367. The following program backward prints the arguments entered on a command line 
  16368. such that the last argument is printed first: 
  16369.  
  16370.                                                                         *
  16371. ************************************************************************/
  16372.  
  16373. #include <stdio.h>
  16374. int main(int argc, char *argv[])
  16375. {
  16376.   while (--argc > 0)
  16377.     printf("%s ", argv[argc]);
  16378. }
  16379.  
  16380. /************************************************************************
  16381. *
  16382.  
  16383. If you invoke this program from a command line with the following: 
  16384.  
  16385.    backward string1 string2
  16386.  
  16387. The output generated is: 
  16388.  
  16389.    string2 string1
  16390.  
  16391. The arguments argc and argv would contain the following values: 
  16392.  
  16393.  Object              Value 
  16394.  argc                3 
  16395.  argv[0]             pointer to string "backward" 
  16396.  argv[1]             pointer to string "string1" 
  16397.  argv[2]             pointer to string "string2" 
  16398.  argv[3]             NULL 
  16399.  
  16400.   /***********************************************************************/
  16401.  
  16402.  
  16403. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16404.  
  16405. A function definition has the form: 
  16406.  
  16407. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16408. Γöé                                                                Γöé
  16409. Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇ> Γöé
  16410. Γöé     Γö£ΓöÇexternΓöÇΓöñ  ΓööΓöÇlinkage_specifierΓöÇΓöÿ  ΓööΓöÇtype_specifierΓöÇΓöÿ      Γöé
  16411. Γöé     ΓööΓöÇstaticΓöÇΓöÿ                                                 Γöé
  16412. Γöé                                                                Γöé
  16413. Γöé                         <ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ<            Γöé
  16414. Γöé >ΓöÇΓöÇfunction_declaratorΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ> Γöé
  16415. Γöé                          ΓööΓöÇparameter_declarationΓöÇΓöÿ             Γöé
  16416. Γöé                                                                Γöé
  16417. Γöé >ΓöÇΓöÇblock_statementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>< Γöé
  16418. Γöé                                                                Γöé
  16419. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16420.  
  16421.  
  16422. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16423.  
  16424. /************************************************************************
  16425. *
  16426.  
  16427. The following example is a complete definition of the function sum: 
  16428.  
  16429.                                                                         *
  16430. ************************************************************************/
  16431.  
  16432. int sum(int x,int y)
  16433. {
  16434.    return(x + y);
  16435. }
  16436.  
  16437. /************************************************************************
  16438. *
  16439.  
  16440. The function sum has external linkage, returns an object that has type int, and 
  16441. has two parameters of type int declared as x and y.  The function body contains 
  16442. a single statement that returns the sum of x and y. 
  16443.  
  16444.                                                                         *
  16445. ************************************************************************/
  16446.  
  16447.  
  16448. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16449.  
  16450. A prototype function declarator has the form: 
  16451.  
  16452.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16453.                                                    Γöé
  16454.  ΓöÇΓöÇidentifierΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  16455.                      Γöé                             Γöé Γöé     Γöé
  16456.                      ΓööΓöÇtype_specifierΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇ...ΓöÇΓöÿ
  16457.                                        Γöé           Γöé
  16458.                                        ΓööΓöÇparameterΓöÇΓöÿ
  16459.  
  16460.  
  16461. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16462.  
  16463. /************************************************************************
  16464. *
  16465. The example below contains a function declarator sort with table declared as a 
  16466. pointer to int and length declared as type int. Note that arrays as parameters 
  16467. are implicitly converted to a pointer to the type. 
  16468.  
  16469.                                                                         *
  16470. ************************************************************************/
  16471.  
  16472. void sort(int table[ ], int length)
  16473. {
  16474.   int i, j, temp;
  16475.   for (i = 0; i < length -1; i++)
  16476.     for (j = i + 1; j < length; j++)
  16477.       if (table[i] > table[j])
  16478.       {
  16479.         temp = table[i];
  16480.         table[i] = table[j];
  16481.         table[j] = temp;
  16482.       }
  16483. }
  16484.  
  16485. /************************************************************************
  16486. *
  16487.  
  16488. The following examples contain prototype function declarators: 
  16489.  
  16490.                                                                         *
  16491. ************************************************************************/
  16492.  
  16493. double square(float x);
  16494. int area(int x,int y);
  16495. static char *search(char);
  16496.  
  16497. /************************************************************************
  16498. *
  16499.  
  16500. The example below illustrates how a typedef identifier can be used in a 
  16501. function declarator: 
  16502.  
  16503.                                                                         *
  16504. ************************************************************************/
  16505.  
  16506. typedef struct tm_fmt { int minutes;
  16507.                       int hours;
  16508.                       char am_pm;
  16509.                     } struct_t;
  16510. long time_seconds(struct_t arrival)
  16511.  
  16512.  
  16513. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16514.  
  16515. A non-prototype function declarator has the form: 
  16516.  
  16517.                      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16518.                                     Γöé
  16519.  ΓöÇΓöÇidentifierΓöÇΓöÇΓöÇΓöÇ(ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇ)ΓöÇΓöÇΓöÇΓöÇ
  16520.                        Γöé           Γöé
  16521.                        ΓööΓöÇparameterΓöÇΓöÿ
  16522.  
  16523.  
  16524. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16525.  
  16526. A parameter declaration has the form: 
  16527.  
  16528.                                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16529.                                                   Γöé
  16530. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇdeclaratorΓöÇΓö┤ΓöÇ;ΓöÇΓöÇ
  16531.     Γöé                               Γöé
  16532.     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇtype_specifierΓöÇΓöÇΓöÿ
  16533.     Γöé            Γöé
  16534.     ΓööΓöÇΓöÇregisterΓöÇΓöÇΓöÿ
  16535.  
  16536.  
  16537. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16538.  
  16539. /************************************************************************
  16540. *
  16541. The following example defines the function absolute with the return type 
  16542. double.  Because this is a noninteger return type, absolute is declared prior 
  16543. to the function call. 
  16544.  
  16545.                                                                         *
  16546. ************************************************************************/
  16547.  
  16548. #include <stdio.h>
  16549. double absolute(double);
  16550. int main(void)
  16551. {
  16552.    double f = -3.0;
  16553.    printf("absolute number = %f\n", absolute(f));
  16554. }
  16555. double absolute(double number)
  16556. {
  16557.    if (number < 0.0)
  16558.       number = -number;
  16559.    return (number);
  16560. }
  16561.  
  16562. /************************************************************************
  16563. *
  16564. Specifying a return type of void on a function declaration indicates that the 
  16565. function does not return a value.  The following example defines the function 
  16566. absolute with the return type void.  Within the function main, absolute is 
  16567. declared with the return type void. 
  16568.  
  16569.                                                                         *
  16570. ************************************************************************/
  16571.  
  16572. #include <stdio.h>
  16573. int main(void)
  16574. {
  16575.   void absolute(float);
  16576.   float f = -8.7;
  16577.   absolute(f);
  16578. }
  16579. void absolute(float number)
  16580. {
  16581.   if (number < 0.0)
  16582.     number = -number;
  16583.   printf("absolute number = %f\n", number);
  16584. }
  16585.  
  16586.  
  16587. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16588.  
  16589. /************************************************************************
  16590. *
  16591. The following statement calls the function startup and passes no parameters: 
  16592.  
  16593.                                                                         *
  16594. ************************************************************************/
  16595.  
  16596. startup();
  16597.  
  16598. /************************************************************************
  16599. *
  16600. The following function call causes copies of a and b to be stored in a local 
  16601. area for the function sum.  The function sum is executed using the copies of a 
  16602. and b. 
  16603.  
  16604.                                                                         *
  16605. ************************************************************************/
  16606.  
  16607. sum(a, b);
  16608.  
  16609. /************************************************************************
  16610. *
  16611. The following function call passes the value 2 and the value of the expression 
  16612. a +b to sum: 
  16613.  
  16614.                                                                         *
  16615. ************************************************************************/
  16616.  
  16617. sum(2, a + b);
  16618.  
  16619. /************************************************************************
  16620. *
  16621. The following statement calls the functions printf and sum.  sum receives the 
  16622. values of a and b. printf receives a character string and the return value of 
  16623. the function sum: 
  16624.  
  16625.                                                                         *
  16626. ************************************************************************/
  16627.  
  16628. printf("sum = %d\n", sum(a,b));
  16629.  
  16630. /************************************************************************
  16631. *
  16632. The following program passes the value of count to the function increment. 
  16633. increment increases the value of the parameter x by 1. 
  16634.  
  16635.                                                                         *
  16636. ************************************************************************/
  16637.  
  16638. #include <stdio.h>
  16639. void increment(int);
  16640. int main(void)
  16641. {
  16642.   int count = 5;
  16643.   /* value of count is passed to the function */
  16644.   increment(count);
  16645.   printf("count = %d\n", count);
  16646. }
  16647. void increment(int x)
  16648. {
  16649.   ++x;
  16650.   printf("x = %d\n", x);
  16651. }
  16652.  
  16653. /************************************************************************
  16654. *
  16655. The output illustrates that the value of count in main remains unchanged: 
  16656.  
  16657. x = 6
  16658. count = 5
  16659.  
  16660. In the following program, main passes the address of count to increment.  The 
  16661. function increment was changed to handle the pointer. The parameter x is 
  16662. declared a pointer.  The contents to which x points are then incremented. 
  16663.  
  16664.                                                                         *
  16665. ************************************************************************/
  16666.  
  16667. #include <stdio.h>
  16668. int main(void)
  16669. {
  16670.   void increment(int *x);
  16671.   int count = 5;
  16672.   /* address of count is passed to the function */
  16673.   increment(&count);
  16674.   printf("count = %d\n", count);
  16675. }
  16676. void increment(int *x)
  16677. {
  16678.   ++*x;
  16679.   printf("*x = %d\n", *x);
  16680. }
  16681.  
  16682. /************************************************************************
  16683. *
  16684. The output shows that the variable count is increased: 
  16685.  
  16686. *x = 6
  16687. count = 6
  16688.  
  16689.                                                                         *
  16690. ************************************************************************/
  16691.  
  16692.  
  16693. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16694.  
  16695.  Operator Name         Operators 
  16696.  
  16697.  Primary               ()  [ ]  .  -> 
  16698.                           Associativity:  left to right 
  16699.  
  16700.  Unary                 ++  --  -  +  !  ~  &  *  (typename)  sizeof 
  16701.                           Associativity:  right to left 
  16702.  
  16703.  Multiplicative        *  /  % 
  16704.                           Associativity:  left to right 
  16705.  
  16706.  Additive              +  - 
  16707.                           Associativity:  left to right 
  16708.  
  16709.  Bitwise Shift         <<  >> 
  16710.                           Associativity:  left to right 
  16711.  
  16712.  Relational            <  >  <=  >= 
  16713.                           Associativity:  left to right 
  16714.  
  16715.  Equality              ==  != 
  16716.                           Associativity:  left to right 
  16717.  
  16718.  Bitwise Logical AND   & 
  16719.                           Associativity:  left to right 
  16720.  
  16721.  Bitwise Exclusive OR  ^  or  ╨║ 
  16722.                           Associativity:  left to right 
  16723.  
  16724.  Bitwise Inclusive OR  | 
  16725.                           Associativity:  left to right 
  16726.  
  16727.  Logical AND           && 
  16728.                           Associativity:  left to right 
  16729.  
  16730.  Logical OR            || 
  16731.                           Associativity:  left to right 
  16732.  
  16733.  Conditional           ?  : 
  16734.                           Associativity:  right to left 
  16735.  
  16736.  Assignment            =  +=  -=  *=  /=  <<=  >>=  %=  &=  ^=  |= 
  16737.                           Associativity:  right to left 
  16738.  
  16739.  Comma                 , 
  16740.                           Associativity:  left to right 
  16741.  
  16742.  
  16743. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16744.  
  16745. /***********************************************************************
  16746. *
  16747. The parentheses in the following expressions explicitly show how the C language 
  16748. groups operands and operators.  If parentheses did not appear in these 
  16749. expressions, the operands and operators would be grouped in the same manner as 
  16750. indicated by the parentheses. 
  16751.  
  16752.                                                                         *
  16753. ************************************************************************/
  16754.  
  16755. total = (4 + (5 * 3));
  16756. total = (((8 * 5) / 10) / 3);
  16757. total = (10 + (5/3));
  16758.  
  16759. /***********************************************************************
  16760. *
  16761. The following expression contains operators that are both associative and 
  16762. commutative: 
  16763.  
  16764.                                                                         *
  16765. ************************************************************************/
  16766.  
  16767. total = price + prov_tax + city_tax;
  16768.  
  16769. /***********************************************************************
  16770. *
  16771. Because the C language does not specify the order of grouping operands with 
  16772. operators that are both associative and commutative, the operands and operators 
  16773. could be grouped in the following ways (as indicated by parentheses): 
  16774.  
  16775.                                                                         *
  16776. ************************************************************************/
  16777.  
  16778. total = (price + (prov_tax + city_tax));
  16779. total = ((price + prov_tax) + city_tax);
  16780. total = ((price + city_tax) + prov_tax);
  16781.  
  16782. /***********************************************************************
  16783. *
  16784. However, the grouping of operands and operators could affect the result.  In 
  16785. the following expression, each function call may be modifying the same global 
  16786. variables. These side effects may result in different values for the expression 
  16787. depending on the order in which the functions are called: 
  16788.  
  16789.                                                                         *
  16790. ************************************************************************/
  16791.  
  16792. a = b() + c() + d();
  16793.  
  16794. /***********************************************************************
  16795. *
  16796. If the expression contains operators that are both associative and commutative 
  16797. and the order of grouping operands with operators can affect the result of the 
  16798. expression, separate the expression into several expressions.  For example, the 
  16799. following expressions could replace the previous expression if the called 
  16800. functions do not produce any side effects that affect the variable a. 
  16801.  
  16802.                                                                         *
  16803. ************************************************************************/
  16804.  
  16805. a = b();
  16806. a += c();
  16807. a += d();
  16808.  
  16809.  
  16810. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16811.  
  16812.  Expression               Lvalue 
  16813.  x = 42;                  x 
  16814.  *ptr = newvalue;         *ptr 
  16815.  a++                      a 
  16816.  
  16817.  
  16818. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16819.  
  16820. /***********************************************************************
  16821. *
  16822.  
  16823. The following examples show constants used in expressions. 
  16824.  
  16825.                                                                         *
  16826. ************************************************************************/
  16827.  
  16828.  Expression                         Constant 
  16829.  x = 42;                            42 
  16830.  extern int cost = 1000;            1000 
  16831.  y = 3 * 29;                        3 * 29 
  16832.  
  16833.  
  16834. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16835.  
  16836. /************************************************************************
  16837. *
  16838.  
  16839. In the following example, main passes func two values:  5 and 7.  The function 
  16840. func receives copies of these values and accesses them by the identifiers:  a 
  16841. and b.  The function func changes the value of a.  When control passes back to 
  16842. main, the actual values of x and y are not changed.  The called function func 
  16843. only receives copies of x and y, not the values themselves. 
  16844.  
  16845.                                                                         *
  16846. ************************************************************************/
  16847.  
  16848. int main(void)
  16849. {
  16850.    int x = 5, y = 7;
  16851.    func(x, y);
  16852.    printf("In main, x = %d    y = %d\n", x, y);
  16853. }
  16854. func(a,b)
  16855. int a, b;
  16856. {
  16857.    a += b;
  16858.    printf("In func, a = %d    b = %d\n", a, b);
  16859. }
  16860.  
  16861. /************************************************************************
  16862. *
  16863.  
  16864. The preceding program produces the following output: 
  16865.  
  16866. In func, a = 12   b = 7
  16867. In main, x = 5    y = 7
  16868.  
  16869.                                                                         *
  16870. ************************************************************************/
  16871.  
  16872.  
  16873. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16874.  
  16875. /***********************************************************************
  16876. *
  16877. The following expression determines which variable has the greater value, y or 
  16878. z, and assigns the greater value to the variable x: 
  16879.  
  16880.                                                                         *
  16881. ************************************************************************/
  16882.  
  16883. x = (y > z) ? y : z;
  16884.  
  16885. /***********************************************************************
  16886. *
  16887. The preceding expression is equivalent to the following statement: 
  16888.  
  16889.                                                                         *
  16890. ************************************************************************/
  16891.  
  16892. if (y > z)
  16893.    x = y;
  16894. else
  16895.    x = z;
  16896.  
  16897. /***********************************************************************
  16898. *
  16899. The following expression calls the function printf which receives the value of 
  16900. the variable c, if c evaluates to a digit. Otherwise, printf receives the 
  16901. character constant 'x'. 
  16902.  
  16903.                                                                         *
  16904. ************************************************************************/
  16905.  
  16906. printf(" c = %c\n", isdigit(c) ? c : 'x');
  16907.  
  16908.  
  16909. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16910.  
  16911. /************************************************************************
  16912. *
  16913.  
  16914. The following example assigns the value of number to the member employee of the 
  16915. structure payroll: 
  16916.  
  16917.                                                                         *
  16918. ************************************************************************/
  16919.  
  16920. payroll.employee = number;
  16921.  
  16922. /************************************************************************
  16923. *
  16924.  
  16925. The following example assigns in order the value 0 (zero) to d, the value of d 
  16926. to c, the value of c to b, and the value of b to a: 
  16927.  
  16928.                                                                         *
  16929. ************************************************************************/
  16930.  
  16931. a = b = c = d = 0;
  16932.  
  16933. /***********************************************************************/
  16934.  
  16935.  
  16936. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16937.  
  16938. /************************************************************************
  16939. *
  16940. The following example shows how the values of data objects change in nested 
  16941. blocks: 
  16942.  
  16943.                                                                         *
  16944. ************************************************************************/
  16945.  
  16946.  1   #include <stdio.h>
  16947.  2
  16948.  3   int main(void)
  16949.  4   {
  16950.  5      int x = 1;                     /* Initialize x to 1  */
  16951.  6      int y = 3;
  16952.  7
  16953.  8      if (y > 0)
  16954.  9      {
  16955. 10         int x = 2;                  /* Initialize x to 2  */
  16956. 11         printf("second x = %4d\n", x);
  16957. 12      }
  16958. 13      printf("first  x = %4d\n", x);
  16959. 14   }
  16960.  
  16961. /************************************************************************
  16962. *
  16963. The preceding example produces the following output: 
  16964.  
  16965. second x =    2
  16966. first  x =    1
  16967.  
  16968. Two variables named x are defined in main.  The definition of x on line 5 
  16969. retains storage throughout the execution of main.  However, since the 
  16970. definition of x on line 10 occurs within a nested block, line 11 recognizes x 
  16971. as the variable defined on line 10.  Line 13 is not part of the nested block. 
  16972. Thus, line 13 recognizes x as the variable defined on line 5. 
  16973.  
  16974.                                                                         *
  16975. ************************************************************************/
  16976.  
  16977.  
  16978. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  16979.  
  16980. /************************************************************************
  16981. *
  16982. The following example shows a break statement in the action part of a for 
  16983. statement.  If the ith element of the array string is equal to '\0', the break 
  16984. statement causes the for statement to end. 
  16985.  
  16986.                                                                         *
  16987. ************************************************************************/
  16988.  
  16989. for (i = 0; i < 5; i++)
  16990. {
  16991.    if (string[i] == '\0')
  16992.       break;
  16993.    length++;
  16994. }
  16995.  
  16996. /************************************************************************
  16997. *
  16998. The preceding for statement is equivalent to the following for statement, if 
  16999. string does not contain any embedded null characters: 
  17000.  
  17001.                                                                         *                                     *
  17002. ************************************************************************/
  17003.  
  17004. for (i = 0; i < 5; i++)
  17005. {
  17006.    if (string[i] != '\0')
  17007.       length++;
  17008. }
  17009.  
  17010. /************************************************************************
  17011. *
  17012. The following example shows a break statement in a nested looping statement. 
  17013. The outer loop sequences an array of pointers to strings.  The inner loop 
  17014. examines each character of the string.  When the break statement is executed, 
  17015. the inner loop ends and control returns to the outer loop. 
  17016.  
  17017.                                                                         *
  17018. ************************************************************************/
  17019.  
  17020. /************************************************************************
  17021. *
  17022. The preceding program produces the following output: 
  17023.  
  17024. letter count = 4
  17025.  
  17026. The following example is a switch statement that contains several break 
  17027. statements.  Each break statement indicates the end of a specific clause and 
  17028. ends the execution of the switch statement. 
  17029.  
  17030.                                                                         *
  17031. ************************************************************************/
  17032.  
  17033. enum {morning, afternoon, evening} timeofday;
  17034. switch (timeofday)
  17035. {
  17036.    case (morning):
  17037.       printf("Good Morning\n");
  17038.       break;
  17039.    case (evening):
  17040.       printf("Good Evening\n");
  17041.       break;
  17042.    default:
  17043.       printf("Good Day, eh\n");
  17044.       break;
  17045. }
  17046.  
  17047.  
  17048. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17049.  
  17050. /************************************************************************
  17051. *
  17052. The following example shows a continue statement in a for statement.  The 
  17053. continue statement causes the system to skip over those elements of the array 
  17054. rates that have values less than or equal to 1. 
  17055.  
  17056.                                                                         *
  17057. ************************************************************************/
  17058.  
  17059. #include <stdio.h>
  17060. #define  SIZE  5
  17061. int main(void)
  17062. {
  17063.    int i;
  17064.    static float rates[SIZE] = { 1.45, 0.05, 1.88, 2.00, 0.75 };
  17065.    printf("Rates over 1.00\n");
  17066.    for (i = 0; i < SIZE; i++)
  17067.    {
  17068.       if (rates[i] <= 1.00)  /*  skip rates <= 1.00  */
  17069.          continue;
  17070.       printf("rate = %.2f\n", rates[i]);
  17071.    }
  17072. }
  17073.  
  17074. /************************************************************************
  17075. *
  17076. The preceding program produces the following output: 
  17077.  
  17078. Rates over 1.00
  17079. rate = 1.45
  17080. rate = 1.88
  17081. rate = 2.00
  17082.  
  17083. The following example shows a continue statement in a nested loop.  When the 
  17084. inner loop encounters a number in the array strings, that iteration of the loop 
  17085. is terminated. Execution continues with the third expression of the inner loop 
  17086. (See for).  The inner loop is terminated when the '\0' escape sequence is 
  17087. encountered. 
  17088.  
  17089.                                                                         *
  17090. ************************************************************************/
  17091.  
  17092. /************************************************************************
  17093. **     This program counts the characters in strings that are part     **
  17094. **     of an array of pointers to characters.  The count excludes      **
  17095. **     the digits 0 (zero) through 9.                                  **
  17096. *************************************************************************/
  17097. #include <stdio.h>
  17098. #define  SIZE  3
  17099. int main(void)
  17100. {
  17101.    static char *strings[SIZE] = { "ab", "c5d", "e5" };
  17102.    int i;
  17103.    int letter_count = 0;
  17104.    char *pointer;
  17105.    for (i = 0; i < SIZE; i++)            /* for each string         */
  17106.                                          /* for each each character */
  17107.       for (pointer = strings[i]; *pointer != '\0'; ++pointer)
  17108.       {                                  /* if a number              */
  17109.          if (*pointer >= '0' && *pointer <= '9')
  17110.             continue;
  17111.          letter_count++;
  17112.       }
  17113.    printf("letter count = %d\n", letter_count);
  17114. }
  17115.  
  17116. /************************************************************************
  17117. *
  17118. The preceding program produces the following output: 
  17119.  
  17120. letter count = 5
  17121.  
  17122.                                                                         *
  17123. ************************************************************************/
  17124.  
  17125.  
  17126. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17127.  
  17128. /************************************************************************
  17129. *
  17130. The following statement prompts the user to enter a 1.  If the user enters a 1, 
  17131. the statement ends execution. Otherwise, the statement displays another prompt. 
  17132.  
  17133.                                                                         *
  17134. ************************************************************************/
  17135.  
  17136. #include <stdio.h>
  17137. int main (void)
  17138. {
  17139.    int reply1;
  17140.    do
  17141.    {
  17142.       printf("Enter a 1\n");
  17143.       scanf("%d", &reply1);
  17144.    } while (reply1 != 1);
  17145. }
  17146.  
  17147.  
  17148. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17149.  
  17150. printf("Account Number: \n");             /* A call to the printf      */
  17151. marks = dollars * exch_rate;              /* An assignment to marks    */
  17152. (difference < 0) ? ++losses : ++gain;     /* A conditional increment   */
  17153. switches = flags | BIT_MASK;              /* An assignment to switches */
  17154.  
  17155.  
  17156. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17157.  
  17158. /************************************************************************
  17159. *
  17160. The following for statement prints the value of count 20 times.  The for 
  17161. statement initially sets the value of count to 1.  After each execution of the 
  17162. statement, count is incremented. 
  17163.  
  17164.                                                                         *
  17165. ************************************************************************/
  17166.  
  17167. for (count = 1; count <= 20; count++)
  17168.    printf("count = %d\n", count);
  17169.  
  17170. /************************************************************************
  17171. *
  17172. For comparison purposes, the preceding example can be written using the 
  17173. following sequence of statements to accomplish the same task.  Note the use of 
  17174. the while statement instead of the for statement. 
  17175.  
  17176.                                                                         *
  17177. ************************************************************************/
  17178.  
  17179. count = 1;
  17180. while (count <= 20)
  17181. {
  17182.    printf("count = %d\n", count);
  17183.    count++;
  17184. }
  17185.  
  17186. /************************************************************************
  17187. *
  17188. The following for statement does not contain an initialization expression. 
  17189.  
  17190.                                                                         *
  17191. ************************************************************************/
  17192.  
  17193. for (; index > 10; --index)
  17194. {
  17195.    list[index] = var1 + var2;
  17196.    printf("list[%d] = %d\n", index, list[index]);
  17197. }
  17198.  
  17199. /************************************************************************
  17200. *
  17201. The following for statement will continue executing until scanf receives the 
  17202. letter e: 
  17203.  
  17204.                                                                         *
  17205. ************************************************************************/
  17206.  
  17207. for (;;)
  17208. {
  17209.    scanf("%c", &letter);
  17210.    if (letter == '\n')
  17211.       continue;
  17212.    if (letter == 'e')
  17213.       break;
  17214.    printf("You entered the letter %c\n", letter);
  17215. }
  17216.  
  17217. /************************************************************************
  17218. *
  17219. The following for statement contains multiple initializations and increments. 
  17220. The comma operator makes this construction possible. 
  17221.  
  17222.                                                                         *
  17223. ************************************************************************/
  17224.  
  17225. for (i = 0, j = 50; i < 10; ++i, j += 50)
  17226. {
  17227.     printf("i = %2d and j = %3d\n", i, j);
  17228. }
  17229.  
  17230. /************************************************************************
  17231. *
  17232. The following example shows a nested for statement.  The outer statement is 
  17233. executed as long as the value of row is less than 5.  Each time the outer for 
  17234. statement is executed, the inner for statement sets the initial value of column 
  17235. to zero and the statement of the inner for statement is executed 3 times.  The 
  17236. inner statement is executed as long as the value of column is less than 3. 
  17237. This example prints the values of an array having the dimensions [5][3]: 
  17238.  
  17239.                                                                         *
  17240. ************************************************************************/
  17241.  
  17242. for (row = 0; row < 5; row++)
  17243.    for (column = 0; column < 3; column++)
  17244.       printf("%d\n", table[row][column]);
  17245.  
  17246.  
  17247. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17248.  
  17249. /************************************************************************
  17250. *
  17251. The following example shows a goto statement that is used to jump out of a 
  17252. nested loop.  This function could be written without using a goto statement. 
  17253.  
  17254.                                                                         *
  17255. ************************************************************************/
  17256.  
  17257. void display(int matrix[3][3])
  17258. {
  17259.    int i, j;
  17260.    for (i = 0; i < 3; i++)
  17261.       for (j = 0; j < 3; j++)
  17262.       {
  17263.          if ( (matrix[i][j] < 1) || (matrix[i][j] > 6) )
  17264.             goto out_of_bounds;
  17265.          printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
  17266.       }
  17267.    return;
  17268.    out_of_bounds: printf("number must be 1 through 6\n");
  17269. }
  17270.  
  17271.  
  17272. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17273.  
  17274. /************************************************************************
  17275. *
  17276. The following example causes grade to receive the value A if the value of score 
  17277. is greater than or equal to 90. 
  17278.  
  17279.                                                                         *
  17280. ************************************************************************/
  17281.  
  17282. if (score >= 90)
  17283.    grade = 'A';
  17284.  
  17285. /************************************************************************
  17286. *
  17287. The following example displays number is positive if the value of number is 
  17288. greater than or equal to 0 (zero).  Otherwise, the example displays number is 
  17289. negative. 
  17290.  
  17291.                                                                         *
  17292. ************************************************************************/
  17293.  
  17294. if (number >= 0)
  17295.    printf("number is positive\n");
  17296. else
  17297.    printf("number is negative\n");
  17298.  
  17299. /************************************************************************
  17300. *
  17301. The following example shows a nested if statement: 
  17302.  
  17303.                                                                         *
  17304. ************************************************************************/
  17305.  
  17306. if (paygrade == 7)
  17307.    if (level >= 0 && level <= 8)
  17308.       salary *= 1.05;
  17309.    else
  17310.       salary *= 1.04;
  17311. else
  17312.    salary *= 1.06;
  17313.  
  17314. /************************************************************************
  17315. *
  17316. The following example shows an if statement that does not have an else clause. 
  17317. Because an else clause always associates with the closest if statement, braces 
  17318. may be necessary to force a particular else clause to associate with the 
  17319. correct if statement.  In this example, omitting the braces would cause the 
  17320. else clause to associate with the nested if statement. 
  17321.  
  17322.                                                                         *
  17323. ************************************************************************/
  17324.  
  17325. if (gallons > 0) {
  17326.    if (miles > gallons)
  17327.       mpg = miles/gallons;
  17328. }
  17329. else
  17330.    mpg = 0;
  17331.  
  17332. /************************************************************************
  17333. *
  17334. The following example shows an if statement nested within an else clause.  This 
  17335. example tests multiple conditions.  The tests are made in order of their 
  17336. appearance.  If one test evaluates to a nonzero value, a statement executes and 
  17337. the entire if statement ends. 
  17338.  
  17339.                                                                         *
  17340. ************************************************************************/
  17341.  
  17342. if (value > 0)
  17343.    ++increase;
  17344. else if (value == 0)
  17345.    ++break_even;
  17346. else
  17347.    ++decrease;
  17348.  
  17349.  
  17350. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17351.  
  17352. /************************************************************************
  17353. *
  17354. The following example initializes the elements of the array price. Because the 
  17355. initializations occur within the for expressions, a statement is only needed to 
  17356. finish the for syntax;  no operations are required. 
  17357.  
  17358.                                                                         *
  17359. ************************************************************************/
  17360.  
  17361. for (i = 0; i < 3; price[i++] = 0)
  17362.    ;
  17363.  
  17364.  
  17365. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17366.  
  17367. return;            /* Returns no value            */
  17368. return result;     /* Returns the value of result */
  17369. return 1;          /* Returns the value 1         */
  17370. return (x * x);    /* Returns the value of x * x  */
  17371.  
  17372. /************************************************************************
  17373. *
  17374. The following function searches through an array of integers to determine if a 
  17375. match exists for the variable number.  If a match exists, the function match 
  17376. returns the value of i.  If a match does not exist, the function match returns 
  17377. the value -1 (negative one). 
  17378.  
  17379.                                                                         *
  17380. ************************************************************************/
  17381.  
  17382. int match(int number, int array[ ], int n)
  17383. {
  17384.    int i;
  17385.    for (i = 0; i < n; i++)
  17386.       if (number == array[i])
  17387.          return (i);
  17388.    return(-1);
  17389. }
  17390.  
  17391.  
  17392. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17393.  
  17394. case Clause and Label 
  17395.  
  17396. /************************************************************************
  17397. *
  17398.  
  17399. A case_clause contains a case label followed by any number of statements.  A 
  17400. case clause has the form: 
  17401.  
  17402.                                                                         *
  17403. ************************************************************************/
  17404.  
  17405.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17406.                           Γöé
  17407. ΓöÇΓöÇcase_labelΓöÇΓöÇΓöÇstatementΓöÇΓö┤ΓöÇΓöÇ
  17408.  
  17409. /************************************************************************
  17410. *
  17411.  
  17412. A case_label contains the word case followed by a constant expression and a 
  17413. colon.  Anywhere you can place one case label, you can place multiple case 
  17414. labels.  A case label has the form: 
  17415.  
  17416.                                                                         *
  17417. ************************************************************************/
  17418.  
  17419.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17420.                                  Γöé
  17421. ΓöÇΓöÇΓöÇcaseΓöÇΓöÇconstant_expressionΓöÇΓöÇ:ΓöÇΓö┤ΓöÇ
  17422.  
  17423.  
  17424. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17425.  
  17426. default Clause and Label 
  17427.  
  17428. /************************************************************************
  17429. *
  17430.  
  17431. A default_clause contains a default label followed by one or more statements. 
  17432. You can place a case label on either side of the default label.  A 
  17433. default_clause has the form: 
  17434.  
  17435.                                                                         *
  17436. ************************************************************************/
  17437.  
  17438.                                                      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17439.                                                                 Γöé
  17440. ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdefault_labelΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇstatementΓöÇΓö┤ΓöÇ
  17441.     Γöé              Γöé                 Γöé              Γöé
  17442.     ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ                 ΓööΓöÇΓöÇcase_labelΓöÇΓöÇΓöÿ
  17443.  
  17444. /************************************************************************
  17445. *
  17446.  
  17447. A default_label contains the word default and a colon.  A switch statement can 
  17448. have only one default label.  A default label has the form: 
  17449.  
  17450.                                                                         *
  17451. ************************************************************************/
  17452.  
  17453. ΓöÇΓöÇdefaultΓöÇΓöÇ:ΓöÇΓöÇ
  17454.  
  17455.  
  17456. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17457.  
  17458. /************************************************************************
  17459. *
  17460. The following switch statement contains several case clauses and one default 
  17461. clause.  Each clause contains a function call and a break statement.  The break 
  17462. statements prevent control from passing down through each statement in the 
  17463. switch body. 
  17464.  
  17465. If the switch expression evaluated to '/', the switch statement would call the 
  17466. function divide.  Control would then pass to the statement following the switch 
  17467. body. 
  17468.  
  17469.                                                                         *
  17470. ************************************************************************/
  17471.  
  17472. char key;
  17473. printf("Enter an arithmetic operator\n");
  17474. scanf("%c",&key);
  17475. switch (key)
  17476. {
  17477.    case '+':
  17478.       add();
  17479.       break;
  17480.    case '-':
  17481.       subtract();
  17482.       break;
  17483.    case '*':
  17484.       multiply();
  17485.       break;
  17486.    case '/':
  17487.       divide();
  17488.       break;
  17489.    default:
  17490.       printf("invalid key\n");
  17491.       break;
  17492. }
  17493.  
  17494. /************************************************************************
  17495. *
  17496.  
  17497. If the switch expression matches a case expression, the statements following 
  17498. the case expression are executed until a break statement is encountered or the 
  17499. end of the switch body is reached.  In the following example, break statements 
  17500. are not present.  If the value of text[i] is equal to 'A', all three counters 
  17501. are incremented.  If the value of text[i] is equal to 'a', lettera and total 
  17502. are increased.  Only total is increased if text[i] is not equal to 'A' or 'a'. 
  17503.  
  17504.                                                                         *
  17505. ************************************************************************/
  17506.  
  17507. char text[100];
  17508. int capa, lettera, total;
  17509. for (i=0; i<sizeof(text); i++) {
  17510.     switch (text[i])
  17511.     {
  17512.        case 'A':
  17513.          capa++;
  17514.        case 'a':
  17515.          lettera++;
  17516.        default:
  17517.          total++;
  17518.     }
  17519. }
  17520.  
  17521. /************************************************************************
  17522. *
  17523. The following switch statement performs the same statements for more than one 
  17524. case label: 
  17525.  
  17526.                                                                         *
  17527. ************************************************************************/
  17528.  
  17529. int month;
  17530. switch (month)
  17531. {
  17532.    case 12:
  17533.    case 1:
  17534.    case 2:
  17535.       printf("month %d is a winter month\n", month);
  17536.       break;
  17537.    case 3:
  17538.    case 4:
  17539.    case 5:
  17540.       printf("month %d is a spring month\n", month);
  17541.       break;
  17542.    case 6:
  17543.    case 7:
  17544.    case 8:
  17545.       printf("month %d is a summer month\n", month);
  17546.       break;
  17547.    case 9:
  17548.    case 10:
  17549.    case 11:
  17550.       printf("month %d is a fall month\n", month);
  17551.       break;
  17552.    default:
  17553.       printf("not a valid month\n");
  17554.       break;
  17555. }
  17556.  
  17557. /************************************************************************
  17558. *
  17559.  
  17560. If the expression month had the value 3, control would be passed to the 
  17561. statement: 
  17562.  
  17563.                                                                         *
  17564. ************************************************************************/
  17565.  
  17566. printf("month %d is a spring month\n", month);
  17567.  
  17568. /************************************************************************
  17569. *
  17570.  
  17571. The break statement would pass control to the statement following the switch 
  17572. body. 
  17573.  
  17574.                                                                         *
  17575. ************************************************************************/
  17576.  
  17577.  
  17578. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17579.  
  17580. /************************************************************************
  17581. *
  17582. In the following program, item[index] triples each time the value of the 
  17583. expression ++index is less than MAX_INDEX.  When ++index evaluates to 
  17584. MAX_INDEX, the while statement ends. 
  17585.  
  17586.                                                                         *
  17587. ************************************************************************/
  17588.  
  17589. #define MAX_INDEX  (sizeof(item) / sizeof(item[0]))
  17590. #include <stdio.h>
  17591. int main(void)
  17592. {
  17593.    static int item[ ] = { 12, 55, 62, 85, 102 };
  17594.    int index = 0;
  17595.    while (index < MAX_INDEX)
  17596.    {
  17597.       item[index] *= 3;
  17598.       printf("item[%d] = %d\n", index, item[index]);
  17599.       ++index;
  17600.    }
  17601. }
  17602.  
  17603.  
  17604. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17605.  
  17606. /*********************************
  17607. *
  17608. The following program contains two macro definitions and a macro invocation 
  17609. that references both of the defined macros: 
  17610.  
  17611.                                  *
  17612. *********************************/
  17613.  
  17614. #define SQR(s) { ((s) * (s)) }
  17615. #define PRNT(a,b) { printf("value 1 = %d\n", a); printf("value 2 = %d\n", b); }
  17616. int main(void)
  17617. {
  17618.   int x = 2;
  17619.   int y = 3;
  17620.   PRNT(SQR(x),y);
  17621. }
  17622.  
  17623. /*********************************
  17624. *
  17625. After being interpreted by the preprocessor, the preceding program is replaced 
  17626. by code equivalent to the following: 
  17627.  
  17628.                                  *
  17629. *********************************/
  17630.  
  17631. int main(void)
  17632. {
  17633.   int x = 2;
  17634.   int y = 3;
  17635.   {
  17636.      printf("value 1 = %d\n", ( (x) * (x) ) );
  17637.      printf("value 2 = %d\n", y);
  17638.   }
  17639. }
  17640.  
  17641. /*********************************
  17642. *
  17643. Execution of this program produces the following output: 
  17644.  
  17645. value 1 = 4
  17646. value 2 = 3
  17647.  
  17648.                                  *
  17649. *********************************/
  17650.  
  17651.  
  17652. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17653.  
  17654. /*********************************
  17655. *
  17656. The following directives define BUFFER and SQR: 
  17657.  
  17658.                                  *
  17659. *********************************/
  17660.  
  17661. #define BUFFER 512
  17662. #define SQR(x) ((x) * (x))
  17663.  
  17664. /*********************************
  17665. *
  17666. The following directives nullify the preceding definitions: 
  17667.  
  17668.                                  *
  17669. *********************************/
  17670.  
  17671. #undef BUFFER
  17672. #undef SQR
  17673.  
  17674. /*********************************
  17675. *
  17676. Any occurrences of the identifiers BUFFER and SQR that follow these #undef 
  17677. directives are not replaced with any replacement tokens. Once the definition of 
  17678. a macro has been removed by an #undef directive, the identifier can be used in 
  17679. a new #define directive. 
  17680.  
  17681.                                  *
  17682. *********************************/
  17683.  
  17684.  
  17685. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17686.  
  17687. /*********************************
  17688. *
  17689. The following printf statements will display the values of the predefined 
  17690. macros (__LINE__, __FILE__, __TIME__, and __DATE__) and will print a message 
  17691. indicating the program's conformance to ANSI standards based on __STDC__: 
  17692.  
  17693.                                  *
  17694. *********************************/
  17695.  
  17696. #pragma langlvl(ANSI)
  17697. #include <stdio.h>
  17698. #ifdef __STDC__
  17699. #   define CONFORM    "conforms"
  17700. #else
  17701. #   define CONFORM    "does not conform"
  17702. #endif
  17703. int main(void)
  17704. {
  17705.   printf("Line %d of file %s has been executed\n", __LINE__, __FILE__);
  17706.   printf("This file was compiled at %s on %s\n", __TIME__, __DATE__);
  17707.   printf("This program %s to ANSI standards\n", CONFORM);
  17708. }
  17709.  
  17710.  
  17711. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17712.  
  17713. The following examples demonstrate the rules given in the preceding paragraph. 
  17714.  
  17715.    #define STR(x)        #x
  17716.    #define XSTR(x)       STR(x)
  17717.    #define ONE           1
  17718.  
  17719. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17720. Γöé INVOCATION           Γöé RESULT OF MACRO EXPANSION Γöé
  17721. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17722. Γöé "STR(\n "\n" '\n')"  Γöé ""\n \"\\n\" '\\n'""      Γöé
  17723. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17724. Γöé "STR(ONE)"           Γöé "ONE"                     Γöé
  17725. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17726. Γöé "XSTR(ONE)"          Γöé "1"                       Γöé
  17727. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17728. Γöé "XSTR("hello")"      Γöé "\"hello\""               Γöé
  17729. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17730.  
  17731.  
  17732. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17733.  
  17734. The following examples demonstrate the rules given in the preceding paragraph. 
  17735.  
  17736. #define ArgArg(x, y)          x##y
  17737. #define ArgText(x)            x##TEXT
  17738. #define TextArg(x)            TEXT##x
  17739. #define TextText              TEXT##text
  17740. #define Jitter                1
  17741. #define bug                   2
  17742. #define Jitterbug             3
  17743.  
  17744. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17745. Γöé INVOCATION           Γöé RESULT OF MACRO EXPANSION Γöé
  17746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17747. Γöé "ArgArg(var, 1)"     Γöé ""var1""                  Γöé
  17748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17749. Γöé "ArgText(var)"       Γöé ""varTEXT""               Γöé
  17750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17751. Γöé "TextArg(var)"       Γöé ""TEXTvar""               Γöé
  17752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17753. Γöé "TextText"           Γöé ""TEXTtext""              Γöé
  17754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17755. Γöé "ArgArg(Jitter,      Γöé "3"                       Γöé
  17756. Γöé bug)"                Γöé                           Γöé
  17757. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17758.  
  17759.  
  17760. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17761.  
  17762. /*********************************
  17763. *
  17764. The following directive generates the error message, Error in TESTPGM1 - This 
  17765. section should not be compiled: 
  17766.  
  17767.                                  *
  17768. *********************************/
  17769.  
  17770. #error Error in TESTPGM1 - This section should not be compiled
  17771.  
  17772.  
  17773. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17774.  
  17775. /************************************************************************
  17776. *
  17777.  
  17778. If you have the following directives, the first #else will be matched with the 
  17779. #if directive. 
  17780.  
  17781.                                                                         *
  17782. ************************************************************************/
  17783.  
  17784. #ifdef MACNAME
  17785.             /*  tokens added if MACNAME is defined */
  17786. #   if TEST <=10
  17787.                  /* tokens added if MACNAME is defined and TEST <= 10 */
  17788. #   else
  17789.                  /* tokens added if MACNAME is defined and TEST >  10 */
  17790. #   endif
  17791. #else
  17792.             /*  tokens added if MACNAME is not defined */
  17793. #endif
  17794.  
  17795.  
  17796. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17797.  
  17798. /************************************************************************
  17799. *
  17800.  
  17801. The following example uses the #if and #elif directives to assign values to an 
  17802. array. 
  17803.  
  17804.                                                                         *
  17805. ************************************************************************/
  17806. #include <stdio.h>
  17807. int main(void)
  17808. {
  17809.    int i;
  17810.    char *arrayname = "realarray";
  17811.    int realarray[] = { 1, 2, 3 };
  17812.    int array1[] = { 4, 5, 6 };
  17813.    int array2[] = { 7, 8, 9 };
  17814. #if ( (defined(LEVEL1)) && (TEST > 1) )
  17815.    for (i = 0; i < 3; i++)
  17816.       realarray[i] = array1[i];
  17817.       arrayname = "array1";
  17818. #elif (defined(LEVEL2))
  17819.    for (i = 0; i < 3; i++)
  17820.       realarray[i] = array2[i];
  17821.       arrayname = "array2";
  17822. #endif
  17823.    printf("realarray[] now has the contents of %s[]\n", arrayname);
  17824.    /* Assuming only LEVEL2 is defined, the expected output is:
  17825.       realarray[] now has the contents of array2[] */
  17826. }
  17827.  
  17828.  
  17829. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17830.  
  17831. /************************************************************************
  17832. *
  17833. The following example defines MAX_LEN to be 75 if EXTENDED is defined for the 
  17834. preprocessor.  Otherwise, MAX_LEN is defined to be 50. 
  17835.  
  17836.                                                                         *
  17837. ************************************************************************/
  17838.  
  17839. #ifdef EXTENDED
  17840. #   define MAX_LEN 75
  17841. #else
  17842. #   define MAX_LEN 50
  17843. #endif
  17844.  
  17845.  
  17846. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17847.  
  17848. /************************************************************************
  17849. *
  17850. The following example defines MAX_LEN to be 50 if EXTENDED is not defined for 
  17851. the preprocessor.  Otherwise, MAX_LEN is defined to be 75. 
  17852.  
  17853.                                                                         *
  17854. ************************************************************************/
  17855.  
  17856. #ifndef EXTENDED
  17857. #   define MAX_LEN 50
  17858. #else
  17859. #   define MAX_LEN 75
  17860. #endif
  17861.  
  17862.  
  17863. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17864.  
  17865. /************************************************************************
  17866. *
  17867.  
  17868. The following example shows preprocessor conditional compilation directives 
  17869. ended by the #endif directive. 
  17870.  
  17871.                                                                         *
  17872. ************************************************************************/
  17873. #if defined(LEVEL1)
  17874. #   define SIZEOF_INT 16
  17875. #   ifdef PHASE2
  17876. #     define MAX_PHASE 2
  17877. #   else
  17878. #     define MAX_PHASE 8
  17879. #   endif
  17880. #elif defined(LEVEL2)
  17881. #   define SIZEOF_INT 32
  17882. #   define MAX_PHASE 16
  17883. #endif
  17884.  
  17885.  
  17886. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17887.  
  17888. /************************************************************************
  17889. *
  17890. The following example shows how you can nest preprocessor conditional 
  17891. compilation directives: 
  17892.  
  17893.                                                                         *
  17894. ************************************************************************/
  17895.  
  17896. #if defined(TARGET1)
  17897. #   define SIZEOF_INT 16
  17898. #   ifdef PHASE2
  17899. #      define MAX_PHASE 2
  17900. #   else
  17901. #      define MAX_PHASE 8
  17902. #   endif
  17903. #elif defined(TARGET2)
  17904. #   define SIZEOF_INT 32
  17905. #   define MAX_PHASE 16
  17906. #else
  17907. #   define SIZEOF_INT 32
  17908. #   define MAX_PHASE 32
  17909. #endif
  17910.  
  17911. /************************************************************************
  17912. *
  17913. The following program contains preprocessor conditional compilation directives: 
  17914.  
  17915.                                                                         *
  17916. ************************************************************************/
  17917.  
  17918. int main(void)
  17919. {
  17920.    static int array[ ] = { 1, 2, 3, 4, 5 };
  17921.    int i;
  17922.    for (i = 0; i <= 4; i++)
  17923.    {
  17924.       array[i] *= 2;
  17925. #if TEST >= 1
  17926.    printf("i = %d\n", i);
  17927.    printf("array[i] = %d\n", array[i]);
  17928. #endif
  17929.    }
  17930. }
  17931.  
  17932.  
  17933. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17934.  
  17935. /***********************************************************
  17936. *
  17937. You can use #line control directives to make the compiler provide more 
  17938. meaningful error messages.  The following program uses #line control directives 
  17939. to give each function an easily recognizable line number: 
  17940.  
  17941.                                                            *
  17942. ***********************************************************/
  17943.  
  17944. #include <stdio.h>
  17945. #define LINE200 200
  17946. int main(void)
  17947. {
  17948.    func_1();
  17949.    func_2();
  17950. }
  17951. #line 100
  17952. func_1()
  17953. {
  17954.    printf("Func_1 - the current line number is %d\n",_ _LINE_ _);
  17955. }
  17956. #line LINE200
  17957. func_2()
  17958. {
  17959.    printf("Func_2 - the current line number is %d\n",_ _LINE_ _);
  17960. }
  17961.  
  17962. /********************************************************
  17963. *
  17964. The preceding program produces the following output: 
  17965.  
  17966. Func_1 - the current line number is 102
  17967. Func_2 - the current line number is 202
  17968.  
  17969.                                                         *
  17970. ********************************************************/
  17971.  
  17972.  
  17973. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17974.  
  17975. /******************************************************
  17976. *
  17977. In the following example, if MINVAL is a defined macro name, no action is 
  17978. performed.  If MINVAL is not a defined identifier, it is defined as the value 
  17979. 1. 
  17980.  
  17981.                                                       *
  17982. ******************************************************/
  17983.  
  17984. #ifdef MINVAL
  17985.   #
  17986. #else
  17987.   #define MINVAL 1
  17988. #endif
  17989.  
  17990.  
  17991. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  17992.  
  17993. #pragma langlvl(SAA)
  17994. #pragma title("SAA pragma example")
  17995. #pragma pagesize(55)
  17996. #pragma map(ABC, "A$$BC@")
  17997.  
  17998.  
  17999. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18000.  
  18001. Compiler options specified on the command line override any previously 
  18002. specified in the ICC environment variable. 
  18003.  
  18004. For example, to compile a source file with the no optimization option, enter: 
  18005.  
  18006.    icc /O- myprog.c
  18007.  
  18008. When compiling programs with multiple source files, an option is in effect for 
  18009. all the source files that follow it. The executable module will have the same 
  18010. file name as the first source file but with the extension .EXE. 
  18011.  
  18012.  
  18013. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18014.  
  18015. Frequently used command-line options can be stored in the ICC environment 
  18016. variable. This method is useful if you find yourself repeating the same 
  18017. command-line options every time you compile. You can also specify source file 
  18018. names in ICC. 
  18019.  
  18020. The ICC environment variable can be set either from the command line, in a 
  18021. command (.CMD) file, or in the CONFIG.SYS file. If it is set on the command 
  18022. line or by running a command file, the options will only be in effect for the 
  18023. current session. If it is set in the CONFIG.SYS file, the options will be in 
  18024. effect every time you use icc unless you override them using a .CMD file or by 
  18025. specifying options on the command line. 
  18026.  
  18027. For example, to specify that a source listing be generated for all compilations 
  18028. and that the macro DEBUG be defined to be 1, use the following command at the 
  18029. OS/2 prompt (or in your CONFIG.SYS file if you want these options every time 
  18030. you use the compiler): 
  18031.  
  18032.    SET ICC=/Ls+  /DDEBUG::1
  18033. (The double colon must be used because the "=" sign is not allowed in OS/2 
  18034. environment variables.) 
  18035.  
  18036. Now, type icc prog1.C to compile prog1.C.  The macro DEBUG will be defined as 
  18037. 1, and a source listing will be produced. 
  18038.  
  18039.  
  18040. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18041.  
  18042. If you have installed the IBM WorkFrame/2 product, you can set compiler options 
  18043. using the options dialogs.  You can use the dialogs when you create or modify a 
  18044. project and from the Options pull-down menu. 
  18045.  
  18046. Options you select while creating or changing a project are saved with that 
  18047. project.  Options set from the pull-down menu are in effect for only that 
  18048. compilation. 
  18049.  
  18050. For more information on setting options and using the WorkFrame/2 product, 
  18051. refer to the WorkFrame/2 documentation. 
  18052.  
  18053.  
  18054. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18055.  
  18056. In the following example, the file module1.c will be compiled with the option 
  18057. /Fa- because this option follows /Fa+. 
  18058.  
  18059.    icc /Fa+ /Fa- module1.c
  18060.  
  18061.  
  18062. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18063.  
  18064. For example, the command 
  18065.  
  18066.    icc /Ia: /Ib:\cde /Ic:\fgh prog.c
  18067. causes the following search path to be built: 
  18068.  
  18069.    a:;b:\cde;c:\fgh
  18070.  
  18071.  
  18072. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18073.  
  18074.  o Perform syntax check only: 
  18075.  
  18076.          icc /Fc+ myprog.c
  18077.  
  18078.  o Name the object file: 
  18079.  
  18080.          icc /Fobarney.obj fred.c
  18081.  
  18082.    This names the object file barney.obj instead of the default, fred.obj. 
  18083.  
  18084.  o Name the executable file: 
  18085.  
  18086.          icc /Febarney.exe fred.c
  18087.  
  18088.    This names the object file barney.exe instead of the default, fred.exe. 
  18089.  
  18090.  o Name the listing file: 
  18091.  
  18092.          icc /Floutput.my /L fred.c
  18093.  
  18094.    This example creates a listing output called output.my instead of fred.lst. 
  18095.  
  18096.  o Name the linker map file: 
  18097.  
  18098.          icc /Fmoutput.map fred.c
  18099.  
  18100.    This example creates a linker map file called output.map instead of 
  18101.    fred.map. 
  18102.  
  18103.  o Name the assembler listing file: 
  18104.  
  18105.          icc /Fabarney fred.c
  18106.  
  18107.    The above example names the output barney.asm. instead of fred.asm. 
  18108.  
  18109.  
  18110. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18111.  
  18112.  o Produce all diagnostic messages: 
  18113.  
  18114.          icc /Wall blue.c
  18115.          icc /Wall+ blue.c
  18116.  
  18117.  o Produce diagnostic messages about consistency of declarations, unreferenced 
  18118.    parameters, missing function prototypes, and uninitialized variables: 
  18119.  
  18120.          icc /Wdcl+par+pro+uni blue.c
  18121.          icc /Wdclparprouni blue.c
  18122.  
  18123.  o Produce all diagnostic messages except: 
  18124.  
  18125.     - Warnings about assignments that can cause a loss of precision 
  18126.     - Preprocessor trace messages 
  18127.     - External variable warnings by turning on all options, and then turning 
  18128.    off the ones you do not want: 
  18129.  
  18130.          icc /Wall+trd-ppt-ext- blue.c
  18131.  
  18132.  o Produce only basic diagnostics, with all other suboptions turned off: 
  18133.  
  18134.          icc /Wgen+ blue.c
  18135.  
  18136.  o Produce only basic diagnostics and suppress all messages with a severity of 
  18137.    "informational": 
  18138.  
  18139.          icc /Wgen2 blue.c
  18140.  
  18141.  
  18142. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  18143.  
  18144.  o Passing a parameter to the linker: 
  18145.  
  18146.          icc /B"/NOI" fred.c
  18147.  
  18148.    The /NOI option tells the linker to preserve the case of external names in 
  18149.    fred.obj. 
  18150.  
  18151.  o Imbedding a version string or copyright: 
  18152.  
  18153.          icc /V"Version 1.0" fred.c
  18154.  
  18155.    This imbeds the version notice in fred.obj. 
  18156.