4.1.2 C99の処理系定義

この項では,C99規格における処理系定義について説明します。

 

(1)

翻訳時の構文規則違反等に対する診断メッセージの出し方。(3.10, 5.1.1.3)

10. メッセージ」を参照してください。

(2)

翻訳フェーズ3において,改行文字を除く空白類文字の並びを保持するか一つの空白文字に置き換えるか。(5.1.1.2)

そのまま保持されます。

(3)

翻訳フェーズ1での,物理的なソース・ファイルの多バイト文字と対応するソース文字集合のマッピング方法。(5.1.1.2)

多バイト文字は,コンパイルオプションにより対応するソース文字集合にマッピングします。

(4)

フリースタンディング環境におけるプログラム開始時に呼び出される関数の名前と型。(5.1.2.1)

規定しません。スタート・アップの実装に依存します。

(5)

フリースタンディング環境におけるプログラム終了処理の効果。(5.1.2.1)

正常終了時はスタート・アップに依存します。プログラムを異常終了させる場合はabort関数を使用します。

(6)

main関数を定義できる代替方法。(5.1.2.2.1)

フリースタンディング環境であるため,規定しません。

(7)

main関数のargv実引数が指す文字列の値。(5.1.2.2.1)

フリースタンディング環境であるため,規定しません。

(8)

ユーザーインタフェースとなる対話型装置がどのようなものであるか。(5.1.2.3)

対話型装置の構成については,特に規定しません。

(9)

シグナル全体の集合,それぞれの意味および既定の操作。(7.14)

シグナル操作関数はサポートしていません。

(10)

SIGFPE,SIGILL,SIGSEGV以外の,計算例外に対応するシグナルの値。(7.14.1.1)

シグナル操作関数はサポートしていません。

(11)

プログラム開始時に実行される,signal(sig, SIG_IGN);と同等なシグナル。(7.14.1.1)

シグナル操作関数はサポートしていません。

(12)

getenv関数で使用される,環境の並びに定義されている名前の集合および環境の並びを変更する方法。(7.20.4.5)

getenv関数はサポートしていません。

(13)

system関数における,引数stringが指す文字列の実行方法。(7.20.4.6)

system関数はサポートしていません。

(14)

ソース基本文字集合の一部でない多バイト文字が識別子の中に現れることを許すかどうか,及び識別子に使用してよい多バイト文字およびその文字と国際文字名との対応。(6.4.2)

識別子として多バイト文字は使用できません。

(15)

識別子における,意味がある先頭の文字の個数。(5.2.4.1,6.4.2)

識別子すべてが意味のあるものとして扱われます。また,識別子の長さは無制限です。

(16)

1バイトあたりのビット数。(3.6)

8ビットとします。

(17)

実行文字集合の要素の値。(5.2.1)

実行文字集合の要素の値は,ASCIIコード,EUC,SJIS,UTF-8,big5,gb2312の値です。

(18)

標準の英字逆斜線表記のそれぞれに割り当てられた実行文字集合の要素の一意な値。(5.2.2)

逆斜線表記

値(ASCII)

"\a"

0x07

"\b"

0x08

"\f"

0x0C

"\n"

0x0A

"\r"

0x0D

"\t"

0x09

"\v"

0x0B

(19)

実行基本文字集合の任意の要素以外の文字が格納されたchar型のオブジェクトの値。(6.2.5)

char型に型変換した値となります。

(20)

signed charとunsigned charのどちらが,単なるcharと同じ値の範囲,同じ表現形式,同じ動作を持つのか。(6.2.5, 6.3.1.1)

char型は,unsigned char型と同じ値の範囲,同じ表現形式,同じ動作を持ちます。ただし,オプション-signed_charでsigned char型に切り替えが可能です。

(21)

文字定数と文字列リテラル中のソース文字集合の要素から実行文字集合の要素への対応付け方法。(6.4.4.4,5.1.1.2)

同一の値をもつ要素へ対応付けます。

(22)

2文字以上を含む,または1バイトの実行文字で表現できない文字もしくは逆斜線表記を含む単純文字定数の値。(6.4.4.4)

2文字までの文字を含む単純文字定数は,末尾の文字を下位バイト,先頭の文字を上位バイトに持つ2バイトの値を持ちます。3文字以上の文字を持つ文字定数はエラーとなります。基本的な実行環境文字集合で表現されない文字は,その値を持つ単純文字定数とみなします。不正な逆斜線表記は逆斜線を無視して次の文字を単純文字定数とみなします。

(23)

2文字以上の多バイト文字を含む,または実行拡張文字集合で表現できない多バイト文字もしくは逆斜線表記を含むワイド文字定数の値。(6.4.4.4)

多バイト文字としての左端1文字の値となります。

(24)

実行拡張文字集合の1つの文字に対応する単一の多バイト文字を含むワイド文字定数の値をワイド文字に対応させる,その時点のロケール。(6.4.4.4)

ロケールはサポートしていません。

(25)

ワイド文字列リテラルから対応するワイド文字コードへの変換時に使用される,その時点のロケール。(6.4.5)

ロケールはサポートしていません。

(26)

実行文字集合で表現できない多バイト文字もしくは逆斜線表記を含む文字列リテラルの値。(6.4.5)

逆斜線表記は対応するバイトの値,多バイト文字はそれぞれのバイトの値になります。

(27)

処理系が提供する拡張整数型。(6.2.5)

拡張整数型は提供していません。

(28)

符号付き整数型が符号と絶対値,2の補数,または1の補数のいずれの表現方式を使用して表現されるか,および異常値がトラップ表現か通常値かどうか。(6.2.6.2)

符号付き整数型は2の補数で表現します。トラップ表現はありません。

(29)

同じ精度を持つ別の拡張整数型に対する,整数拡張型の順位。(6.3.1.1)

拡張整数型は提供していません。

(30)

整数型の値を符号付き整数型に変換する際,値が変換先の型で表現できない場合の結果,あるいは生成されるシグナル。(6.3.1.3)

変換先の型の幅でマスクした(上位ビットを切り捨てた)ビット列とします。

(31)

符号付き整数に対するビット単位の操作の結果。(6.5)

シフト演算子の場合は算術シフトを行います。その他の演算子については,符号なしの値として(ビット・イメージのままで)計算するものとします。

(32)

浮動小数点演算の正確度,<math.h>および<complex.h>の中で定義される,浮動小数点型の結果を返却する,ライブラリ関数の正確度。(5.2.4.2.2)

不明です。

(33)

FLT_ROUNDSに対する非標準の値において,特徴付けられた丸め動作。(5.2.4.2.2)

FLT_ROUNDSに対する非標準の値は定義しません。

(34)

FLT_EVAL_METHODに対する非標準の負の値によって特徴付けられる評価形式。(5.2.4.2.2)

FLT_EVAL_METHODに対する非標準の値は定義しません。

(35)

整数が,元の値を正確に表現できない浮動小数点数に変換された時の丸めの方向。(6.3.1.4)

表現しうる最も近い方向に丸められます。

(36)

浮動小数点数がより狭い浮動小数点数型に変換された時の丸めの方向。(6.3.1.5)

表現しうる最も近い方向に丸められます。

(37)

浮動小数点定数を,最も近い表現可能な値とするか,それとも最も近い表現可能な値のすぐ隣(大きい値もしくは小さい値)で表現可能な値とするか。(6.4.4.2)

最近値に丸めます。

(38)

FP_CONTRACTプラグマがない場合,式が短縮されるかどうか。短縮されるならどのように短縮されるか。(6.5)

式の短縮は,各オプション指定に依存します。

FP_CONTRACTプラグマは機能しません。

#pragma STDC FP_CONTRACT指定をしても無視します。

(39)

FENV_ACCESSプラグマの既定の状態。(7.6.1)

FENV_ACCESSプラグマの既定の状態はONになります。

ただし,#pragma STDC FENV_ACCESS指定しても無視します。

(40)

付加的な浮動小数点例外,丸めモード,環境,分類,およびそれらのマクロ名。(7.6, 7.12)

コンパイラが提供しているライブラリmath.hに準じます。付加的な定義はありません。

(41)

FP_CONTRACTプラグマの既定の状態。(7.12.2)

FP_CONTRACTプラグマの既定の状態はONになります。

(42)

IEC 60559に準拠した処理系で,丸めの結果が実際に数学的な結果と同等である時に,"不正確結果"浮動小数点例外が生成されうるかどうか。(F.9)

浮動小数点例外をサポートしていません。

"不正確結果"浮動小数点例外は生成されません。

(43)

IEC 60559に準拠した処理系で,結果が極めて小さいが不正確ではない時に,"アンダーフロー"浮動小数点例外や"不正確結果"浮動小数点例外が生成されうるかどうか。(F.9)

浮動小数点例外をサポートしていません。"アンダーフロー"浮動小数点例外や"不正確結果"浮動小数点例外は生成されません。

(44)

ポインタから整数への変換の結果,またはその逆の結果。(6.3.2.3)

4.2.6 拡張言語仕様の使用方法」にある「メモリ配置領域指定(__near/__far)」を参照してください。

(45)

同じ配列の要素への2つのポインタの減算の結果の大きさ。(6.5.6)

結果の型はsigned int型となります。

(46)

register記憶域クラス指定子の使用がどのくらい効果を持つか。(6.7.1)

register指定子を無視して最適化します。

(47)

inline関数指定子の使用がどのくらい効果を持つか。(6.7.4)

常に展開を試みます。ただし,条件によっては展開を行わないことがあります。

(48)

単なるintビットフィールドがsigned intビットフィールドとして扱われるか,それともunsigned intビットフィールドとして扱われるか。(6.7.2,6.7.2.1)

unsigned int型として扱います。ただし,オプション-signed_bitfieldにより変更可能です。

(49)

_Bool,signed int,unsigned int以外で許されるビットフィールドの型。(6.7.2.1)

全ての整数型が許されています。

(50)

ビットフィールドが記憶域単位の境界を跨ぐかどうか。(6.7.2.1)

構造体パッキング未指定時は,ビットフィールドは境界を跨がず,次の領域に割り付けます。構造体パッキング指定時は,ビットフィールドは境界を跨ぐことがあります。

(51)

記憶域単位内のビットフィールド割付けの順序。(6.7.2.1)

下位から割り付けます。

(52)

構造体または共用体オブジェクトのビットフィールド以外の各メンバの境界の調整方法。(6.7.2.1)

4.1.3 データの内部表現と領域」を参照してください。

(53)

それぞれの列挙型が適合する整数型。(6.7.2.2)

char,signed char,unsigned char,signed short型のいずれかです。列挙値が収まる最小の型となります。

(54)

volatile修飾型のオブジェクトへのアクセスをどのように構成するか。(6.7.3)

アクセス幅,アクセス順序,アクセス回数はCソース上の記述通りに実施しますが,対応するマイコンの命令がない型へのアクセスは,その限りではありません。

(55)

#includeのヘッダ名の2つの形式中の文字列が,ヘッダまたは外部ソース・ファイルの名前に対応付けられる方法。(6.4.7)

#includeに記述された文字列は,ソース文字集合として指定した文字コードとして解釈され,ヘッダ名または外部ソース・ファイル名に対応付けられます。

(56)

条件付き取り込みを制御する定数式中の文字定数の値が実行文字集合の同じ文字定数の値と一致するかどうか。(6.10.1)

条件付き取り込みで指定される文字定数に対する値と,その他の式中に現れる文字定数の値とは等しくなります。

(57)

