为代码生成定义标量结构
限制在定义标量结构的任务
当你定义一个标量结构通过将一个变量分配给一个先前存在的结构,不需要定义变量赋值之前。然而,如果你已经定义变量,它必须具有相同的类,大小和复杂性结构你分配给它。在接下来的例子中,p
被定义为一个结构相同的属性为预定义的结构年代
:
…S =结构(' a ', 0, ' b ', 1, ' c ', 2);p = S;…
添加字段一致的顺序在每个控制流路径
当您创建一个结构,您必须添加字段在每个控制流路径相同的顺序。例如,下面的代码生成一个编译错误,因为它添加了字段的结构x
在每个不同的顺序如果
声明条款:
函数y = fcn (u) % # codegen如果u > 0 x。= 10;x.b= 20; else x.b = 30; % Generates an error (on variable x) x.a = 40; end y = x.a + x.b;
在这个例子中,赋值x.a
之前x.b
在第一个如果
声明条款,但作业出现在相反的顺序其他的
条款。这是修正后的代码:
函数y = fcn (u) % # codegen如果u > 0 x。= 10;x.b= 20; else x.a = 40; x.b = 30; end y = x.a + x.b;
第一次使用后限制添加新字段
你不能添加字段结构对结构在您执行以下操作:
阅读的结构
索引结构数组
传递函数结构
例如,考虑这样的代码:
…x。c= 10; % Defines structure and creates field c y = x; % Reads from structure x.d = 20; % Generates an error ...
在这个例子中,尝试添加一个新的字段d
阅读后结构x
生成一个错误。
这一限制跨层次结构。例如,您无法添加字段结构后操作的字段或嵌套结构,在这个例子中:
函数y = fcn (u) % # codegen x。c = 10;y = x.c;x。d= 20; % Generates an error
在这个例子中,尝试添加一个新的字段d
结构x
阅读后结构的磁场c
生成一个错误。