exponenta event banner

Используемая переменная, не являющаяся общей

Глобальные переменные, используемые в одной задаче

Описание

Неразделяемая используемая глобальная переменная имеет следующие свойства:

  • Переменная используется только в одной задаче.

  • Polyspace ® обнаруживает по крайней мере одну операцию чтения или записи для переменной.

В коде, не предназначенном для многозадачности, все глобальные переменные не являются общими.

В результатах проверки эти переменные окрашиваются в черный цвет на панелях Список результатов (Results List) и Доступ к переменным (Variable Access).

Примеры

развернуть все

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 программа выводит список var2, var3 и var4 в качестве неиспользуемых переменных, не являющихся общими, и var1 в качестве общей используемой переменной.

var3 и var4 используются в недостижимом коде и поэтому помечены как неиспользуемые.

Примечание

В проекте 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;
}

В этом примере даже при указании task1 и task2 для опции Tasks (-entry-points), программное обеспечение определяет, что var_1 и var_2 не являются общими.

Несмотря на то, что оба task1 и task2 вызвать функцию operation, из-за if оператор в operation, task1 может работать только на var_1 и task2 только на var_2.

Проверить информацию

Язык: C | C++