codegen: Problems using a structure as an input parmeter
8 次查看(过去 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.
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!