DRS文件Polyspace未知结构的指针

9的观点(30天)

答案(2)

编辑:<一个class="author_inline analyticsMlcProfileModal" data-locale-id="en" href="//www.tianjin-qmedu.com/matlabcentral/profile/authors/4325735">Anirban 2022年12月13日
如果您的代码编译,Polyspace应该结构定义。我想知道你有编译错误。总之,DRS格式使它看起来像你使用DRS的文本文件。使用DRS是弃用的文本文件。相反,您可以使用XML格式。Polyspace的XML格式可以很容易地生成用户界面(有一个额外的好处,如果你的代码不能编译,XML生成步骤将会失败,你就会立刻知道问题)。看到 为Polyspace指定外部约束分析
这里是一个例子使用DRS XML约束结构体指针。假设你有这两个文件:
. c 文件:
#包括“file.h”
intfunc (struct myStruct * myStructPtr) {
返回myStructPtr - > b;
}
. h 文件命名 file.h (在相同的文件夹中 . c 文件或文件夹路径提供选择 -我 ):
结构体myStruct {
int一个;
intb;
};
来约束函数的参数 函数 ,您可以指定一个DRS XML如下。XML征收范围0 . .10在第二个字段指向结构的指针 myStructPtr
< ?xml version =“1.0”编码=“utf - 8”? >
<! EDRS 2.0版本- - >
<全球>
<文件名=“D: \ \ Polyspace \ \ R2023a \ \ \ \ DRS_struct_pointers \ \ file.c MATLAB答案”>
<函数name =“函数”行=“3”属性=“未使用”main_generator_called =“MAIN_GENERATOR”评论=”“>
<指针名字=“__arg1”行=“3”complete_type =“struct myStruct *”init_mode =“INIT”init_modes_allowed =“10”initialize_pointer =“不空”number_allocated =“1”init_pointed =“单身”评论=”“>
<结构线=“3”complete_type =“struct myStruct”评论=”“>
<标量的名字=“b”行=“3”base_type =“int32”complete_type =“int32”init_mode =“INIT”init_modes_allowed =“10”init_range =“10 0 . .”global_assert =“不支万博1manbetx持”assert_range =“不支万博1manbetx持”评论=”“/ >
< /结构>
< /指针>
<标量的名字=“回归”行=“3”base_type =“int32”complete_type =“int32”init_mode =“禁用”init_range =“禁用”global_assert =“不支万博1manbetx持”assert_range =“不支万博1manbetx持”评论=”“/ >
< /函数>
< /文件>
< /全球>
XML看起来吓人,但这一切需要Polyspace中指定的用户界面是这样的信息:
2的评论
Anirban
编辑:<一个class="author_inline analyticsMlcProfileModal" data-locale-id="en" href="//www.tianjin-qmedu.com/matlabcentral/profile/authors/4325735">Anirban 2022年12月16日
是的,你可以指定这个约束就像我显示的例子。
我试着用这个代码:
源文件:
#包括“myfile.h”
int函数()
{
如果(100 /测试){
}
返回测试;
}
头文件(myfile.h):
类型定义struct myStruct_tag
{
浮动;
}myStruct_type;
走读生myStruct_type *我;
#定义测试我的- >
这是约束(DRS)我Polyspace中指定的用户界面:
如果你运行代码验证,您将会看到一个绿色除零。除法运算的工具提示将向您展示,DRS是被应用。
注意:在生成Polyspace DRS的用户界面,确保 源代码语言 设置为C .如果语言是CPP或C-CPP结构被同一类别的c++类和指定DRS的能力变得相当有限。

登录置评。< /p>