このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MATLAB®Coder™によって C コードまたは C++ コードのいずれかを生成できます。既定ではコード ジェネレーターは C コードを作成します。生成された C++ コードでは、C++ コードをより読みやすく、使いやすくする、C 言語では使用できない機能を使用できます。
C++ コードを生成するには、C コードを生成する際に使用するものと同じワークフロー手順全体に従います。例については、コマンド ラインでの C コードの生成を参照してください。コマンド ラインから、またはコード生成構成設定で、またはMATLAB Coderアプリから、C++ 言語オプションを選択します。
ゼロ入力を受け入れる関数foo
の C++ コードを生成するとします。
コマンド ラインで-lang:c++
指定子を使用します。この指定子により、C++ コードをすばやく簡単に生成できます。たとえば、foo
の C++ スタティック ライブラリと C++ ソース コードを生成するには、次を入力します。
codegen-config:lib-lang:c++foo
構成オブジェクトで、TargetLang
パラメーターを C++ に設定します。たとえば、C++ ダイナミック ライブラリを生成するには、次を入力します。
cfg = coder.config('dll'); cfg.TargetLang ='C++'; codegen-configcfgfoo
アプリから、[コード生成]のステップで[C++]言語ボタンを選択します。
主な C++ 言語機能を利用するコード生成の詳細については、次のヘルプ トピックを参照してください。
目的 | 詳細 |
MATLAB コード内のクラスに対応する C++ クラスを生成する。 |
|
エントリポイント関数を C++ クラスのメソッドとして生成する。 |
|
MATLAB パッケージに対応する C++ 名前空間を生成する。指定した名前空間にすべての生成コードを配置する。MathWorks®コードに対して生成されたすべてのコードを、指定した名前空間に配置する。 |
|
動的に割り当てられた配列をカスタム 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 の既定の標準の数学ライブラリについては、標準の数学ライブラリの変更で説明しています。