codegen: Problems using a structure as an input parmeter
18 views (last 30 days)
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 = 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.
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
foo = FOO_TYPE;
foo.a = 1.0;
foo.b = 2.0;
function c = bar2(foo)
%bar2 - Code generator test case - Structure as an input
c = double(0);
c = sqrt(foo.a^2 + foo.b^2);
function s = FOO_TYPE
%FOO_TYPE - Defines a structure
s = struct(...
'a', double(0), ...
Fred Smith on 3 Feb 2012
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.