coder.opaque
生成コード内の変数の宣言
構文
説明
y = coder.opaque(
は、生成コード内で type
)y
の変数宣言を指定した型で行い、初期値は指定しません。
y
には、変数または構造体フィールドを指定できます。MATLAB® コードは
y
に値を設定したりアクセスしたりすることはできませんが、外部 C 関数は、y
を引数として取ることができます。y
は以下になります。coder.rref
、coder.wref
またはcoder.ref
への引数coder.ceval
への入力または出力引数ユーザー作成の MATLAB 関数への入力または出力引数
コード生成用にサポートされる MATLAB ツールボックス関数のサブセットへの入力
y
からの代入により、生成コード内で同じ型をもつ他の変数を宣言します。以下に例を示します。これにより、生成コードにおいてy = coder.opaque('int'); z = y;
int
型をもつ変数z
が宣言されます。coder.opaque
を使用して宣言された変数、またはcoder.opaque
を使用して宣言された変数を代入した変数のいずれかをy
に代入することができます。これらの変数は同じ型でなければなりません。coder.opaque
を使用して宣言された変数、またはcoder.opaque
を使用して宣言された変数を代入した変数のいずれかと、y
を比較することができます。これらの変数は同じ型でなければなりません。
y = coder.opaque(___,'HeaderFile',
は型定義が含まれているヘッダー ファイルを指定します。コード ジェネレーターは、生成コードで必要とされるヘッダー ファイルの HeaderFile
)#include
ステートメントを生成します。ヘッダー ファイルの指定には、前の構文のいずれかを使用できます。
例
入力引数
ヒント
type
で指定される型をもつvalue
を指定します。それ以外の場合、生成されたコードから予期しない結果が生じる可能性があります。たとえば、次のcoder.opaque
宣言により予期しない結果が生じる場合があります。y = coder.opaque('int', '0.2')
関数
coder.opaque
は、変数の型を宣言します。変数のインスタンスは作成しません。後で、MATLAB コードでこの関数を使用して、変数のインスタンスを作成することができます。以下の例では、関数coder.ceval
からfp1
に代入することで、fp1
のインスタンスが作成されます。% Declare fp1 of type FILE * fp1 = coder.opaque('FILE *'); %Create the variable fp1 fp1 = coder.ceval('fopen', ['testfile.txt', char(0)], ['r', char(0)]);
MATLAB 環境では、
coder.opaque
はvalue
で指定された値を返します。value
を指定しない場合、空の文字ベクトルが返されます。coder.opaque
を使用して宣言された変数またはcoder.opaque
を使用して宣言された変数から値を代入された変数を比較することができます。これらの変数は同じ型でなければなりません。以下に、これらの変数を比較する例を示します。 coder.opaque で宣言された変数の比較生成コードで同じヘッダー ファイルが何度もインクルードされるのを防ぐには、条件付きプリプロセッサ命令
#ifndef
および#endif
でヘッダー ファイルを囲みます。次に例を示します。#ifndef MyHeader_h #define MyHeader_h <body of header file> #endif
MATLAB の関数
cast
を使用して、変数をcoder.opaque
を使用して宣言されている変数にキャストするか、この変数からキャストします。数値型の場合のみcoder.opaque
を指定してcast
を使用します。coder.opaque
によって宣言された変数を MATLAB の型にキャストするために、B = cast(A,type)
構文を使用できます。次に例を示します。x = coder.opaque('size_t','0'); x1 = cast(x, 'int32');
B = cast(A,'like',p)
構文を使うこともできます。次に例を示します。x = coder.opaque('size_t','0'); x1 = cast(x, 'like', int32(0));
coder.opaque
によって宣言された変数の型に MATLAB 変数をキャストするには、B = cast(A,'like',p)
構文を使用しなければなりません。次に例を示します。x = int32(12); x1 = coder.opaque('size_t', '0'); x2 = cast(x, 'like', x1));
以下について、正しいデータ型を生成するには
coder.opaque
を指定してcast
を使用します。coder.ceval
を使用して呼び出す C/C++ 関数への入力。coder.ceval
を使用して呼び出す C/C++ 関数からの出力に割り当てられる変数。
このキャストを行わなくても、コード生成中にコンパイラの警告が表示されることがあります。
拡張機能
バージョン履歴
R2011a で導入