结构体和数组中常量的代码生成
在以下情况下,代码生成器不能识别常量结构体字段或数组元素:
在以下代码中,代码生成器将结构体字段 s.a
和 s.b
识别为常量。
function y = mystruct()
s.a = 3;
s.b = 5;
y = zeros(s.a,s.b);
如果在控制构造中对任一结构体字段赋值,则代码生成器不会识别常量字段。此限制也适用于包含常量元素的数组。以如下代码为例:
function y = mystruct(x) s.a = 3; if x > 1 s.b = 4; else s.b = 5; end y = zeros(s.a,s.b);
代码生成器不会将 s.a
和 s.b
识别为常量。如果启用可变大小,则 y
被视为可变大小数组。如果禁用可变大小,则代码生成器将报告错误。
在以下代码中,代码生成器将 a(1)
识别为常量。
function y = myarray()
a = zeros(1,3);
a(1) = 20;
y = coder.const(a(1));
在以下代码中,由于 a(1)
是使用非标量索引赋值的,因此代码生成器不会将 a(1)
识别为常量。
function y = myarray()
a = zeros(1,3);
a(1:2) = 20;
y = coder.const(a(1));
对于既包含常量字段又包含非常量字段的输出结构体,代码生成器不会识别常量字段。此限制也适用于同时包含常量和非常量元素的数组。以如下代码为例:
function y = mystruct_out(x) s = create_structure(x); y = coder.const(s.a); function s = create_structure(x) s.a = 10; s.b = x;
由于 create_structure
返回的结构体 s
包含一个常量字段和一个非常量字段,因此代码生成器不将 s.a
识别为常量。coder.const
调用失败,因为 s.a
不是常量。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)