4.2.3 C99 language specifications supported in conjunction with C90

CC-RH supports some of the C99-standard specifications even when the C90 standard is selected (with -lang=c).

(1)

Comment by //

Text from two slashes (//) until a newline character is a comment. If there is a backslash character (\) immediately before the newline, then the next line is treated as a continuation of the current comment.

(2)

Concatenating wide character strings

The result of concatenating a character string constant with a wide character string constant is a wide character string constant.

(3)

_Bool type

_Bool type is supported.

Note

When the -lang=c99 option is specified, data is treated as the strict _Bool type. When the -lang=c option is specified, data is treated as the signed char type in some expressions.

(4)

long long int type

long long int type is supported. long long int type is 8-byte of integer type.

Appending "LL" to a constant value is also supported. It is also possible to specify this for bit field types.

(5)

Integer promotion

In accordance with support for types _Bool and long long, integer promotion is also in accordance with the C99 specification.

(6)

Existing argument expansion

In accordance with support for types _Bool and long long, existing argument expansion is also in accordance with the C99 specification..

-

Functions are called after expanding type _Bool_ to type int (4 bytes).

-

Functions are called with type (unsigned) long long remaining as an 8 bytes value.

(7)

Comma permission behind the last enumeration child of a enum definition

When defining an enum type, it is permissible for the last enumerator in the enumeration to be followed by a comma (,).

enum EE {a, b, c,};

(8)

Inline keyword (inline function)

Inline keyword is supported.

This can also be specified using a pragma directive, via the following format.

#pragma inline ( function-name [, function-name]... )Note

Note

The outer parentheses can be omitted.

 

For the details of expansion specification, see "4.2.6.3 Inline expansion".

When -lang=c99 option is specified, inline keyword is treated as C99 keyword. Otherwise, inline keyword has same meaning as #pragma inline directive.

(9)

Types of integer constants

The type of an integer constant changes due to addition of the long long type. For details, see "(c) Integer constants" in "4.1.3 Internal representation and value area of data".