拡張の概要
コンパイラでは、C標準の機能のほかに、組み込み業界で使用される効率的なプログラミング専用の機能から、規格上の軽微な問題の緩和にいたるまで、幅広い拡張を提供します。
以下は使用可能な拡張の概要です。
IAR C言語拡張
使用可能な言語拡張については、IAR C言語拡張を参照してください。拡張キーワードの詳細は、「拡張キーワード」を参照してください。C++、言語の2つの レベルのサポート、C++言語拡張については、「C++の使用」のを参照してください。
プラグマディレクティブ
#pragmaディレクティブは、C規格によって定義されたものであり、ベンダ固有の拡張の使用方法を規定することにより、ソースコードの移植性を維持するための仕組みです。コンパイラでは、コンパイラの動作(メモリの割当て方法、拡張キーワードの許可/禁止、ワーニングメッセージの表示/非表示など)の制御に使用可能な定義済プラグマディレクティブを提供します。ほとんどのプラグマディレクティブは前処理され、マクロに置換されます。 プラグマディレクティブは、コンパイラでは常に有効になっています。これらのいくつかに対しては、対応するC/C++言語拡張も用意されています。使用可能なプラグマディレクティブについては、「プラグマディレクティブ」のを参照してください。
プリプロセッサ拡張
コンパイラのプリプロセッサは、C規格に準拠しています。また、コンパイラにより、いくつかのプリプロセッサ関連拡張も利用可能になります。詳細については、「プリプロセッサ」を参照してください。
組み込み関数
組み込み関数は、低レベルのプロセッサ処理に直接アクセスするための関数であり、時間が重要なルーチンなどでに便利です。 組み込み関数は、単一の命令か短い命令シーケンスとして、インラインコードにコンパイルされます。組み込み関数の使用方法については、C言語とアセンブラの結合を参照してください。使用可能な関数については、「組み込み関数」を参照してください。
ライブラリ関数
DLIBランタイム環境は、組み込みシステムに適用されるC/C++標準ライブラリでCとC++ ライブラリ定義を提供します。詳細については、DLIBランタイム環境 — 実装の詳細を参照してください。
注記
プラグマディレクティブ以外の拡張を使用する場合、アプリケーションはC規格との整合性がなくなります。
言語拡張の有効化
プロジェクトオプションを使用して、さまざまな言語の適合レベルを選択できます。
コマンドライン | IDE* | 説明 |
|---|---|---|
| Strict | すべてのIAR C言語拡張が無効になり、C規格外の記述は全てエラーになります。 |
なし | 標準 | すべてのC規格に対する緩和が有効ですが、組み込みシステムのプログラミングの拡張は有効になりません。拡張については、IAR C言語拡張を参照してください。 |
| 標準+拡張>IAR 拡張 | すべての IAR C 言語拡張と多くの GNU 言語拡張が有効になっています。 |
| 標準+拡張>GNU 拡張 | 一部のGNU言語拡張が有効になっています。 |
* IDEでは、[プロジェクト]>[オプション]>[C/C++コンパイラ]>[言語1]>[言語の適合]を選択して、適切なオプションを選びます。IDEでは言語拡張がデフォルトで有効になっていることに注意してください。