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
声明的另一个变量对y
赋值,或基于使用coder.opaque
声明的变量进行赋值。变量必须具有相同的类型。您可以将
y
与使用coder.opaque
声明的另一个变量进行比较,或与基于使用coder.opaque
声明的变量赋值进行比较。变量必须具有相同的类型。
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
声明的变量进行类型转换。请仅针对数值类型将cast
与coder.opaque
结合使用。要将
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));
要将 MATLAB 变量转换为
coder.opaque
声明的变量的类型,您必须使用B = cast(A,'like',p)
语法。例如:x = int32(12); x1 = coder.opaque('size_t', '0'); x2 = cast(x, 'like', x1));
将
cast
与coder.opaque
结合使用来为以下项生成正确的数据类型:使用
coder.ceval
调用的 C/C++ 函数的输入。您对使用
coder.ceval
调用的 C/C++ 函数的输出赋予的变量。
如果没有这种类型转换,在代码生成过程中可能出现编译器警告。
扩展功能
版本历史记录
在 R2011a 中推出