C++ コード生成
MATLAB® Coder™ によって C コードまたは C++ コードのいずれかを生成できます。既定ではコード ジェネレーターは C コードを作成します。生成された C++ コードでは、C++ コードをより読みやすく、使いやすくする、C 言語では使用できない機能を使用できます。
C++ コードの生成
C++ コードを生成するには、コード生成ワークフローに従います。MATLAB Coder を使用したコード生成の概要を参照してください。
C++ コードを生成するようにコード ジェネレーターに指示するには、次のいずれかの方法を使用します。
生成されたコードでサポートされる C++ 言語機能
主な C++ 言語機能を利用するコード生成の詳細については、次のヘルプ トピックを参照してください。
| 目的 | 詳細 |
MATLAB コード内のクラスに対応する C++ クラスを生成する。 | |
エントリポイント関数を C++ クラスのメソッドとして生成する。 | |
MATLAB 名前空間に対応する C++ 名前空間の生成。指定した C++ 名前空間にすべての生成コードを配置する。 | |
動的に割り当てられた配列をカスタム C++ コードと生成コードの間で渡す。生成された C++ コードは、 |
以下の例は、これらの機能の使用方法を説明します。
生成される C コードと C++ コードの追加の差異
同じ MATLAB 関数について C コードと C++ コードを個別に生成し、生成されたソース コードを調べると、実装の差異があります。次のような明確な相違点があります。
生成された C++ コードには、同じ名前で複数のシグネチャをサポートするオーバーロードされた関数またはメソッドが含まれる。C 言語では、関数のオーバーロードはサポートされない。
生成された C++ コードは、異なる名前空間階層間で同じ識別子名を再利用する。たとえば、最上位の名前空間が
myNamespace_1とmyNamespace_2である 2 つの異なる名前空間階層で、同じ型名myTypeが使用される場合がある。C 言語では、名前空間とこのような識別子名の再利用はサポートされない。生成された C コードでは、関数ヘッダーには、生成された C 関数の
extern "C"識別子を指定する#ifdef __cplusplusインクルード ガードが含まれる。コンパイラとリンカーは、C++ プロジェクトの一部として C コードをビルドする際にこれらの識別子を使用する。生成された C++ コードは、C++ ファイルには
.cppファイル拡張子を使用し、ヘッダー ファイルには.h拡張子を使用する。生成された C コードは.c拡張子および.h拡張子を使用する。生成された C++ コードは
static_castのような C++ キャストを使用する。これは、C のキャスト構文より明示的である。生成されたコードは、
InfおよびNaNについて、C++ と C とでは異なるメカニズムに基づいて値を定義する。生成された C++ コードは生成コードの型への MATLAB 型のマッピングで説明されているカスタム データ型を使用する。
生成された C++ コードは、生成された C コードとは異なるライブラリを使用する。たとえば、C++ および C の既定の言語標準については、コード生成に使用する言語標準の変更で説明しています。