C文件未提供覆盖,错误的expr节点类型

问题描述 投票:1回答:1

我正在使用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函数进行分析。我也在这里问,因为也许是...

c code-coverage simulink instrumentation s-function
1个回答
0
投票

似乎您的代码由于问题而无法运行。首先尝试像这样声明my_var

© www.soinside.com 2019 - 2024. All rights reserved.