coder.wref
显示数据只写以引用的方式传递
描述
coder.wref (
表明参数
)参数
是一个只写表达式或变量通过引用一个外部C / c++函数。使用coder.wref
只有在一个coder.ceval
调用。这个函数允许代码生成器生成的代码优化作业之前被忽略参数
MATLAB中®代码,因为外部函数假设不读取数据。写的所有元素参数
在你的外部代码完全初始化内存。
请注意
C / c++函数必须完全初始化内存引用coder.wref (arg)
。初始化内存的值分配给每一个元素参数
在C / c++代码。如果生成的代码试图读取未初始化的内存,它可能导致未定义的运行时行为。
另请参阅coder.ref
和coder.rref
。
coder.wref (
表明参数
,gpu)参数
是一个GPU的论点。这个选项需要一个有效的GPU编码器™许可证。如果coder.ceval
所谓的CUDA®GPU__device__
函数,代码生成器忽略了“图形”
规范。
例子
通过引用传递数组只写
假设您有一个C函数init_array
。
空白init_array(双*数组,int元素个数){(int i = 0;我<元素个数;我+ +){array[我]= 42;}}
C函数定义了输入变量数组
作为双指针。
调用C函数init_array
初始化所有的元素y
42:
…Y = 0 (10);coder.ceval (“init_array”coder.wref (Y), int32(元素个数(Y)));…
作为一个只写的引用传递多个参数
…U = 0 (10);V = 0 (10);coder.ceval (“my_fcn”coder.wref (U)、int32(元素个数(U), coder.wref (V), int32(元素个数(V)));…
通过类财产作为一个只写的参考
…x = myClass;x。支持= 1;coder.ceval (“foo”coder.wref (x.prop));…
通过结构作为一个只写的参考
表明C头文件中定义的结构类型,使用coder.cstructname
。
假设您的C函数init_struct
。这个函数写入输入参数但是不读。
# include“MyStruct。h”空白init_struct (struct MyStruct * my_struct) {my_struct f1 - > = 1;my_struct - > f2 = 2;}
C头文件,MyStruct.h
,定义一个结构类型命名MyStruct
:
的ifndef MYSTRUCT # define MYSTRUCT typedef struct MYSTRUCT{双f1;双f2;}MyStruct;空白init_struct (struct MyStruct * my_struct);# endif
在你的MATLAB函数,通过结构作为一个只写的参考init_struct
。使用coder.cstructname
表明结构类型年代
有名字MyStruct
这是C头文件中定义的MyStruct.h
。
函数y = foo% # codegeny = 0;coder.updateBuildInfo (“addSourceFiles”,“init_struct.c”);s =结构(“f1”,1“f2”2);coder.cstructname(年代,“MyStruct”,“外来的”,“HeaderFile”,“MyStruct.h”);coder.ceval (“init_struct”coder.wref (s));
生成独立的库代码,请输入:
codegen配置:自由喷火报告
通过结构字段作为一个只写的参考
…s =结构(“s1 '结构(“一个”[0,1]));coder.ceval (“foo”coder.wref (s.s1.a));…
你也可以通过结构的一个元素的数组:
…c = repmat(结构体(“u”魔法(2)1 10);b = repmat(结构体(“c”c) 3、6);一个=结构(“b”,b);coder.ceval (“foo”coder.wref (a.b (3, 4) . c (2) .u));…
输入参数
限制
你不能通过引用传递这些数据类型:
类或系统对象
单元阵列或索引单元阵列
如果一个属性的get方法,一组方法,或验证器,或者是一个系统对象属性与某些属性,那么你不能通过财产通过引用一个外部函数。看到按引用传递一些属性的不支持金宝app。
提示
如果
参数
是一个数组,然后呢coder.wref (arg)
提供了数组的第一个元素的地址。的coder.wref (arg)
功能不包含数组的大小的信息。如果C函数必须知道的元素数量的数据,通过这些信息作为一个单独的参数。例如:coder.ceval (“myFun”coder.wref (arg)、int32(元素个数(arg));
当你通过结构通过引用一个外部C / c++函数,使用
coder.cstructname
提供一个C结构类型的名称是一个C头文件中定义。在MATLAB中,
coder.wref
会导致错误。用参数表示MATLAB代码,以便它可以运行在MATLAB和生成的代码,使用coder.target
。您可以使用
coder.opaque
声明变量传递给和从外部C / c++函数。
扩展功能
版本历史
介绍了R2011a