主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

C ++コードコードコード名前空间空间の整理整理整理

名前空間を使用すると、コードを論理パーツに整理して名前の競合を防ぐことができ、生成された C++ コードをより大きな C++ プロジェクトに簡単に統合できるようになります。また、名前空間を使用すると、セーフティ クリティカルなコードの MISRA C++ 規格への準拠性が高まります。このトピックでは、コード生成設定を使用して、生成された C++ コードの名前空間への整理をカスタマイズする方法について説明します。

名前空間構造を制御する設定

生成コード名前空间作成を制御コード设定は次のとおりです。

コード構成パラメーター 説明 指定方法

コード构成の场合:CppNamespace

MATLAB®Coder™アプリの場合:[コード外観]タブの[C++ 名前空間]

生成された C++ コードを含む名前空間。

このパラメーターが空の場合、コード ジェネレーターはこのような名前空間を作成しません。

コード构成の场合:''(既定値)|文字ベクトル

MATLAB Coderアプリの場合: テキスト フィールドで指定

コード构成の场合:cppnamespaceformathworkscode

MATLAB Coderアプリの場合:[コード外観]タブの[MathWorks コードの名前空間]

すべての MathWorks®コードに対して生成されたコード (スパース データ型のコードなど) を含む名前空間。

このパラメーターが空の場合、コード ジェネレーターはこのような名前空間を作成しません。

コード构成の场合:“编码器”(既定値)|文字ベクトル

MATLAB Coderアプリの場合: テキスト フィールドで指定

コード构成の场合:cpppackagestonamespaces

MATLAB Coderアプリの場合:[コード外観]タブの[MATLAB パッケージを C++ 名前空間に変換]

MATLAB コード内のパッケージに対応する C++ 名前空間を生成するかどうか。

コード构成の场合:真的(既定値)|false

MATLAB Coderアプリの場合:[コード外観]タブで、[MATLAB パッケージを C++ 名前空間に変換]チェック ボックスをオンまたはオフにする

名前空間の生成に関するその他のメモ:

  • CppNamespace(またはアプリ対応)をを指定コードは,さされたすべての关数型型型型定义定义定义ををを名前名前空间にtmwtypes.hに含まれる汎用的な型定義およびrtwtypes.hにあるハードウェア固有の定義を除く)。この main ファイルの例と関数は、名前空間にパッケージ化されません。

  • MATLAB コードに入れ子にされたパッケージ (PKG2内のPKG1など) がある場合、生成された名前空間は同じ入れ子構造になります。

  • コード生成用の MATLAB コードのパッケージを作成する場合は、以下のガイドラインに従います。

    • “编码器”という名前パッケージ作成しないで。。

    • cppnamespaceformathworkscodeプロパティ (またはアプリの同等のパラメーター) を既定以外の名前に設定する場合、その名前のパッケージは作成しないでください。

例:C ++コードコード名前空间生成生成

この例では、以下のコード生成設定を使用して名前空間を作成する方法を示します。

MATLAB® 関数の定義

2 つの MATLAB 関数fooおよびbarを 2 つの個別のファイルfoo.mおよびbar.mで定義します。ファイルbar.mをパッケージmyPackageに配置します。関数fooは string 入力を受け入れ、関数barを呼び出します。

typefoo.m
function out = foo(str) temp = strlength(str); out = mypackage.bar(temp); end
type+mypackage/bar.m
function out = bar(in) coder.inline('never'); out = in + 1; end

コード构成オブジェクト定义

スタティックライブラリコード构成を作成しターゲット言语言语をををををににににします。。すべてののallcodeという名前指定ます。。。。コードコードコード名前ををnotmycodeという名前に指定します。

cfg = coder.config('lib'); cfg.TargetLang ='C++';cfg.CppNamespace ='allcode';cfg.cppnamespaceformathworkscode ='notmycode';

コードの生成

C++ スタティック ライブラリとコード生成レポートを生成します。入力型を、任意の長さにすることができる string スカラーに指定します。

s ="mystring";t = coder.typeof(s); t.Properties.Value = coder.typeof('a',[1 Inf]);代码根-configcfgfoo-args{t}-report
代码生成成功:要查看报告,打开('codegen/lib/foo/html/report.mldatx')。

生成されたコードの検証

コード生成レポートを開き、生成されたコードを検査します。

ファイルfoo.hには、生成された関数fooの宣言含まています。作成作成したたたたfooはパッケージ内にないため、生成された関数は、すべての生成コードを含む名前空間allcode内でのみ宣言されています。

typecodegen/lib/foo/foo.h
// // File: foo.h // // MATLAB Coder version : 5.2 // C/C++ source code generated on : 04-Jun-2021 23:20:10 // #ifndef FOO_H #define FOO_H // Include Files #include "rtwtypes.h" #include "string1.h" #include  #include  // Function Declarations namespace allcode { extern double foo(const notmycode::rtString *str); } #endif // // File trailer for foo.h // // [EOF] //

ファイルbar.hには、生成された関数barの宣言が含まれています。MATLAB 関数barをパッケージmypackage内に作成したため、生成された関数は名前空間階層allcode: myPackage内で宣言されています。

typeCodegen/lib/foo/bar.h
// // File: bar.h // // MATLAB Coder version : 5.2 // C/C++ source code generated on : 04-Jun-2021 23:20:10 // #ifndef BAR_H #define BAR_H // Include Files #include "rtwtypes.h" #include  #include  // Function Declarations namespace allcode { namespace mypackage { double bar(double in); } } // namespace allcode #endif // // File trailer for bar.h // // [EOF] //

ファイルstring1.hMatlab字符串データデータデータをするされクラスクラスクラスrtStringの宣言れてます。。。。コードコード生成れたすべてのを名前名前空间notmycode内に配置するようにコード ジェネレーターに指示したため、生成されたクラスrtStringは名前空間階層allcode::notmycode内で宣言されています。

type代码根/lib/foo/string1.h
// // File: string1.h // // MATLAB Coder version : 5.2 // C/C++ source code generated on : 04-Jun-2021 23:20:10 // #ifndef STRING1_H #define STRING1_H // Include Files #include "rtwtypes.h" #include "coder_array.h" #include  #include  // Type Definitions namespace allcode { namespace notmycode { class rtString { public: void init(const ::coder::array &b_Value); rtString(); ~rtString(); ::coder::array Value; }; } // namespace notmycode } // namespace allcode #endif // // File trailer for string1.h // // [EOF] //

参考

||

関連するトピック