JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
search filter icon
search icon

Document Information


1.  Introduction to the C Compiler

2.  C-Compiler Implementation-Specific Information

3.  Parallelizing C Code

4.  lint Source Code Checker

5.  Type-Based Alias Analysis

6.  Transitioning to ISO C

7.  Converting Applications for a 64-Bit Environment

8.  cscope: Interactively Examining a C Program

A.  Compiler Options Grouped by Functionality

B.  C Compiler Options Reference

C.  Implementation-Defined ISO/IEC C99 Behavior

D.  Features of C99

E.  Implementation-Defined ISO/IEC C90 Behavior

E.1 Implementation Compared to the ISO Standard

E.1.1 Translation (G.3.1)

E.1.1.1 ( Identification of diagnostics:

E.1.2 Environment (G.3.2)

E.1.2.1 ( Semantics of arguments to main:

E.1.2.2 ( What constitutes an interactive device:

E.1.3 Identifiers (G.3.3)

E.1.3.1 (6.1.2) The number of significant initial characters (beyond 31) in an identifier without external linkage:

(6.1.2) The number of significant initial characters (beyond 6) in an identifier with external linkage:

E.1.4 Characters (G.3.4)


E.1.4.2 ( The shift states used for the encoding of multibyte characters:

E.1.4.3 ( The number of bits in a character in the execution character set:




E.1.4.7 ( The current locale used to convert multibyte characters into corresponding wide characters (codes) for a wide character constant:

E.1.4.8 ( Whether a plain char has the same range of values as signed char or unsigned char:

E.1.5 Integers (G.3.5)

E.1.5.1 ( The representations and sets of values of the various types of integers:

E.1.5.2 ( The result of converting an integer to a shorter signed integer, or the result of converting an unsigned integer to a signed integer of equal length, if the value cannot be represented:

E.1.5.3 (6.3) The results of bitwise operations on signed integers:

E.1.5.4 (6.3.5) The sign of the remainder on integer division:

E.1.5.5 (6.3.7) The result of a right shift of a negative-valued signed integral type:

E.1.6 Floating-Point (G.3.6)

E.1.6.1 ( The representations and sets of values of the various types of floating-point numbers:

E.1.6.2 ( The direction of truncation when an integral number is converted to a floating-point number that cannot exactly represent the original value:

E.1.6.3 ( The direction of truncation or rounding when a floating- point number is converted to a narrower floating-point number:

E.1.7 Arrays and Pointers (G.3.7)

E.1.7.1 (, 7.1.1) The type of integer required to hold the maximum size of an array; that is, the type of the sizeof operator, size_t:

E.1.7.2 (6.3.4) The result of casting a pointer to an integer, or vice versa:

E.1.7.3 (6.3.6, 7.1.1) The type of integer required to hold the difference between two pointers to members of the same array, ptrdiff_t:

E.1.8 Registers (G.3.8)


E.1.9 Structures, Unions, Enumerations, and Bit-Fields (G.3.9)

E.1.9.1 ( A member of a union object is accessed using a member of a different type:

E.1.9.2 ( The padding and alignment of members of structures.

E.1.9.3 ( Whether a plain int bit-field is treated as a signed int bit-field or as an unsigned int bit-field:

E.1.9.4 ( The order of allocation of bit-fields within an int:

E.1.9.5 ( Whether a bit-field can straddle a storage-unit boundary:

E.1.9.6 ( The integer type chosen to represent the values of an enumeration type:

E.1.10 Qualifiers (G.3.10)

E.1.10.1 ( What constitutes an access to an object that has volatile-qualified type:

E.1.11 Declarators (G.3.11)

E.1.11.1 (6.5.4) The maximum number of declarators that may modify an arithmetic, structure, or union type:

E.1.12 Statements (G.3.12)

E.1.12.1 ( The maximum number of case values in a switch statement:

E.1.13 Preprocessing Directives (G.3.13)

E.1.13.1 (6.8.1) Whether the value of a single-character character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set:

E.1.13.2 (6.8.1) Whether such a character constant may have a negative value:

E.1.13.3 (6.8.2) The method for locating includable source files:

E.1.13.4 (6.8.2) The support of quoted names for includable source files:

E.1.13.5 (6.8.2) The mapping of source file character sequences:

E.1.13.6 (6.8.6) The behavior on each recognized #pragma directive:

E.1.13.7 (6.8.8) The definitions for __DATE__ and __TIME__ when, respectively, the date and time of translation are not available:

E.1.14 Library Functions (G.3.14)

E.1.14.1 (7.1.6) The null pointer constant to which the macro NULL expands:

E.1.14.2 (7.2) The diagnostic printed by and the termination behavior of the assert function:

E.1.14.3 (7.3.1) The sets of characters tested for by the isalnum, isalpha, iscntrl, islower, isprint, and isupper functions:

E.1.14.4 (7.5.1) The values returned by the mathematics functions on domain errors:

E.1.14.5 (7.5.1) Whether the mathematics functions set the integer expression errno to the value of the macro ERANGE on underflow range errors:

E.1.14.6 ( Whether a domain error occurs or zero is returned when the fmod function has a second argument of zero:

E.1.14.7 ( The set of signals for the signal function:

E.1.14.8 ( The default handling and the handling at program startup for each signal recognized by the signal function:

E.1.14.9 ( If the equivalent of signal(sig, SIG_DFL); is not executed prior to the call of a signal handler, the blocking of the signal that is performed:

E.1.14.10 ( Whether the default handling is reset if the SIGILL signal is received by a handler specified to the signal function:

E.1.14.11 (7.9.2) Whether the last line of a text stream requires a terminating new-line character:

E.1.14.12 (7.9.2) Whether space characters that are written out to a text stream immediately before a new-line character appear when read in:

E.1.14.13 (7.9.2) The number of null characters that may be appended to data written to a binary stream:

E.1.14.14 (7.9.3) Whether the file position indicator of an append mode stream is initially positioned at the beginning or end of the file:

E.1.14.15 (7.9.3) Whether a write on a text stream causes the associated file to be truncated beyond that point:

E.1.14.16 (7.9.3) The characteristics of file buffering:

E.1.14.17 (7.9.3) Whether a zero-length file actually exists:

E.1.14.18 (7.9.3) The rules for composing valid file names:

E.1.14.19 (7.9.3) Whether the same file can be open multiple times:

E.1.14.20 ( The effect of the remove function on an open file:

E.1.14.21 ( The effect if a file with the new name exists prior to a call to the rename function:

E.1.14.22 ( The output for %p conversion in the fprintf function:

E.1.14.23 ( The input for %p conversion in the fscanf function:

E.1.14.24 ( The interpretation of a- character that is neither the first nor the last character in the scan list for %[ conversion in the fscanf function:

E.1.15 Locale-Specific Behavior (G.4)

E.1.15.1 (7.12.1) The local time zone and Daylight Savings Time:

E.1.15.2 ( The era for the clock function

E.1.15.3 (5.2.1) The content of the execution character set, in addition to the required members:

E.1.15.4 (5.2.2) The direction of printing:

E.1.15.5 (7.1.1) The decimal-point character:

E.1.15.6 (7.3) The implementation-defined aspects of character testing and case mapping functions:

E.1.15.7 ( The collation sequence of the execution character set:

E.1.15.8 ( The formats for time and date:

F.  ISO C Data Representations

G.  Performance Tuning



Appendix E

Implementation-Defined ISO/IEC C90 Behavior

The ISO/IEC 9899:1990, Programming Languages- C standard specifies the form and establishes the interpretation of programs written in C. However, this standard leaves a number of issues as implementation-defined, that is, as varying from compiler to compiler. This chapter details these areas. They can be readily compared to the ISO/IEC 9899:1990 standard itself: