17.1 C++ ISO/IEC 標準に関する制限

ISO/IEC C++ 標準では、コンパイラが準拠する必要のある最小限の制限が規定されています。異なるコンパイラにアプリケーションを移植する場合は、これらの制限に注意する必要があります。

以下の表には、これらの制限の概要を示します。
この表で memory と表示されている項目は、使用可能なメモリの容量による制限以外に ARM コンパイラによる制限がないことを示します。

表 17-1 実装に関する制限

説明 推奨 ARM
複合ステートメントのネストレベル、反復制御構造、選択制御構造 256 メモリ
条件付きインクルードのネストレベル 256 メモリ
宣言の算術演算、構造体、共用体、または不完全型を修飾するポインタ、配列、および関数宣言子(任意の組み合わせ) 256 メモリ
1 つの式に含まれる括弧のネストレベル 256 メモリ
内部識別子またはマクロ名の最初の文字数 1 024 メモリ
外部識別子の最初の文字数 1 024 メモリ
1 つの変換ユニットに含まれる外部識別子 65 536 メモリ
1 つのブロック内で宣言される、有効範囲がブロックである識別子 1 024 メモリ
1 つの変換ユニット内で同時に定義されるマクロ識別子 65 536 メモリ
1 つの関数宣言に含まれるパラメータ 256 メモリ
1 つの関数コールに含まれる引数の数 256 メモリ
1 つのマクロ定義に含まれるパラメータ 256 メモリ
1 つのマクロ呼び出しに含まれる引数 256 メモリ
1 行の論理ソース行に含まれる文字 65 536 メモリ
文字ストリングリテラルまたは連結後のワイドストリングリテラルに含まれる文字 65 536 メモリ
C または C++ オブジェクトのサイズ(配列を含む) 262 144 4 294 967 296
#include ファイルのネストレベル 256 メモリ
ネストされた switch ステートメントを除く、1 つの switch ステートメントの case ラベル 16 384 メモリ
1 つのクラス、構造体、または共用体に含まれるデータメンバの数 16 384 メモリ
1 つの列挙型に含まれる列挙定数 4 096 メモリ
1 つの struct 宣言リスト内にネストされるクラス、構造体、または共用体定義のレベル。 256 メモリ
atexit() によって登録される関数 32 33
直接および間接ベースクラス 16 384 メモリ
1 つのクラスの直接ベースクラス 1 024 メモリ
1 つのクラスで宣言されるメンバ 4 096 メモリ
1 つのクラス内で最終的にオーバライドされる仮想関数(アクセス可能かどうかに関係なく) 16 384 メモリ
1 つのクラスが持つ直接および間接仮想ベース 1 024 メモリ
1 つのクラスに含まれるスタティックメンバ 1 024 メモリ
1 つのクラスに含まれるフレンド宣言 4 096 メモリ
1 つのクラスに含まれるアクセス制御宣言 4 096 メモリ
1 つのコンストラクタ定義に含まれるメンバイニシャライザ 6 144 メモリ
1 つの識別子に対する有効範囲修飾子 256 メモリ
ネストされた外部指定子 1 024 メモリ
1 つのテンプレート宣言に含まれるテンプレート引数 1 024 メモリ
再帰的にネストされたテンプレートのインスタンス 17 メモリ
1 つの try ブロックに対するハンドラ 256 メモリ
1 つの関数宣言に含まれる throw 指定 256 メモリ
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.