coder.ref
通过引用指示要传递的数据
描述
coder.ref (
表明参数
)参数
是要通过引用传递给外部C/ c++函数的表达式或变量。使用coder.ref
在一个coder.ceval
只有打电话。C/ c++函数可以对引用传递的变量进行读写操作。使用一个单独的coder.ref
通过对函数的引用来构造传递的每个参数。
另请参阅coder.rref
而且coder.wref
.
coder.ref (
表明参数
, gpu)参数
是一个GPU参数。此选项需要有效的GPU Coder™许可证。如果coder.ceval
所谓的CUDA®GPU__device__
函数时,代码生成器忽略“图形”
规范。
例子
通过引用传递标量变量
考虑C函数addone
返回输入的值加1:
Double addone(Double *p){返回*p + 1;}
C函数定义输入变量p
作为指向双精度值的指针。
通过引用传递输入addone
:
...y = 0;u = 42;y = coder.ceval (“addone”, coder.ref (u));...
通过引用传递多个参数
...u = 1;v = 2;y = coder.ceval (“my_fcn”coder.ref (u), coder.ref (v));...
通过引用传递类属性
...x = myClass;x.prop = 1;coder.ceval (“foo”coder.ref (x.prop));...
通过引用传递一个结构
要指示结构类型是在C头文件中定义的,请使用coder.cstructname
.
假设你有一个C函数incr_struct
.这个函数对输入参数进行读写操作。
#include "MyStruct.h" void incr_struct(struct MyStruct *my_struct) {my_struct->f1 = my_struct->f1 + 1;My_struct ->f2 = My_struct ->f2 + 1;}
C头文件,MyStruct.h
,定义名为MyStruct
:
#定义MYSTRUCT类型定义MYSTRUCT MYSTRUCT {double f1;双f2;} MyStruct;void incr_struct(结构MyStruct *my_struct);# endif
MATLAB中®函数,通过引用传递结构incr_struct
.的结构类型年代
有名字MyStruct
在C头文件中定义MyStruct.h
,使用coder.cstructname
.
函数y = foo% # codegeny = 0;coder.updateBuildInfo (“addSourceFiles”,“incr_struct.c”);s =结构(“f1”, 1“f2”2);coder.cstructname(年代,“MyStruct”,“外来的”,“HeaderFile”,“MyStruct.h”);coder.ceval (“incr_struct”coder.ref (s));
要生成独立库代码,输入:
codegen配置:自由喷火报告
通过引用传递结构字段
...s =结构(“s1 '结构(“一个”[0, 1]));coder.ceval (“foo”coder.ref (s.s1.a));...
你也可以传递一个结构数组的元素:
...c = repmat(结构体(“u”魔法(2)1 10);b = repmat(结构体(“c”c) 3、6);一个=结构(“b”, b);coder.ceval (“foo”coder.ref (a.b (3, 4) . c (2) .u));...
输入参数
限制
不能通过引用传递这些数据类型:
类或系统对象
单元格数组或索引到单元格数组
如果属性具有get方法、set方法或验证器,或者是具有某些属性的System对象属性,则不能通过引用将该属性传递给外部函数。看到某些属性不支持传递引用.
提示
如果
参数
是数组吗coder.ref (arg)
提供数组的第一个元素的地址。的coder.ref (arg)
函数不包含关于数组大小的信息。如果C函数必须知道数据的元素数量,则将该信息作为单独的参数传递。例如:coder.ceval (“myFun”coder.ref (arg)、int32(元素个数(arg));
当通过引用外部C/ c++函数传递结构时,使用
coder.cstructname
提供在C头文件中定义的C结构类型的名称。在MATLAB中,
coder.ref
导致错误。要参数化您的MATLAB代码,以便它可以在MATLAB和生成的代码中运行,请使用coder.target
.您可以使用
coder.opaque
来声明传递给或来自外部C/ c++函数的变量。
扩展功能
版本历史
介绍了R2011a