主要内容

使用的非共享变量

在单个任务中使用的全局变量

描述

使用的非共享全局变量具有以下属性:

  • 该变量仅用于单个任务中。

  • Polyspace® 检测到针对该变量的至少一项读取或写入操作。

在不打算用于多任务的代码中,所有全局变量都是非共享的。

在您的验证结果中,这些变量在结果列表变量访问窗格中被着色为黑色

示例

全部展开

int var1;
int var2;
int var3;
int var4;

int input(void);

void main() {
    int loc_var = input(), flag=0;

    var1 = loc_var;
    if(0) {
        var3 = loc_var;
    }
    if(flag!=0) {
        var4 =loc_var;
    }


}

如果您验证 C 工程中的以上代码,则软件会将 var2var3var4 列为非共享未使用变量,并将 var1 列为非共享已使用变量。

var3var4 用在不可达代码中,因此被标记为未使用。

注意

在 C++ 工程中,软件不会列出未使用的变量 var2

unsigned int var_1;
unsigned int var_2;
volatile int randomVal;

void task1(void) {
    while(randomVal)
    	operation(1);
}

void task2(void) {
    while(randomVal)
	    operation(2);
}

void operation(int i) {
    if(i==1) {
        var_1++;
    }
    else    {
        var_2++;
    }
}

int main(void) {
    return 0;
}

在此示例中,即使您为任务 (-entry-points) 选项指定 task1task2,软件也会将 var_1var_2 确定为非共享变量。

虽然 task1task2 都调用 operation 函数,但由于 operation 中的 if 语句,task1 只能对 var_1 执行操作,而 task2 只能对 var_2 执行操作。

检查信息

语言:C | C++