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

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

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

Table 39. 実装に関する制限

説明推奨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 1444 294 967 296
#include ファイルのネストレベル256メモリ
ネストされた switch ステートメントを除く、1 つの switch ステートメントの case ラベル16 384メモリ
1 つのクラス、構造体、または共用体に含まれるデータメンバの数16 384メモリ
1 つの列挙型に含まれる列挙定数4 096メモリ
1 つの struct 宣言リスト内にネストされるクラス、構造体、または共用体定義のレベル256メモリ
atexit() によって登録される関数3233
直接および間接ベースクラス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メモリ

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711