codegen: Problems using a structure as an input parmeter
10 次查看(过去 30 天)
显示 更早的评论
I am developing a codegen project with multiple functions. One function BAR1 returns a structure of type FOO. Another function BAR2 accepts a structure of type FOO. However, the code generator creates two structures, indentical except they have different structure names. The code, as generated, produces a syntax error in my app:
FOO_TYPE foo;
double c;
foo = bar1();
c = bar2(foo);
error C2664: 'bar2' : cannot convert parameter 1 from 'FOO_TYPE' to 'const struct_T'
How can I make bar2() accept a struct of type 'FOO_TYPE' instead of internally generated type 'struct_T'?
A workaround is to use:
c = bar2(*(struct_T*)&foo);
but this is not robust if the structure name is redefined by codegen.
Thanks, AJ
Here is the Matlab code. In the codegen project, for bar2, I specified the input type "by example" using "FOO_TYPE". ====================
function foo = bar1
%bar1 - Code generator test case - Structure as an output
%#codegen
foo = FOO_TYPE;
foo.a = 1.0;
foo.b = 2.0;
====================
function c = bar2(foo)
%bar2 - Code generator test case - Structure as an input
%#codegen
c = double(0);
c = sqrt(foo.a^2 + foo.b^2);
====================
function s = FOO_TYPE
%FOO_TYPE - Defines a structure
%#codegen
s = struct(...
'a', double(0), ...
'b', double(0));
coder.cstructname(s, 'FOO_TYPE');
0 个评论
采纳的回答
Fred Smith
2012-2-16
Hi AJ,
Have you looked at coder.cstructname? That command can be used to specify the C name to use for a structure type.
-Fred
0 个评论
更多回答(1 个)
Fred Smith
2012-2-3
Have you tried compiling both of these files with a single call to the codegen command? You can pass multiple entry points, and MATLAB Coder should ensure that the types are resolved correctly.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Generating Code 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!