如何给数据范围函数参数的指针

8视图(30天)
在运行代码验证我了很多橙色警告和试图减少他们通过给数据范围
函数的输入参数。但我无法输入指针变量的范围。(有一些结构指针
传递给我们的函数)。
有没有办法给指针变量数据范围?
例如下面的代码片段如何给数据范围- > x, y - >和z - >
类型定义不稳定的结构
{
uint32_t x;
uint32_t y;
uint32_t z;
}GTM_XYZ_Pram_T;
无效DD_GTM_XYZ_Init (GTM_XYZ_Pram_T * a、b uint32_t uint32_t c, uint32_t d)
{
}

接受的答案

Anirban
Anirban 2021年5月6日
我认为你在取消引用一个橙色预警 x - > , - > y ,等等。可能是一个橙色的警告 非法取消引用指针 警告称,美国可能是NULL。
您可以指定一个约束的指针 一个 不是零(还有其他约束)。看到更多的细节 外部约束Polyspace分析 。没有这个约束在c++中因为一个基类指针可以指向派生类型和管理约束指针是很困难的。有可能是你的 源代码语言 设置为C-CPP,你跑到c++限制。如果您使用的是C-only项目,你可以设置语言c .然后在约束规范接口,您应该能够限制指针。
4评论
Anirban
Anirban 2021年5月7日
为了完整性,我也想回答你的问题约束结构通过一个指针字段。虽然你不能限制它直接通过约束规范向导,您可以施加约束如下。
让我们说你想限制的值 x - > , - > y a - z > (注意,我删除 挥发性 从你的例子,否则约束规范不会应用,明白了 对Volatile变量的假设 ):
类型定义结构体
{
uint32_t x;
uint32_t y;
uint32_t z;
}GTM_XYZ_Pram_T;
空白DD_GTM_XYZ_Init (GTM_XYZ_Pram_T *, uint32_t b, uint32_t c, uint32_t d)
{
}
您可以编写一个函数 data_constraints 限制这些参数,然后将约束参数传递到你真正的功能。是这样的:
空白data_constraints (GTM_XYZ_Pram_T *, uint32_t b, uint32_t c, uint32_t d) {
断言(x - > > = 0 & & - > x < = 255);
断言(y - > > = 0 & & y - > < = 255);
断言(a - z > > = 0 & & z - > < = 255);
DD_GTM_XYZ_Init (a, b, c, d);
}
你可以提供包含函数的文件 data_constraints Polyspace分析。如果你联系技术支持,他们可以帮助你与指定数据约束。万博1manbetx

登录置评。

更多的答案(0)