条件付き取り込みを制御する定数式中の単一文字から成る文字定数が負の値を持ってもよいかどうか。(6.10.1)

単なるchar型(signedもunsignedもつかないchar)がunsignedの場合は,負の値を持ちません。signedの場合は,負の値を持つことがあります。

(58)

#include指令で<と>で囲まれたヘッダが探索される場所,場所の指定方法,及びヘッダの識別方法。(6.10.2)

次の順序で探索し,フォルダにある同名ファイルをヘッダと識別します。

(1)フルパス指定の場合はそのパスが示すフォルダ

(2)オプション-Iで指定されたフォルダ

(3)標準インクルードファイルフォルダ(コンパイラが置かれたbinフォルダからの相対パスでの..\incフォルダ)

(59)

#include指令で,2つの"で囲まれたソース・ファイルの探索手順。(6.10.2)

次の順序で探索します。

(1)フルパス指定の場合はそのパスが示すフォルダ

(2)ソース・ファイルがあるフォルダ

(3)オプション-Iで指定されたフォルダ

(4)標準インクルードファイルフォルダ(コンパイラが置かれたbinフォルダからの相対パスでの..\incフォルダ)

(60)

#include指令の前処理トークン(マクロ展開の可能性がある)をヘッダ名に結合する方法。(6.10.2)

前処理字句列が単一で<文字列>,または"文字列"の形式に置換されるマクロである場合にのみ,単一のヘッダまたはソース・ファイル名の前処理字句として扱われます。

(61)

#include指令の入れ子の限界。(6.10.2)

制限はありません。

(62)

#演算子が,文字定数や文字列リテラル中の国際文字名の最初の\文字の前に\文字を挿入するかどうか。(6.10.3.2)

最初の\文字の前に\文字は挿入しません。

(63)

非STDCのプラグマ指令の動作。(6.10.6)

4.2.4 #pragma指令」を参照してください。

(64)

翻訳の日付や時刻が得られない場合,__DATE__マクロと__TIME__マクロで得られる日付や時刻。(6.10.8)

日付や時刻が得られない場合はありません。

(65)

ISO/IEC 9899:1999の4章で要求される最低限必要なライブラリ機能以外で,フリースタンディング環境でプログラムが利用できるライブラリ機能。(5.1.2.1)

7. ライブラリ関数仕様」を参照してください。

(66)

assertマクロによって標準エラーストリームに書き込まれる診断機能の書式。(7.2.1.1)

以下の通りです。

Assertion failed : , function 関数名, file ファイル名, line 行番号

(67)

fegetexceptflag関数によって格納される浮動小数点状態フラグの表現。(7.6.2.2)

fegetexceptflag関数はサポートしていません。

(68)

feraiseexcept関数が,"オーバーフロー"浮動小数点例外または"アンダーフロー"浮動小数点例外を生成する場合はいつでも,それに加えて"不正確結果"浮動小数点例外を生成するかどうか。(7.6.2.3)

feraiseexcept関数はサポートしていません。

(69)

setlocale関数に第2引数として渡される文字列で"C"や""以外の文字列。(7.11.1.1)

setlocale関数はサポートしていません。

(70)

FLT_EVAL_METHODマクロの値が0未満または2より大きい場合のfloat_tとdouble_tで定義される型。(7.12)

float_tはfloat型,double_tはdouble型になります。

(71)

数学関数における,この国際標準(C99)によって要求される以外の定義域エラー。(7.12.1)

下記の場合に定義域エラーとなります。

-

cos,sin,tan関数群の引数がNaNまたは±∞の場合

-

atan,fabs,ceil,floor関数群の引数がNaNの場合

-

atan2関数群の引数のどちらかがNaN,引数の両方が±∞の場合

-

frexp,modf関数群の引数valがNaNまたは±∞の場合

-

ldexp関数群の引数valがNaNの場合

-

fmod関数群の引数のどちらかがNaNまたは±∞の場合

 

