4.1.4 C99言語機能

この項では,CC-RHがサポートするC99言語機能について説明します。

(1)

//によるコメント

//(スラッシュ2つ)より始まり改行までをコメントとします。改行の直前の文字が¥の場合,次の行も続いた1つのコメントとします。

(2)

ワイド文字列の結合

文字列定数とワイド文字列定数を結合した場合,ワイド文字列定数となります。

(3)

_Bool型

_Bool型をサポートします。

-lang=c99オプション指定時は,厳密な_Bool型として扱います。-lang=cオプション指定時は,一部の式でsigned char型として扱います。

(4)

long long int型

long long int型をサポートします。long long int型は8バイトの整数型です。

定数値の末尾LLもサポートします。ビット・フィールドの型にも指定可能です。

(5)

整数拡張

_Bool型とlong long型のサポートに伴って,整数拡張もC99 の仕様に従います。

(6)

既定の実引数拡張

_Bool 型とlong long 型のサポートに伴って,既定の実引数拡張もC99 の仕様に従います。

-

_Bool型はint型(4 バイト)に拡張して関数を呼び出します。

-

(unsigned) long long型は,8 バイトのまま関数を呼び出します。

(7)

enum定義の最後の列挙子の後のカンマ許可

enum型を定義する際,列挙子の列挙の最後の” , (カンマ)”を許可します。

enum EE {a, b, c,};

(8)

inlineキーワード(inline関数)

inlineキーワードをサポートします。

また,以下の書式によるpragma指令でも指定できます。

#pragma inline ( 関数名 [, 関数名]... )

外側のかっこは省略可能です。

 

なお,インライン展開についての詳細は「4.2.4.3 インライン展開」を参照してください。

-lang=c99オプション指定時は,C99のinlineキーワードとして扱います。それ以外の場合は,#pragma inline指令と同じ意味です。

(9)

整数定数の型

long long型の追加に伴って,整数定数の型は次のとおりになります。

整数定数の型は,次の並びのうちでその値を表現できる最初の型となります。

表 4.7

整数定数の型(long long型が有効な場合(-strict_std指定なし))

接尾語

10進定数

8進定数,または16進数

なし

int

long int

unsigned long int

long long int

unsigned long long int

int

unsigned int

long int

unsigned long int

long long int

unsigned long long int

u,またはU

unsigned int

unsigned long int

unsigned long long int

unsigned int

unsigned long int

unsigned long long int

l,またはL

long int

unsigned long int

long long int

unsigned long long int

long int

unsigned long int

long long int

unsigned long long int

u,またはU,およびl ,またはL の両方

unsigned long int

unsigned long long int

unsigned long int

unsigned long long int

ll,またはLL

long long int

unsigned long long int

long long int

unsigned long long int

u,またはU,およびll ,またはLLの両方

unsigned long long int

unsigned long long int

C99の仕様と異なります。

表 4.8

整数定数の型(long long型が無効な場合(-strict_std指定あり))

接尾語

10進定数

8進定数,または16進数

なし

int

long int

unsigned long int

int

unsigned int

long int

unsigned long int

u,またはU

unsigned int

unsigned long int

unsigned int

unsigned long int

l,またはL

long int

unsigned long int

long int

unsigned long int

u,またはU,およびl ,またはL の両方

unsigned long int

unsigned long int