4.1.1 Implementation-defined behavior of C90

(1)

How to identify diagnostic messages (5.1.1.3).

 

Refer to "10. MESSAGE".

 

(2)

The semantics of the arguments to main (5.1.2.2.1).

 

Not defined because of a freestanding environment.

 

(3)

What constitutes an interactive device (5.1.2.3).

 

Not defined for the configuration of an interactive device.

 

(4)

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

 

The entire identifier is handled as meaningful. The length of an identifier is unlimited.

 

(5)

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

 

The entire identifier is handled as meaningful. The length of an identifier is unlimited.

 

(6)

Whether case distinctions are significant in an identifier with external linkage (6.1.2).

 

Uppercase and lowercase characters are distinguished in identifiers.

 

(7)

The members of the source and execution character sets, except as explicitly specified in the Standard (5.2.1).

 

The values of elements of the source code and execution character set are ASCII codes, EUC, SJIS, UTF-8, big5, and gb2312.

Japanese and Chinese characters are supported in comments and character strings.

 

(8)

The shift states used for the encoding of multibyte characters (5.2.1.2).

 

No shift state is supported.

 

(9)

The number of bits in a character in the execution character set (5.2.4.2.1).

 

8 bits.

 

(10)

The mapping of members of the source character set (in character constants and string literals) to members of the execution character set (6.1.3.4).

 

Associated with the element having the same value.

 

(11)

The value of an integer character constant that contains a character or escape sequence not represented in the basic execution character set or the extended character set for a wide character constant (6.1.3.4).

 

Specific non-graphical characters can be expressed by means of extended notation, consisting of a backslash (\) followed by a lower-case letter. The following are available: \a, \b, \f, \n, \r, \t, and \v. There is no other extended notation; other letters following a backslash (\) become that letter.

Expanded Notation

Value (ASCII)

\a

0x07

\b

0x08

\f

0x0C

\n

0x0A

\r

0x0D

\t

0x09

\v

0x0B

 

(12)

The value of an integer character constant that contains more than one character or a wide character constant that contains more than one multibyte character (6.1.3.4).

 

A integer character constant consisting of up to four characters has a four-byte value with the lower byte being the last character and the upper byte being the first character. A character constant having five or more characters results in an error. A character which is not represented by basic execution environment character set is regarded as a integer character constant having that value. In an invalid escape sequence, the backslash is ignored and the next character is regarded as a integer character constant.

 

(13)

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

 

Locale is not supported.

 

(14)

Whether a "plain" char has the same range of values as signed char or unsigned char (6.2.1.1).

 

The char type has the same range of values, the same representation format and the same behavior as the signed char type.

 

(15)

The representations and sets of values of the various types of integers (6.1.2.5).

 

Refer to "4.1.3 Internal representation and value area of data".

 

(16)

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 (6.2.1.2).

 

Bit string masked by the width of the conversion target type (with the upper bits truncated).

 

(17)

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

 

Arithmetic shift is performed for a shift operator. For other operators, a signed integer is calculated as an unsigned value (as a bit image).

 

(18)

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

 

The result of the "%" operator takes the sign of the first operand in the expression.

 

(19)

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

 

Arithmetic shift is performed.

 

(20)

The representations and sets of values of the various types of floating-point numbers (6.1.2.5).

 

Refer to "4.1.3 Internal representation and value area of data".

 

(21)

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

 

As per the option (-Xround) specification and microcomputer settings.

 

(22)

The direction of truncation or rounding when a floating-point number is converted to a narrower floating-point number (6.2.1.4).

 

As per the option (-Xround) specification and microcomputer settings.

 

(23)

The type of integer required to hold the maximum size of an array --- that is, the type of the sizeof operator, size_t (6.3.3.4, 7.1.1).

 

unsigned long type.

 

(24)

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

 

Integer-to-pointer conversion result

If the size of an integer type is larger than that of a pointer type, the lower-byte value of the integer type is used. If the size of the integer type is equal to that of the pointer type, the bit pattern of the integer type is retained as is. If the size of the integer type is smaller than that of the pointer type, the resultant value of an extension to an int type is retained as is.

 