詳細は(72)を参照してください。

(72)

定義域エラー発生時の数学関数の返却値。(7.12.1)

次の表は,定義域エラーが発生する条件と戻り値をまとめたものです。

関数

定義域エラー発生条件と戻り値

cos/cosf/cosl

sin/sinf/sinl

tan/tanf/tanl

引数がNaNまたは±∞の場合にNaNを返します。

atan/atanf/atanl

fabs/fabsf/fabsl

ceil/ceilf/ceill

floor/floorf/floorl

引数がNaNの場合にNaNを返します。

atan2/atan2f/atan2l

引数のどちらかがNaNか,引数の両方が±∞の場合にNaNを返します。

frexp/frexpf/frexpl

引数valがNaNまたは±∞の場合にNaNを返し,引数*expに0を返します。

ldexp/ldexpf/ldexpl

引数valがNaNの場合にNaNを返します。

fmod/fmodf/fmodl

引数xまたは引数yがNaNである場合にNaNを返します。

引数xが±∞,または引数yが0である場合にNaNを返します。

引数xが±∞でなく引数yが±∞である場合にxを返します。

modf/modff/modfl

引数valが±∞の場合に0を返し,引数iptrに±∞を返します。

引数valがNaNの場合にNaNを返し,引数iptrにNaNを返します。

その他の関数

C99規格に沿って定義域エラーが発生する場合にNaNを返します。

 

(73)

浮動小数点演算の結果がアンダーフローした場合の数学関数の返却値。アンダーフロー時,整数式math_errhandling & MATH_ERRNOが0以外の値の場合,整数式errnoの値がERANGEとなるかどうか。アンダーフロー時,整数式math_errhandling & MATH_ERREXCEPTが0以外の値の場合,"アンダーフロー"浮動小数点例外を生成するかどうか。(7.12.1)

返却値は0または非正規化数です。アンダーフロー発生時はerrnoにERANGEを設定します。アンダーフロー浮動小数点例外は生成しません。

(74)

fmod関数群の第2実引数が0の場合に,定義域エラーが発生するか,あるいは0が返されるかどうか。(7.12.10.1)

定義域エラーが発生します。詳細はfmod関数群の説明を参照してください。

(75)

remquo関数群によって商を縮小する際に使用される法の,2を底とする対数の値。(7.12.10.3)

remquo関数群はサポートしていません。

(76)

シグナル発生時,signal(sig, SIG_DFL);と同等のことが実行されるか,あるいは,その時点のシグナル処理ルーチンが完了するまで,シグナルの処理系定義の組に対してそれらの発生を遮るか。(7.14.1.1)

シグナル操作関数はサポートしていません。

(77)

マクロNULL展開後の空ポインタ定数。(7.17)

(void*)0 とします。

(78)

テキストストリームの最終行が終端を示す改行文字を必要とするかどうか。(7.19.2)

改行文字を必要としません。

(79)

テキストストリームにおいて,改行文字の直前に書き込まれた空白文字の並びが,データが読み取られる時に現れるかどうか。(7.19.2)

データが読み取られる時に現れます。

(80)

バイナリストリームの最後に付加されるNULL文字の数。(7.19.2)

0個です。

(81)

追加モードでオープンされたファイルに対し,最初にファイル位置指定子がファイルの始めに位置付けられるか終わりに位置付けられるか。(7.19.3)

ファイル操作関数はサポートしていません。

(82)

テキストストリームへの書込みが,結び付けられたファイルを最終書込み点の直後で切り捨てるかどうか。(7.19.3)

ファイル操作関数はサポートしていません。

(83)

ファイルバッファリングの特性。(7.19.3)

ファイル操作関数はサポートしていません。

(84)

長さ0のファイルが実際に存在するかどうか。(7.19.3)

ファイル操作関数はサポートしていません。

(85)

正しいファイル名の規則。(7.19.3)

ファイル操作関数はサポートしていません。

(86)

