この項では,C90規格における処理系定義について説明します。
「4.1.3 データの内部表現と領域」を参照してください。
ANSI規格では,翻訳における構文規則間の優先順位を8つの翻訳段階(翻訳フェーズ)に規定しています。3段階目の“前処理字句と空白類文字の並びへの分割”で処理系定義となっている,“改行文字以外の空白類文字の空でない並び”は1つに置き換えられずそのまま保持されます。
何らかの構文規則違反,および制約違反を含む翻訳単位に対して,ソース・ファイル名,行番号(特定可能な場合のみ)を含むエラー・メッセージを出力します。なお,エラー・メッセージの書式は“ワーニング”,“致命的エラー”,“エラー”などに区別されます。出力形式については,「10.2 出力形式」を参照してください。
プログラム開始処理時に呼び出される関数の名前,型,および引数は特に規定しません。
したがって,ユーザ・オウン・コーディング,またはターゲット・システムに依存します。
したがって,ユーザ・オウン・コーディング,またはターゲット・システムに依存します。
ソース文字集合および実行文字集合の要素の値は,ASCIIコード,EUC,SJIS,UTF-8,big5,gb2312です。コメントと文字列における日本語/中国語記述をサポートしています。
翻訳に際して次の限界値があります。また,数量的な限界の他に動作するホスト・マシンのメモリに依存します。
「4.2.3 C90でサポートするC99言語仕様」の「(10) 標準ヘッダ」を参照してください。
ソース文字集合の要素ではない量をchar型に格納した場合,char型に型変換した値となります。
また,オプション-signed_char不使用時,単なるchar型はunsigned char型と同じ範囲の値を持ちます。オプション-signed_char使用時,単なるchar型はsigned char型と同じ範囲の値を持ちます。
無限の有効桁を持つとして計算した場合の結果と近い方の値へ丸めます。中間時は結果が偶数になる方向へ丸めます。
ソース・プログラムの文字集合と実行環境における文字集合は,基本的に両者ともASCIIコードで,同一の値をもつメンバと対応します。 |
\a,\b,\f,\n,\r,\t,\vについては,「(8) 文字表示の意味」で示されている値と同値になります。 |
入力ソース・ファイルの中の文字コードは,CC-RLのオプション-character_setで選択できます。
ヘッダ・ファイル名の2つの形式(< >," ")内の列を,ヘッダ・ファイル,または外部ソース・ファイル名に反映する方法は,「(35) ヘッダ・ファイル取り込み」で規定します。
コメント中に日本語/中国語が記述できます。文字コードは,「(15) 文字列」の場合と同じです。
signed,unsignedの付かない単なるchar 型を符号なしとして扱います。オプション-signed_char使用時は,符号付きとして扱います。
汎整数型の値がよりサイズの小さい符号付き整数に変換される場合,上位ビットを切り捨てて,ビット列イメージをコピーします。
また,符号なし整数が,対応する符号付き整数に変換される場合,内部表現は変化しません。
汎整数型の値が浮動小数点型に型変換される際,型変換される値が,表現しうる値の範囲内にはあるが正確に表現することができない場合,その結果は,無限の有効桁を持つとして計算した場合の結果と近い方の値へ丸められます。中間時は結果が偶数になる方向へ丸られます。
double型をfloat型に変換する場合,またはlong double型をdouble型,またはfloat型に変換するとき,型変換される値が,表現しうる値の範囲内にはあるが正確に表現することができない場合,その結果は,無限の有効桁を持つとして計算した場合の結果と近い方の値へ丸められます。中間時は結果が偶数になる方向へ丸られます。
ビット単位の演算子における符号付き型に対する特性は,シフト演算子については,「(29) ビット単位のシフト演算子」の規定に準じます。
また,その他の演算子については,符号なしの値として(ビット・イメージのままで)計算するものとします。
共用体のメンバの値がそれと異なるメンバに格納される場合,整列条件にしたがって格納されるため,その共用体のあるメンバへのアクセスは,後からアクセスした型としてアクセスされます。
“sizeof”演算子の結果は,unsigned int型とします。
ポインタを汎整数型に変換する場合,要求される変数のサイズは,下記のサイズとなります。
変換結果は,ビット列がそのまま保存されます。ただしfarポインタの不定値である最上位1 バイトは,ゼロに変換されます。
また,任意の整数はポインタに型変換できますが,ポインタ型のサイズが整数型のサイズよりも小さい場合は,ポインタ型のサイズに切り詰めます。ポインタ型のサイズが整数型のサイズより大きい場合は,整数型をポインタ型のサイズまで通常の型変換した後に,ポインタ型に型変換します。
変換には,nearポインタとfarポインタが関与するため,「メモリ配置領域指定(__near/__far)」中の「キャスト」を参照してください。
整数同士の除算で割り切れず,オペランドが負の値をもつ場合,“/”演算子の結果は,除数,または被除数のいずれか一方が負の場合は,代数的な商よりも大きい最小の整数となります。
ただし,どちらも負の場合は,代数的な商よりも小さい最大の整数となります。
また,オペランドが負の値をもつ場合,“%”演算子の結果の符号は第1オペランドの符号とします。
同一配列の要素を指す2つのポインタが減算される場合,結果の型はsigned int型となります。
“E1 >> E2”において,E1が符号付きの型で負の値をもつ場合,算術シフトを行います。
記憶域クラス指定子“register”の宣言の有無にかかわらず,可能なかぎり高速にアクセスするように最適化を行います。
signed,unsignedの付かない単なるint型ビット・フィールドは,unsigned int 型となります。ただし,オプション-signed_bitfield 使用時は,signed int 型となります。 |
ビット・フィールドを保持するために,十分な大きさの任意のアドレス付け可能な記憶域単位を割り付けることができますが,十分な領域がなかった場合,合わなかったビット・フィールドはフィールドの型の整列条件に合わせて次の単位に詰め込まれます。 |
メンバが構造体,または共用体オブジェクトの場合は,メンバの構造体定義,または共用体定義の境界に従います。
列挙型の型は,定義する列挙定数の範囲によりchar,signed char,unsigned char,signed short型の4種類のいずれかとなります。詳細は「(4) 列挙型」を参照してください。
“volatile”修飾された型をもつデータへのアクセスは,データがマッピングされているアドレス(I/Oポートなど)に依存します。ただし,同変数へのアクセス箇所への最適化は行わず,必ずアクセスします。
以下のように,特定の条件に該当する同変数へのアクセス・サイズは保証されます。
“#include <文字列>”という形式の前処理指示は,“文字列”がフルパスのファイル名でない場合注,指定されたフォルダ(-Iオプション)からヘッダ・ファイルを検索し,次に標準インクルード・ファイル・フォルダ(ccrlが置かれたbinフォルダからの相対パスでの..\incフォルダ)を検索します。
なお,“<”と“>”の区切り記号の間に指定された文字列で一意に識別されるヘッダ・ファイルを探し出すと,そのヘッダ・ファイルの内容全体で置き換えます。
“#include "文字列"”という形式の前処理指示は,“文字列”がフルパスのファイル名でない場合注,ソース・ファイルがあるフォルダからヘッダ・ファイルを検索し,次に,指定したフォルダ(-Iオプション),最後に標準インクルード・ファイル・フォルダ(ccrlが置かれたbinフォルダからの相対パスでの..\incフォルダ)を検索します。
なお,“ " ”“ " ”の区切り記号の間に指定された文字列で一意に識別されるヘッダ・ファイルを探し出すと,そのヘッダ・ファイルの内容全体で置き換えます。
“#include前処理字句列”という形式において,前処理字句列が単一で<文字列>,または"文字列"の形式に置換されるマクロである場合にのみ,単一のヘッダ・ファイル名の前処理字句として扱われます。
(最終的に)区切られた列とヘッダ・ファイル名との間においては,列中の英文字の長さを判別し,
となります。ファイルを探すフォルダについては,上記の規定に準じます。
「4.2.4 #pragma指令」を参照してください。
「4.2.2 マクロ」を参照してください。
isalnum関数,isalpha関数,iscntrl関数,islower関数,isprint関数およびisupper関数によってテストされる文字集合 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
シグナル処理ルーチンの呼び出し前に signal(sig, SIG_DFL); と同等のことが実行されない場合のシグナルの遮断の処置 |
|
シグナル関数によって指定された処理ルーチンによって SIGILL シグナルが受け付けられる場合に既定の処理が再設定されるか否か |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|
「7.5 ライブラリ関数」を参照してください。 |
|