メインコンテンツ

使用される非共有変数

シングル タスクに使用されるグローバル変数

説明

非共有で使用済みのグローバル変数には、次のプロパティがあります。

  • 変数はシングル タスクでのみ使用される。

  • Polyspace® は変数に対して少なくとも 1 つの読み取りまたは書き込み操作を検出する。

マルチタスクを対象としていないコードでは、すべてのグローバル変数は非共有です。

検証結果では、これらの変数は [結果のリスト] および [変数アクセス] ペインにおいてブラックで色付けされています。

すべて展開する

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 プロジェクトで検証する場合、var2var3 および 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;
}

この例では、オプション [タスク] (-entry-points)task1 および task2 が指定されている場合でも、var_1 および var_2 は非共有と判定されます。

task1task2 のいずれも (operation にある if ステートメントにより) 関数 operation を呼び出しますが、task1var_1 のみで、また task2var_2 のみで操作を実行できます。

チェック情報

言語: C | C++