Pointer-to-integer conversion result

If the size of a pointer type is larger than that of an integer type, the lower-byte value of the pointer type is used. If the size of the pointer type is equal to that of the integer type, the bit pattern of the pointer type is retained as is. If the size of a pointer type is smaller than that of an integer type, the zero-extended value of the pointer type is used.

 

(25)

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

 

signed int type.

 

(26)

The extent to which objects can actually be placed in registers by use of the register storage-class specifier (6.5.1).

 

Optimize for the fastest possible access, regardless of whether there is a register specifier.

 

(27)

A member of a union object is accessed using a member of a different type (6.3.2.3).

 

If the value of a union member is stored in a different member, the value will be stored in accordance with the alignment condition. As a result, when a union member is accessed using a member of a different type, the internal representation of the data will be of the type of the access.

 

(28)

The padding and alignment of members of structures (6.5.2.1).

 

Refer to "4.1.3 Internal representation and value area of data".

 

(29)

Whether a "plain" int bit-field is treated as a signed int bit-field or as an unsigned int bit-field (6.5.2.1).

 

Treated as a signed int type. The most significant bit of the bit field is treated as a sign bit.

 

(30)

The order of allocation of bit-fields within an int (6.5.2.1).

 

Allocated from the lower order. Selectable by option -Xbit_order or #pragma bit_order.

 

(31)

Whether a bit-field can straddle a storage-unit boundary (6.5.2.1).

 

A bit-field cannot straddle a strage-unit boundary, but it is allocated to the next area.

 

(32)

The integer type chosen to represent the values of an enumeration type (6.5.2.2).

 

signed int type. However, the minimum type that an enumerated type fits in if option -Xenum_type=auto is specified.

 

(33)

What constitutes an access to an object that has volatile-qualified type (6.5.3).

 

Although the access width, and order and number of accesses are as described in the C source, this does not apply to those accesses to a type for which the microcomputer does not have a corresponding instruction.

 

(34)

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

 

128.

 

(35)

The maximum number of case values in a switch statement (6.6.4.2).

 

2147483647.

 

(36)

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. Whether such a character constant may have a negative value (6.8.1).

 

A value for the character constant specified in conditional inclusion is equal to the character constant value that appears in other expressions.

A character constant can be a negative value.

 

(37)

The method for locating includable source files (6.8.2).

 

Folders are searched in this order and a file having the same name in the folder is identified as the header.

1. Folder specified by the path (if it is full-path)

2. Folder specified by option -I

3. Standard include file folder

 

(38)

The support for quoted names for includable source files (6.8.2).

 

Searced in this order:

1. Folder specified by the path (if it is full-path)

2. Folder where source file exists

3. Folder specified by -I

4. Standard include file folder

 

(39)

The mapping of source file character sequences (6.8.2).

 

A character string described in the #include is interpreted as the character code specified as the source character set and is associated with a header name or an external source file name.

 

(40)

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

 

Refer to "4.2.6 Using extended language specifications".

 

(41)

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

 

A date and time are always obtained.

 

(42)

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

 

(void *)0.

 

(43)

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

 

The displayed diagnostic message is as follows:

Assertion failed: expression, file file name, line line number

 

The termination behavior depends on how the abort function is implemented.

 

(44)

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

 

unsigned char type (0 to 255) and EOF (-1).

 

(45)

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

 

Refer to "7.4.10 Mathematical functions".

 

(46)

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

 

ERANGE is set in errno in case of an underflow.

 

(47)

Whether a domain error occurs or zero is returned when the fmod function has a second argument of zero (7.5.6.4).

 

A domain error is generated. For details, see the description about the fmod functions.

 

(48)

The set of signals for the signal function (7.7.1.1).

 

The signal handling functions are not supported.

 

(49)

The semantics for each signal recognized by the signal function (7.7.1.1).

 

The signal handling functions are not supported.

 

(50)

The default handling and the handling at program startup for each signal recognized by the signal function (7.7.1.1).

 

The signal handling functions are not supported.

 

(51)

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 (7.7.1.1).

 