同一のファイルを同時に複数回オープンできるかどうか。(7.19.3)

ファイル操作関数はサポートしていません。

(87)

ファイル内の多バイト文字のために使用される表現形式の特性と選択。(7.19.3)

ファイル操作関数はサポートしていません。

(88)

オープンされているファイルに対するremove関数の効果。(7.19.4.1)

ファイル操作関数はサポートしていません。

(89)

rename関数を呼び出す前に,第2引数で指定された新しいファイル名のファイルが既に存在していた場合のrename関数の動作。(7.19.4.2)

ファイル操作関数はサポートしていません。

(90)

プログラムが異常終了した場合,オープン中の一時ファイルが削除されるかどうか。(7.19.4.3)

ファイル操作関数はサポートしていません。

(91)

filename引数が空ポインタの場合,どのようなモード変更を許すか,及びどのような状況での変更を許すか。(7.19.5.4)

ファイル操作関数はサポートしていません。

(92)

無限大やNaNを書き込む時の形式,及びNaNの書込みで使われるかもしれないn文字列,nワイド文字列の意味。(7.19.6.1,7.24.2.1)

正の無限大はinfまたはINF,負の無限大は-infまたは-INF,NaNはnanまたはNANを出力します。

NaNの書き込みにおけるn文字列,nワイド文字列はサポートしていません。

(93)

fprintf関数およびfwprintf関数での%p変換の出力。(7.19.6.1,7.24.2.1)

16進表記です。

fprintf関数,fwprintf関数はサポートしていません。

(94)

