我正在使用MATLAB中的legacy_code工具生成一些S函数,然后希望simulink coverage工具箱对S函数进行分析。
我也在这里询问,因为这可能是C问题,与MATLAB不相关。
当使用legacy_code工具生成S函数时,我将标记设置为true以使用coverage工具箱。
def.Options.supportCoverage = true;
但是在编译时出现以下错误,我在Windows中使用了用于MATLAB的MinGW 64位编译器。
“ lib_control.c”,第254行:错误:expr节点类型错误(b:\ matlab \ polyspace \ src \ shared \ cxx_front_end_kernel \ edg \ src \ cp_gen_be.c,第14084行)警告:由于先前的错误,文件“ lib_control.c”未检测到覆盖率在codeinstrum.internal.LCInstrumenter / instrumentAllFiles中在codeinstrum.internal.SFcn仪器/仪器中在slcovmexImpl中在slcovmex中(第48行)在legacycode.LCT /编译在legacycode.LCT.legacyCodeImpl中在legacy_code中(第101行)在generate_sfun(第70行)中>
在C代码中,我具有以下类型的功能:
void controller( int n_var, double my_input, double my_output ) { double my_var[n_var]; for ( int i=0; i<n_var; i++ ) { my_output = my_input + my_var[i]; } }
编译器在抱怨这一行:
double my_var[n_var];
我是否需要做一些声明这样的变量,以便可以将它们包括在覆盖率分析中?
是MATLAB的错误,还是文件检测的C错误?
如果我在没有coverage标志的情况下进行编译,就不会有问题,并且生成的S函数不会发出警告。
我正在使用MATLAB中的legacy_code工具生成一些S函数,然后希望simulink coverage工具箱对S函数进行分析。我也在这里问,因为也许是...
似乎您的代码由于问题而无法运行。首先尝试像这样声明my_var