The signal handling functions are not supported.

 

(52)

Whether the default handling is reset if the SIGILL signal is received by a handler specified to the signal function (7.7.1.1).

 

The signal handling functions are not supported.

 

(53)

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

 

The last line does not need to end in a newline character.

 

(54)

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

 

Space characters appear when data is read.

 

(55)

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

 

0.

 

(56)

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

 

The file handling functions are not supported.

 

(57)

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

 

The file handling functions are not supported.

 

(58)

The characteristics of file buffering (7.9.3).

 

The file handling functions are not supported.

 

(59)

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

 

The file handling functions are not supported.

 

(60)

The rules for composing valid file names (7.9.3).

 

The file handling functions are not supported.

 

(61)

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

 

The file handling functions are not supported.

 

(62)

The effect of the remove function on an open file (7.9.4.1).

 

The file handling functions are not supported.

 

(63)

The effect if a file with the new name exists prior to a call to the rename function (7.9.4.2).

 

The file handling functions are not supported.

 

(64)

The output for %p conversion in the fprintf function (7.9.6.1).

 

Decimal notation.

 

(65)

The input for %p conversion in the fscanf function (7.9.6.2).

 

Decimal integer.

 

(66)

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

 

Refer to "sscanf" in "7.4.7 Standard I/O functions".

 

(67)

The value to which the macro errno is set by the fgetpos or ftell function on failure (7.9.9.1, 7.9.9.4).

 

The file handling functions are not supported.

 

(68)

The messages generated by the perror function (7.9.10.4).

 

Refer to the description of perror in "7.4.7 Standard I/O functions".

 

(69)

The behavior of the calloc, malloc, or realloc function if the size requested is zero (7.10.3).

 

The calloc or malloc function returns the secured pointer, assuming the request size is 8. The realloc function returns NULL.

 

(70)

The behavior of the abort function with regard to open and temporary files (7.10.4.1).

 

The file handling functions are not supported.

 

(71)

The status returned by the exit function if the value of the argument is other than zero, EXIT_SUCCESS, or EXIT_FAILURE (7.10.4.3).

 

Not defined because of a freestanding environment.

 

(72)

The set of environment names and the method for altering the environment list used by the getenv function (7.10.4.4).

 

The getenv function is not supported.

 

(73)

The contents and mode of execution of the string by the system function (7.10.4.5).

 

The system function is not supported.

 

(74)

The contents of the error message strings returned by the strerror function (7.11.6.2).

 

Refer to the description of the strerror function in "7.4.3 Character string functions".

 

(75)

The local time zone and Daylight Saving Time (7.12.1).

 

time.h is not supported.

 

(76)

The era for the clock function (7.12.2.1).

 

time.h is not supported.

 

 

The table below shows the translation limits of CC-RH.

The upper limit depends on the memory situation of the host environment for the item "No limit".

item

limit

Number of nesting levels of conditional inclusion

No limit

Number of pointers, arrays, and function declarators (in any combinations) qualifying an arithmetic, structure, union, or incomplete type in a declaration

128

Number of nesting levels of parenthesized declarators within a full declarator

No limit

Number of nesting levels of parenthesized expressions within a full expression

No limit

Number of significant initial characters in an internal identifier or a macro name

No limit

Number of significant initial characters in an external identifier

No limit

Number of external identifiers in one translation unit

No limit

Number of identifiers with block scope declared in one block

No limit

Number of macro identifiers simultaneously defined in one preprocessing translation unit

No limit

Number of parameters in one function definition

No limit

Number of arguments in one function call

No limit

Number of parameters in one macro definition

No limit

Number of arguments in one macro invocation

No limit

Number of characters in a logical source line

No limit

Number of characters in a character string literal or wide string literal (after concatenation)

No limit

Number of bytes in an object (in a hosted environment only)

2147483647

Number of nesting levels for #included files

No limit

Number of case labels for a switch statement (excluding those for any nested switch statements)

2147483647

Number of members in a single structure or union

No limit

Number of enumeration constants in a single enumeration

No limit

Number of levels of nested structure or union definitions in a single struct-declaration-list

No limit