fscanf関数およびfwscanf関数の%[変換において,文字-が走査文字の並びに含まれ,かつ先頭の文字(先頭が文字^のときは2文字目)でも最後の文字でもない場合の文字-の解釈。(7.19.6.2,7.24.2.1)

7.5.7 標準入出力関数」にある「scanf」を参照してください。

fscanf関数,fwscanf関数はサポートしていません。

(95)

fscanf関数およびfwscanf関数での%p変換によって一致する文字の並びの集合と対応する入力項目の解釈。(7.19.6.2,7.24.2.2)

16進数です。

fscanf関数,fwscanf関数はサポートしていません。

(96)

fgetpos関数,fsetpos関数,ftell関数の失敗時に設定されるerrnoマクロの値。(7.19.9.1,7.19.9.3,7.19.9.4)

ファイル操作関数はサポートしていません。

(97)

strtod関数,strtof関数,strtold関数,wcstod関数,wcstof関数,wcstold関数によって変換されたNaNを表現する文字列でのn文字あるいはnワイド文字の並びの意味。(7.20.1.3,7.24.4.1.1)

strtod関数,strtof関数,strtold関数は浮動小数点型の数値以外と解釈します。

wcstod関数,wcstof関数,wcstold関数はサポートしていません。

(98)

strtod関数,strtof関数,strtold関数,wcstod関数,wcstof関数,wcstold関数が,アンダーフロー発生時にerrnoにERANGE格納するかどうか。(7.20.1.3,7.24.4.1.1)

strtod関数,strtof関数,strtold関数はグローバル変数errnoにERANGEを設定します。

wcstod関数,wcstof関数,wcstold関数はサポートしていません。

(99)

calloc関数,malloc関数,realloc関数が,要求された領域の大きさが0である時に,割り付けたオブジェクトへのポインタを返すか,それとも空ポインタを返すか。(7.20.3)

NULLを返します。

(100)

abort関数,_Exit関数の呼び出し時に,書き出されていないバッファリングされたデータをもつオープンしているストリームをフラッシュするかどうか,オープンしているストリームをクローズするかどうか,一時ファイルを削除するかどうか。(7.20.4.1,7.20.4.4)

ファイル操作関数はサポートしていません。

(101)

abort関数,exit関数,_Exit関数によってホスト環境へ返される終了状態。(7.20.4.1,7.20.4.3,7.20.4.4)

フリースタンディング環境であるため,規定しません。

(102)

system関数に渡された実引数が空ポインタでない場合に,system関数によって返される値。(7.20.4.6)

system関数はサポートしていません。

(103)

地方時と夏時間。(7.23.1)

time.hはサポートしていません。

(104)

clock_tとtime_tで表現可能な時刻の範囲と精度。(7.23)

time.hはサポートしていません。

(105)

clock関数で計算されるプロセッサ時間の開始時点。(7.23.2.1)

time.hはサポートしていません。

(106)

"C"ロケールでの,strftime関数,wcsftime関数の%Z変換指定子に対応する置換文字列。(7.23.3.5,7.24.5.1)

time.hはサポートしていません。

(107)

IEC 60559準拠の処理系で,三角関数,双曲線関数,底がeの指数関数,底がeの対数関数,エラー関数,ログガンマ関数が,"不正確結果"浮動小数点例外を生成するかどうか。生成する場合,いつ生成するか。(F.9)

"不正確結果"浮動小数点例外を生成しません。

(108)

IEC 60559準拠の処理系で,<math.h>の関数が丸め方向モードを尊重するか。(F.9)

丸め方向モードは固定です。

fesetround関数はサポートしていません。

(109)

<float.h>,<limits.h>,<stdint.h>の各ヘッダで指定されたマクロに割り当てられる値あるいは式。(5.2.4.2,7.18.2,7.18.3)

4.2.3 C90でサポートするC99言語仕様」にある「標準ヘッダ」を参照してください。

(110)

明示的に規定されていない場合の,オブジェクトを構成するバイトの並びのバイト数,バイトの順序,表現方法。(6.2.6.1)

4.1.3 データの内部表現と領域」を参照してください。

(111)

sizeof演算子の結果の値。(6.5.3.4)

4.1.3 データの内部表現と領域」を参照してください。

翻訳限界

CC-RLの翻訳限界を以下に示します。

「制限なし」の項目は,上限はホスト環境のメモリ状況に依存します。

表 4.2

翻訳限界(C99)

項目

C99

CC-RL

ブロックの入れ子のレベル数

127

制限なし

条件付取り込みにおける入れ子のレベル数

63

制限なし

一つの宣言中の一つの算術型,構造体型,共用体型又は不完全型を修飾するポインタ,配列及び関数宣言子(の任意の組み合わせ)の個数

12

128

一つの完全宣言子における括弧で囲まれた宣言子の入れ子のレベル数

63

制限なし

一つの完全式における括弧で囲まれた式の入れ子のレベル数

63

制限なし

内部識別子又はマクロ名において意味がある先頭の文字数

63

制限なし

外部識別子において意味がある先頭の文字数

31

制限なし

一つの翻訳単位中における外部識別子数

4095

制限なし

一つのブロック中におけるブロック有効範囲をもつ識別子数

511

制限なし

一つの翻訳単位中で同時に定義されうるマクロ識別子数

4095

制限なし

一つの関数定義における仮引数の個数

127

制限なし

一つの関数呼出しにおける実引数の個数

127

制限なし

一つのマクロ定義における仮引数の個数

127

制限なし

一つのマクロ呼出しにおける実引数の個数

127

制限なし

一つの論理ソース行における文字数

4095

制限なし

(連結後の)単純文字列リテラル又はワイド文字列リテラル中のおける文字数

4095

制限なし

(ホスト環境の場合)一つのオブジェクトのバイト数

65535

32767(65535)注1

#includeで取り込まれるファイルの入れ子レベル数

15

制限なし

一つのswitch文(入れ子になったswitch文を除く)中におけるcase名札の個数

1023

65535

一つの構造体又は共用体のメンバ数

1023

制限なし

一つの列挙体における列挙定数の個数

1023

制限なし

一つのメンバ宣言並びにおける構造体又は共用体定義の入れ子のレベル数

63

制限なし

注 1.

カッコ内は-large_variable指定時