跟踪生成的C / C ++代码以MATLAB源代码

跟踪所生成的C / C ++代码到原来的MATLAB®源代码,可以帮助你:

  • 了解生成的代码如何实现你的算法。

  • 评估生成的代码的质量。

您可以通过以下方法之一跟踪:

  • 配置MATLAB编码器™生成代码,其中包括MATLAB源代码为注释。在评论中,可追溯性标签后面紧跟的源代码的每一行。可追溯性标签提供了有关源代码的位置的详细信息。如果您有嵌入式编码®在代码生成报告,可追溯性标签链接到相应的MATLAB源代码。

  • 随着嵌入式编码,产生一个代码生成报告,其中包括互动可追溯性。在报告中的交互式跟踪帮助你可视化的MATLAB源代码和所生成的C / C ++代码之间的映射。看到交互跟踪MATLAB代码和生成的C / C ++代码之间(嵌入式编码)。

生成可追溯性标签

为了产生在生成的代码可追溯性标记,使得能够产生的MATLAB源代码为注释。

  • 在里面MATLAB编码器应用程序,设置MATLAB源代码作为注释

  • 在代码生成配置对象,设置MATLABSourceComments真正

可追溯性标签的格式

在生成的代码,追踪标签注释的MATLAB源代码之前,立即出现。标签的格式为:
<文件名>:<行号>

例如,该意见表明代码X = R * cos(THETA);出现在线路4在源文件中straightline.m

/ *'直线:4'X = R * cos(THETA);* /

在生成的代码注释的位置

包含源代码和追踪标签生成的注释出现在生成的代码如下。

直线源代码

在直线的源代码不如果对于要么开关报表,包含源代码的注释后面生成的代码实现的源代码语句。该评论认为之前生成的代码用户的意见后出现。

例如,在下面的代码,用户评论,/ *转换极性到笛卡尔* /后,出现包含的源代码的第一行所生成的注释之前,以其可追溯性标记一起
/ * '直线:4' ×= R * cos(THETA);* /

MATLAB代码

功能[X,Y] =直线(R,θ-)%#代码生成%转换极性到笛卡尔X = R * cos(THETA);Y = R * SIN(THETA);

评论C代码

空隙直线(双R,双THETA,双* X,双* Y){/ *转换极性到笛卡尔* / / * '直线:4' ×= R * cos(THETA);* / * X = R * cos(THETA);/ * '直线:5' Y = R * SIN(THETA);* / * Y = R * SIN(THETA);}

如果语句

对于注释如果声明立即之前实现该语句的代码。该评论认为之前生成的代码用户的意见后出现。对于这些评论ELSEIF其他子句中的代码实现的条款后立即出现,并在从句中的语句生成的代码之前。

MATLAB代码

功能Y = ifstmt(U,V)%#代码生成如果U> v Y = V + 10;ELSEIFü== v Y = U * 2;其他Y = N  -  10;结束

评论C代码

双ifstmt(双U,双V){双Y;/ * 'ifstmt:3' 如果u> V * /如果(U> V){/ * 'ifstmt:4' Y = V + 10;* / Y = V + 10.0;}否则如果(U == V){/ * 'ifstmt:5' ELSEIFü== V * / / * 'ifstmt:6' Y = U * 2;* / Y = U * 2.0;}否则{/ * 'ifstmt:7' 别的* / / * 'ifstmt:8' Y = V  -  10;* / Y = V  -  10.0;}返回是;}

对于声明

对于注释对于声明头后面紧跟生成的代码实现了头。该评论认为之前生成的代码用户的意见后出现。

MATLAB代码

功能Y = forstmt(u)的%#代码生成Y = 0;对于I = 1:U Y = Y + 1;结束

评论C代码

双forstmt(双U){双Y;INT I;/ * 'forstmt:3' Y = 0;* / Y = 0.0;/ * 'forstmt:4',对于i = 1:U * /对(I = 0;我<(int)的U;我++){/ * 'forstmt:5' Y = Y + 1;* / Y ++;}返回是;}

while语句

对于注释声明头后面紧跟生成的代码实现Statement头。该评论认为之前生成的代码用户的意见后出现。

MATLAB代码

功能Y = subfcn(Y)coder.inline('决不');ÿ<100 Y = Y + 1;结束

评论C代码

空隙subfcn(双* Y){/ * 'subfcn:2' coder.inline( '永不');* / / * 'subfcn:3' 而在Y <100 * /,而(* Y <100.0){/ * 'subfcn:4' Y = Y + 1;* /(* Y)++;}}

switch语句

对于注释开关声明头后面紧跟生成的代码实现Statement头。该评论认为之前生成的代码用户的意见后出现。对于这些评论案件除此以外条款生成的代码实现了条款后立即出现,并在从句中的语句生成的代码之前。

MATLAB代码

功能Y = switchstmt(u)的%#代码生成Y = 0;开关ü案件1和Y = Y + 1;案件3 Y = Y + 2;除此以外Y = Y  -  1;结束

评论C代码

双switchstmt(双U){双Y;/ * 'switchstmt:3' Y = 0;* / / * 'switchstmt:4' 切换U * /开关((int)的u)的情况下,{1:/ * 'switchstmt:5' 盒1 * / / * 'switchstmt:6' Y = Y + 1;* / Y = 1.0;打破;情况3:/ * 'switchstmt:7' 壳体3 * / / * 'switchstmt:8' Y = Y + 2;* / Y = 2.0;打破;默认值:/ * 'switchstmt:9' 否则* / / * 'switchstmt:10' Y = Y  -  1;* / Y = -1.0; break; } return y; }

可追溯性标签限制

  • 你不能在MATLAB源代码作为征求意见:

    • MathWorks公司®工具箱功能

    • P码

  • 的注释的外观或位置可以改变:

    • 即使实现代码被消除,例如,由于恒定的折叠,注释可以仍然出现在生成的代码。

    • 如果完整的功能或代码块被消除,注释可以从所生成的代码来消除。

    • 对于某些优化,这些评论可从所生成的代码进行分离。

    • 即使你不选择在生成的代码源代码注释,生成的代码包括法律要求从MATLAB源代码注释。

相关话题